
CVE-2026-75130: сервер документации MCP Context7 оценён в 9,0 балла, а в записи не указана исправленная версия
- OrcaНОВИНКАOrcaCyber: MiniMax M3.1 Flash Abliterated2026-10-29orca/orcacyber-minimax-m3.1-flash
- OrcaНОВИНКАOrcaCyber: GLM 5.3 Flash Abliterated2026-10-2793 tok/s
- OrcaНОВИНКАOrcaCyber: Qwen3.8 Flash Next Abliterated2026-10-26$0.80 / $1.60 за 1 млн токенов · 260 tok/s
- OrcaНОВИНКАOrcaCyber: MiMo V2.6 Flash Abliterated2026-10-26$0.80 / $1.60 за 1 млн токенов · 92 tok/s
- MoonshotНОВИНКАMoonshotAI: Kimi K3.1 Pro2026-10-2446Интеллект
- OrcaНОВИНКАOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.80 / $1.60 за 1 млн токенов · 104 tok/s
- minimaxНОВИНКАMiniMax: M3.1 Flash2026-10-1929Интеллект
- OrcaНОВИНКАOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 за 1 млн токенов · 65 tok/s
- deepseekНОВИНКАDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Интеллект
- DeepSeekНОВИНКАDeepSeek: DeepSeek V4.1 Flash2026-10-1740Интеллект
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 за 1 млн токенов · 101 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Интеллект
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Интеллект
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 за 1 млн токенов · 180 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Интеллект
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Интеллект
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Интеллект
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127Интеллект
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130Интеллект
- xAIGrok 4.72026-09-2134Интеллект
18 августа 2026 года VulnCheck опубликовала CVE-2026-75130 в отношении Context7 — сервера документации библиотек, который Upstash запускает для Model Context Protocol и который агенты по программированию запрашивают для получения документации по конкретным версиям. Уязвимость находится в функции, которую Upstash называет Custom AI Instructions: владелец библиотеки прикрепляет указания к записи документации, Context7 передаёт эти указания в контекстное окно каждого агента, который обращается к библиотеке, и ничто на этом пути их не очищает. Noma Security, в которой Эли Айнхорн, старший исследователь уязвимостей ИИ, указан как обнаруживший уязвимость, продемонстрировала, что отравленная запись может заставить подключённого агента читать .env-файлы в корне проекта, отправлять их содержимое в GitHub-репозиторий, контролируемый злоумышленником, в виде issue, и удалять локальные папки под предлогом «очистки» — и всё это из обычного запроса документации. Пострадавших не зафиксировано. Остальные документированные инциденты с агентами, каждый со своим уровнем серьёзности, степенью уверенности и отметкой об оспаривании, находятся в архиве инцидентов ИИ, где можно прочитать соседние с этой записью записи рядом с ней.
Сервер Context7 невелик, и именно это стоит понять в первую очередь. В заметке Noma отмечается, что он предоставляет два инструмента, resolve-library-id и query-docs, и что он не может выполнять код, записывать файлы или самостоятельно обращаться к сети. Все описанные воздействия выполняет агент на другой стороне, у которого действительно есть доступ к файловой системе, оболочке и сети на машине разработчика. Реестр npm показывает, насколько велика база установок: @upstash/context7-mcp был скачан 4,064,176 раз за тридцать дней с 22 июля по 20 августа 2026 года — в период вокруг публикации.
Механизм: одна отравленная библиотека — каждый агент, который обращается к ней
Демонстрация Noma, описанная в её отчёте ContextCrush от 5 марта 2026 года, состояла из трёх шагов, которые выполняет агент, а не сервер. Она регистрировала библиотеку в реестре Context7 с прикреплёнными отравленными правилами. Инструкции в этих правилах предписывали агенту искать и читать каждый файл .env в корне проекта; дальнейшие инструкции предписывали ему опубликовать содержимое в виде issue в контролируемом злоумышленником репозитории GitHub; заключительный набор инструкций говорил ему удалить локальные папки и файлы для «очистки». Запрос, который втягивает всё это в контекст, — самый обычный: просьба к помощнику по программированию помочь с библиотекой.
То, что это проблема цепочки поставок, а не обычная инъекция промптов, объясняется тем, где находится полезная нагрузка. Атакующий никогда не добирается до машины жертвы и ему не нужно внедрять текст в документ, который открывает пользователь. Отравленные инструкции находятся в собственном реестре Context7, размещаются и обслуживаются собственной инфраструктурой Context7 и приходят по тому же доверенному каналу, что и легитимная документация, неотличимо от неё. Noma отмечает, что рейтинг доверия Context7, который оценивает библиотеки по истории GitHub за ними, не защищает от этого, потому что давно существующую учётную запись можно купить, захватить или создать. Собственное резюме компании о структурной сути звучит прямо: «Поверхность атаки — не то, что может делать сервер MCP. Она в том, что он может заставить делать ИИ-агента».
Два счёта за один баг
В уведомлении указаны CVSS 3.1 9.0 (критический) и CVSS 4.0 6.4 (средний). Оба вектора были предоставлены VulnCheck как CNA, присвоившим оценку, и NVD приводит оба без изменений, указывая источником VulnCheck для каждого. Расхождение не является ошибкой; это два фреймворка оценивают один и тот же ущерб применительно к разным машинам. CVSS 3.1 помечает Scope как Changed — инъекция переходит с сервера на машину разработчика и далее — и поэтому засчитывает полное высокое воздействие на конфиденциальность, целостность и доступность возможностей агента в полную силу. CVSS 4.0 заменяет Scope отдельными метриками для уязвимой системы и последующей системы: он фиксирует отсутствие воздействия на конфиденциальность, целостность или доступность для самого Context7 (VC:N/VI:N/VA:N) и высокое воздействие на нижестоящие системы (SC:H/SI:H/SA:H), которое его формула взвешивает менее сильно. Сервер — это курьер, а не жертва.
Расхождение распространяется на базы данных. Бюллетень GitHub, GHSA-97r6-3rgm-v39r, был опубликован в 18:32 UTC 18 августа, через полчаса после CVE, и его сводная оценка серьёзности указана как средняя, хотя вектор CVSS 3.1 в той же записи оценивается в 9.0. База данных уязвимостей ЕС ENISA дублирует запись как EUVD-2026-61099 и хранит базовую оценку 6.4 только по версии 4.0. Запись архива, на которую опирается эта статья, оценивает инцидент как высокий — что не совпадает ни с одной из двух опубликованных оценок — и это оценка архива, а не его собственное измерение.

CVE, опубликованный в августе, о раскрытии в марте
Идентификатор CVE был зарезервирован 17 августа 2026 года и опубликован 18 августа в 18:02 UTC — именно эта дата указана в записи. Контейнер CNA также содержит вторую дату, которая не отображается на страницах агрегатора: datePublic, 5 марта 2026 г. — за пять с половиной месяцев до появления идентификатора и в тот же день, когда Noma опубликовала ContextCrush. Единственная техническая ссылка в бюллетене — это та мартовская публикация, которую VulnCheck помечает и как техническое описание, и как эксплойт.
Хронология раскрытия Noma объясняет этот разрыв. В ней сообщается, что об уязвимости было заявлено в Upstash 18 февраля 2026 года вместе с полным отчётом и доказательством концепции; отмечается, что Upstash приняла выводы и начала устранение 19 февраля; говорится, что исправление было «развёрнуто в производственной среде с санитизацией правил и защитными механизмами» 23 февраля; а публичное раскрытие и окончательная проверка со стороны Noma датированы 5 марта. По версии Noma, февральская ошибка была устранена за несколько дней.
Даты в реестре npm соотносятся с этой хронологией так, что затронутый диапазон выглядит странно. @upstash/context7-mcp 2.1.2 был опубликован 23 февраля 2026 года в 10:06 UTC — в день, когда, по словам Noma, исправление вышло в продакшене; в его changelog указано: «Удалить ненужное предупреждение и обновить описания инструментов». 2.1.3 вышла 4 марта 2026 года — за день до публикации Noma — с примечаниями об отклонении GET-запросов на эндпоинтах MCP и добавлении поля source в результаты поиска. Ни в одном из примечаний к релизу не упоминаются санитизация, защитные механизмы или инъекция. Диапазон затронутых версий по CNA заканчивается на 2.1.2, поэтому 2.1.3 становится первой версией за его пределами.
Этим датам соответствуют три трактовки, и ни VulnCheck, ни Noma не указывают, какая из них верна. Первая, которую Digital Applied приводит в своей статье от 18 августа и которую повторил AI Security Wire 22 августа, состоит в том, что исправление регрессировало: сборка, в которой был февральский патч, попадает в затронутый диапазон августа. Вторая — что диапазон просто привязан к сборке, которую тестировал исследователь, а настоящая граница — это 2.1.3, выпущенная за день до раскрытия; такой вывод механически делают несколько агрегаторов, включая Feedly, который указывает «обновление до версии 2.1.3 или более поздней» в качестве меры защиты. Третья — что февральское исправление было применено там, где обслуживаются правила, а не в клиентском пакете, и в этом случае диапазон версий npm вообще не описывает исправление. Тихие исправления безопасности встречаются достаточно часто, так что отсутствие соответствующей записи в журнале изменений ничего не решает ни в ту, ни в другую сторону.

Что установлено, а что — нет
• Установлено по первичной записи.Идентификатор CVE, его публикация 18 августа, VulnCheck в роли CNA, классификация CWE-1427 для ненадлежащей нейтрализации входных данных, используемых для промптинга LLM, благодарность Eli Ainhorn из Noma Security и диапазон затронутых версий Context7 по 2.1.2 включительно.
• Установлено исследованием Noma. Путь внедрения через Custom AI Instructions, трёхэтапное доказательство концепции, наблюдение о том, что сервер предоставляет только resolve-library-id и query-docs, и утверждение о том, что для февральской ошибки не было замечено свидетельств эксплуатации в реальных условиях.
• Установлено реестром. Дата публикации версии 2.1.2 — 23 февраля 2026 г., дата публикации версии 2.1.3 — 4 марта 2026 г., а линейка пакетов с тех пор преодолела 4.0 и достигла 4.4.4 19 октября 2026 г.
• Не установлено: затронуты ли текущие сборки. Ни один источник не утверждает, что ветка 4.x уязвима, и ни один не утверждает, что она безопасна. Запись CVE, рекомендация VulnCheck и рекомендация GitHub не указывают исправленную версию, а список уязвимых диапазонов версий в рекомендации GitHub пуст.
• Не установлено: ни пострадавших, ни использования в реальных условиях. В архиве реальный ущерб отмечен как ложный. При обогащении записи CISA 19 августа метрики Exploitation, Automatable и Technical Impact получили значения «отсутствует», «нет» и «полное» соответственно; уязвимость отсутствует в каталоге KEV; зеркало ENISA фиксирует EPSS 0,49 процента. Исследование Noma — это демонстрация, а не отчёт об инциденте.
• Не установлено: сама трактовка как регрессии. Она опирается на совпадение дат между временной шкалой исправления и публикацией в npm, и ни один первоисточник не утверждает, что один и тот же путь кода отказал дважды.

Подтверждение: повторение и молчание там, где это важно
Документы, согласующиеся с записью, в основном производны от неё. Бюллетень VulnCheck повторяет текст CVE и добавляет классификацию слабости и указание на исследователя. Бюллетень GitHub представляет собой алиас той же заявки, опубликованный тем же вечером, без диапазонов версий и без независимой проверки. Запись ENISA — зеркало. Digital Applied, один из двух источников, на которые ссылается архив, опубликовал свой анализ 18 августа и обновил его 22 августа новыми выгрузками из реестра; AI Security Wire опубликовал второй материал 22 августа. Оба повторяют бюллетень и передают вывод о регрессии, и ни один не утверждает, что проверил его независимо.
Мы не нашли освещения CVE в новостных редакциях на 29 октября 2026 года — ни материала BleepingComputer, The Register или SecurityWeek — а результаты представляли собой страницы агрегаторов CVE, а не репортажи. Это отсутствие важно для того, как следует читать эту запись: архив оценивает её на A — она хорошо документирована первичными источниками, которые согласуются, и первичные источники действительно согласуются, но согласование здесь — между записью CNA и исследованием, на которое она ссылается, а не между двумя независимыми измерениями. Несколько страниц агрегаторов добавляют утверждения, которые их источники не поддерживают; запись Feedly, например, утверждает, что патч доступен, и называет 2.1.3, чего не делает ни один бюллетень, тогда как страница VulDB вернула проверку на бота вместо содержимого и вообще не могла быть прочитана.
Что изменилось, а что нет
Что касается февральской ошибки, Upstash отреагировала за считанные дни: по данным Noma, 19 февраля ошибка была принята, а 23 февраля — исправлена. Что касается августовской записи, единственное заявление поставщика, на которое ссылается CVE, — это публикация Upstash в LinkedIn, помеченная там как рекомендация производителя, содержание которой мы не смогли прочитать без входа в систему. Ни один рекомендательный документ по безопасности GitHub, относящийся к репозиторию, не содержит исправленной версии, а запись NVD имеет статус Deferred без конфигураций CPE и с датой последнего изменения 22 октября 2026 года, поэтому собственный анализ NVD в записи отсутствует.
Сам пакет продолжал выпускаться. В период с 20 апреля 2025 года по 23 октября 2026 года репозиторий upstash/context7 опубликовал 163 релиза, и ни в одних из их примечаний к релизам не упоминается эта CVE и не описывается очистка пользовательских инструкций, содержащих инъекцию. Это лишь запись того, что мейнтейнеры решили записать, а не доказательство того, что ничего не было исправлено.
Что запись оставляет оператору — это управление экспозицией, а не конвейер патчей. Рекомендации Noma сосредоточены на проверке интеграций MCP и инспектировании того, что передаётся между агентом и сервером во время выполнения; OpenCVE предлагает обновиться, отключить или ограничить функцию Custom AI Instructions и добавить проверку входных данных на сервере. Практическая реализация всего этого сводится к одним и тем же трём действиям: закрепить версию сервера MCP вместо использования плавающей latest, не хранить рабочие учётные данные в открытых текстовых файлах окружения, которые агент может прочитать, и рассматривать ответы инструментов как недоверенные входные данные, а не как документацию, которой агент может следовать.
Спустя десять недель после публикации публичная запись всё ещё заканчивается там же, где и 18 августа: идентификатор, две оценки, отличающиеся на две категории, диапазон затронутых версий, верхняя граница которого — сборка, выпущенная в феврале, и ни одного названного исправления. Тот, кто занимается триажем CVE-2026-75130, должен принимать решение, опираясь на то, к чему имеют доступ его агенты, потому что запись не сообщает, какую версию устанавливать.
