Уязвимости в фреймворках ИИ-агентов затронули 7 000 серверов
Источник: VentureBeat · Louis Columbus

Ваш ИИ-агент сделал ровно то, для чего создавался. Инфраструктура под ним просто предоставила злоумышленнику доступ к командной строке на сервере, где хранятся ваш ключ OpenAI, учетные данные базы данных и токены CRM.
Это не гипотетический сценарий. За несколько месяцев три наиболее широко используемых фреймворка ИИ-агентов превратили известные, заурядные уязвимости в пути для атак. Check Point Research объединила внедрение SQL-кода (SQL injection) в чекпоинтере SQLite для LangGraph с полноценным удаленным выполнением кода (RCE). Компаниям Tenable и VulnCheck удалось отследить обход пути (path traversal) в эндпоинте загрузки файлов Langflow до активного RCE «в дикой природе». Cyera задокументировала уязвимость обхода пути в загрузщике промптов LangChain-core, которая считывает ваши секреты с диска. Два пути к командной строке, один — к вашим ключам. Это та же самая уязвимость, проявляющаяся в трех разных фреймворках.
Эти фреймворки стали частью рабочей инфраструктуры быстрее, чем кто-либо успел их защитить. Они хранят состояние агентов, принимают загружаемые файлы, загружают конфигурации промптов и хранят учетные данные от баз данных, CRM и внутренних API. Периферийные инструменты отслеживают трафик. Конечные инструменты следят за процессами. Ни то, ни другое не было рассчитано на то, чтобы рассматривать импортируемый фреймворк как границу, заслуживающую охраны. Именно в этой «слепой зоне» кроются все три цепочки атак, которые расширяются с каждой неделей по мере того, как эти фреймворки внедряются в производство.
Цепочка LangGraph: от SQL-инъекции до оболочки Python
Начнем с той уязвимости, которую большинство команд внедрили в продакшен в этом квартале. LangGraph предоставляет ИИ-агентам память с помощью чекпоинтеров — уровня персистентности, который хранит состояние выполнения. Количество его загрузок превысило 50 миллионов в месяц. Ярден Порат (Yarden Porat) из Check Point Research изучил этот уровень и обнаружил три уязвимости. Две из них объединяются в цепочку, ведущую к RCE.
CVE-2025-67644 (оценка CVSS 7.3) представляет собой SQL-инъекцию в чекпоинтере SQLite. Функция, которая создает предложение WHERE для поиска чекпоинтов, подставляет контролируемые пользователем ключи фильтрации прямо в запрос без параметризации и экранирования. Это затрагивает не всех, но там, где уязвимость проявляется, последствия серьезны. Инсталляция оказывается уязвимой, если она самостоятельно хостит LangGraph на чекпоинтере SQLite или Redis и позволяет недоверенному вводу поступать в get_state_history() или аналогичный эндпоинт истории. При соблюдении этих условий злоумышленник, управляющий фильтром, записывает поддельную строку прямо в таблицу чекпоинтов. Если запустить управляемую платформу LangSmith от LangChain на PostgreSQL, уязвимость исчезает.
Затем CVE-2026-28277 (CVSS 6.8) завершает дело. Декодер чекпоинтов msgpack в LangGraph воссоздает объекты Python из сохраненных данных, что позволяет ему импортировать модуль и вызывать поименованную функцию с аргументами, предоставленными злоумышленником. Этот шаг требует доступа на запись к хранилищу чекпоинтов; именно SQL-инъекция предоставляет его удаленно. LangGraph загружает сфальсифицированную строку как легитимный чекпоинт, декодер запускает указанную функцию (включая os.system), и код выполняется от имени сервера агента. Третья проблема, CVE-2026-27022 (CVSS 6.5), приводит к тому же результату через чекпоинт Redis.
Подтвержденных случаев эксплуатации «в дикой природе» пока не зафиксировано. Работающий концепт-эксплойт (PoC) находится в открытом доступе в отчете Check Point. Исправления заключаются в обновлении версий: langgraph-checkpoint-sqlite до 3.0.1, langgraph до 1.0.10 и langgraph-checkpoint-redis до 1.0.2.
Цепочка Langflow: один неаутентифицированный запрос до RCE
Langflow — это инструмент, который уже подвергается атакам. CVE-2026-5027 (CVSS 8.8) представляет собой обход пути в эндпоинте POST /api/v2/files, который берет имя файла прямо из данных формы и записывает его на диск без санитизации. Злоумышленник заполняет это имя файла последовательностями обхода каталога и размещает файл в любом месте, например, в задаче cron в /etc/cron.d/. Поскольку в конфигурации по умолчанию в Langflow включен автоматический вход (auto-login), уязвимому экземпляру вообще не требуются учетные данные. Один неаутентифицированный запрос достигает эндпоинта, и следующий запуск cron выдает командную строку.
Кейтлин Кондон (Caitlin Condon) из VulnCheck подтвердила эксплуатацию 9 июня: «Наши «канарейки» (Canaries) зафиксировали эксплуатацию CVE-2026-5027, в ходе которой обход пути успешно использовался для записи предположительно тестовых файлов на уязвимых системах». Компания Censys обнаружила в интернете около 7 000 уязвимых экземпляров, большинство из которых находятся в Северной Америке. Это уже третья уязвимость Langflow, привлекшая активные атаки в этом году, после CVE-2025-34291, которую взяла на вооружение спонсируемая иранским государством хакерская группа MuddyWater и которую CISA добавила в свой каталог известных эксплуатируемых уязвимостей в мае. Сама CVE-2026-5027 была исправлена в версии 1.9.0, выпущенной 15 апреля.
Временная шкала задает темп. Патч вышел 15 апреля. Атаки начались в июне, и VulnCheck добавила CVE-2026-5027 в свой список эксплуатируемых уязвимостей 8 июня, как только ее датчики зафиксировали первые случаи атак «в дикой природе». Каждый экземпляр, оставшийся без патча в промежутке между этими двумя датами, находился в открытом доступе почти два месяца. Урок для команд безопасности заключается в том, что отсчет времени до установки патча нужно начинать с момента раскрытия информации, а не с момента появления записи в федеральном каталоге.
Пробел в LangChain-core: произвольное чтение файлов через загрузчик промптов
В LangChain-core — фундаменте, лежащем в основе обоих решений — была раскрыта уязвимость CVE-2026-34070 (CVSS 7.5), представляющая собой обход пути в устаревшем API загрузки промптов. Функции load_prompt() считывают путь к файлу из словаря конфигурации без проверки на последовательности обхода каталогов или абсолютные пути, поэтому злоумышленник, влияющий на этот путь, может читать произвольные файлы, доступные процессу, включая файл .env, содержащий OPENAI_API_KEY и ANTHROPIC_API_KEY. Cyera объединила ее с CVE-2025-68664 (CVSS 9.3) — уязвимостью десериализации, которая раскрывает секреты окружения через специально сформированный объект. Версии исправлений различаются, что важно при установке патчей: CVE-2026-34070 устранена в langchain-core 1.2.22 и 0.3.86; CVE-2025-68664 — раньше, в 1.2.5 и 0.3.81. Исправьте обе уязвимости, иначе проблема с более высоким уровнем опасности останется актуальной за закрытой дверью исправленной ошибки.
Три фреймворка, три классические ошибки веб-безопасности (AppSec). Обход пути. SQL-инъекция. Небезопасная десериализация. Ничего экзотического, ничего специфичного для ИИ — просто старые уязвимости внутри новой инфраструктуры. Ни одна из них не является проблемой передовых моделей (frontier models). Это сантехника на стыке ИИ и корпоративных систем.
Почему сканер их не видит
Мерритт Бэр (Merritt Baer), директор по информационной безопасности (CSO) в Enkrypt AI и бывший заместитель директора по информационной безопасности в AWS, точно описала, почему этот тип сбоев трудно предвидеть. Он не позиционирует себя как проблема ИИ. «Директора по информационной безопасности (CISO) столкнутся с уязвимостью MCP не на абстрактном уровне, а когда сотрудник вставит конфиденциальные данные в инструмент или когда злоумышленник обнаружит неаутентифицированный сервер MCP в вашем облаке», — рассказала Бэр изданию VentureBeat. «Это не будет восприниматься как «риск ИИ». Это будет выглядеть как сбой вашей традиционной программы безопасности». Цепочки уязвимостей во фреймворках имеют ту же форму. Уязвимый экземпляр Langflow — это неаутентифицированный сервер в вашем облаке, и оповещение, если оно вообще сработает, выглядит как обычный инцидент.
Вот этот пробел в одном предложении. Эксплойт обитает во фреймворке, который импортирует ваш код. Межсетевой экран веб-приложений (WAF) никогда не видит декодер msgpack, работающий на три слоя ниже. Система обнаружения и реагирования на конечных точках (EDR) наблюдает, как сервер агента выполняет те же вызовы процессов, что и тысячу раз в день, и пропускает их. Оба инструмента делают свою работу. Никто не рассматривал сам фреймворк как нечто, способное обернуться против вас.
Первопричина старше самого ИИ, и Бэр дает ей имя. «MCP выпускается с той же ошибкой, которую мы видели при внедрении каждого крупного протокола: небезопасные настройки по умолчанию», — рассказала она VentureBeat. «Если мы не заложим аутентификацию и принцип наименьших привилегий с первого дня, мы будем разгребать последствия взломов еще следующее десятилетие». Функция автоматического входа в Langflow — это именно такая выпущенная на рынок ошибка. Незащищенный загрузчик промптов в LangChain-core — это тоже она. Удобные настройки по умолчанию равны уязвимости. И в тот момент, когда агент подключается к чему-либо, этот риск многократно возрастает. «Вы доверяете не только собственной безопасности, вы наследуете уровень гигиены каждого инструмента, каждой учетной записи, каждого разработчика в этой цепочке», — отметила Бэр. «Это риск цепочки поставок в реальном времени».
Поверх технического сбоя накладывается управленческий кризис, и это та же самая ошибка классификации, на которую указывал Ассаф Керен (Assaf Keren), директор по информационной безопасности в Qualtrics и бывший CISO в PayPal, говоря о смежных инструментах. «Большинство команд безопасности по-прежнему классифицируют платформы управления опытом как «инструменты для опросов», которые находятся в той же категории риска, что и приложение для управления проектами», — рассказал Керен VentureBeat. «Это колоссальная ошибка классификации». Замените их на фреймворки ИИ-агентов, и утверждение останется в силе. Команды относят LangGraph, Langflow и LangChain к категории удобств для разработчиков, а затем подключают их к базам данных, CRM и ключам провайдеров. «Безопасность должна быть помощником», — сказал Керен, — «иначе команды найдут способ обойти ее». Эти фреймворки и есть то самое «обходное решение».
Если проследить за финансовыми потоками, они указывают на тот же уровень. Во время отчета о доходах за первый квартал 2027 финансового года CrowdStrike сообщила, что ее линия обнаружения ИИ и реагирования на него выросла более чем на 250% по сравнению с предыдущим кварталом, а 17 июня компания расширила это покрытие времени выполнения на трафик агентов, LLM и MCP на AWS. Джордж Курц (George Kurtz), соучредитель и генеральный директор компании, прямо назвал причину: «Агенты работают на конечной точке. Они вызывают инструменты, обращаются к файлам, вызывают API и перемещают данные на уровне процессов». Это именно та «сантехника», которую эксплуатируют эти цепочки, и теперь реальные деньги перетекают на уровень, который пропускают ваши AppSec-сканеры.
Что донести до совета директоров
Совету директоров не нужны номера CVE. Ему нужны последствия, и Керен обозначает ту границу, которая волнует совет. Большинство команд нанесли на карту технический радиус поражения. «Но не бизнес-радиус», — сказал Керен VentureBeat. «Когда ИИ-модель запускает корректировку компенсации на основе скомпрометированных данных, ущерб — это не инцидент безопасности. Это неверное бизнес-решение, выполненное со скоростью машины».
Поэтому сформулируйте проблему так, как это принято в совете директоров: мы запускаем в продакшене фреймворки ИИ-агентов, которые могут быть превращены в удаленные командные строки через ошибки, для поиска которых наши сканеры не предназначены; все три уязвимости пропатчены, одна находится под активной атакой, и вот дата, к которой каждый экземпляр будет проверен и защищен. Ничто из этого не потребовало создания кастомного вредоносного ПО или атаки нулевого дня.
Контрольный список из шести вопросов
Шесть границ доверия, по одной на строку, каждая с вопросом, доказательством, командой, исправлением и формулировкой для совета директоров. Проверьте это сегодня вечером.
|
Вопрос о границе доверия |
Доказательство |
Что сломалось |
Проверьте перед установкой |
Исправление |
Язык для совета директоров |
|
1. Можно ли скомпрометировать хранилище состояния агента кодом? |
Цепочка LangGraph SQLi-to-RCE. CVE-2025-67644 (CVSS 7.3) объединяется с CVE-2026-28277 (CVSS 6.8). PoC публичен, эксплойтов «в дикой природе» пока нет. |
Ключи фильтрации интерполируются в SQL с помощью f-строки. Сфальсифицированная строка чекпоинта попадает в декодер msgpack, который импортирует и запускает вызываемый объект, названный злоумышленником. |
pip show langgraph-checkpoint-sqlite. Версия ниже 3.0.1 уязвима. Убедитесь, что get_state_history() не доступен для сетевого ввода. |
Обновите langgraph-checkpoint-sqlite до 3.0.1, langgraph до 1.0.10, langgraph-checkpoint-redis до 1.0.2. |
«Уровень памяти нашего агента может быть обманут и запущен код злоумышленника. Вендор выпустил патч. Мы обновляемся и проверяем, что эндпоинт не выставлен наружу». |
|
2. Может ли неаутентифицированный запрос записать файл на сервер нашего агента? |
Langflow CVE-2026-5027 (CVSS 8.8). В базе VulnCheck KEV (8 июня). Активная эксплуатация подтверждена 9 июня. ~7 000 уязвимых экземпляров (Censys). |
Обход пути в POST /api/v2/files. Имя файла без санитизации. Автоматический вход включен по умолчанию. Два HTTP-запроса создают задачу cron и дают командную строку. |
Запросите в Censys или Shodan ваши экземпляры Langflow, Flowise, n8n и Dify на периметре. Проверьте, включен ли автологин. |
Обновите Langflow до 1.9.0+. Отключите автологин. Уберите инструменты разработки ИИ за VPN или концепцию нулевого доверия (zero-trust). Изолируйте порт 7860. |
«Инструменты разработки ИИ доступны из интернета с отключенным входом. Эта конкретная уязвимость активно атакована прямо сейчас. Сегодня мы переводим их за средства контроля доступа». |
|
3. Может ли наш загрузчик промптов читать файлы, к которым у него не должно быть доступа? |
LangChain-core CVE-2026-34070 (CVSS 7.5), обход пути в API загрузки промптов. Объединено с уязвимостью десериализации CVE-2025-68664 (CVSS 9.3). |
load_prompt() считывает переданный в конфигурации путь без проверки на обход каталогов, возвращая файлы, такие как .env с OPENAI_API_KEY и ANTHROPIC_API_KEY. |
pip show langchain-core. Версии ниже 1.2.22 (1.x) или 0.3.86 (0.x) уязвимы. Проведите аудит кода, передающего пользовательские пути в load_prompt(). |
Обновите langchain-core выше обоих исправлений: 1.2.22 / 0.3.86 (CVE-2026-34070) и 1.2.5 / 0.3.81 (CVE-2025-68664). Замените load_prompt() на использование каталога из белого списка. Запускайте не от суперпользователя (non-root). |
«Наша система промптов могла быть перенаправлена на чтение наших ключей API с диска. Мы устанавливаем патчи и удаляем устаревший загрузчик». |
|
4. Передает ли скомпрометированный фреймворк все учетные данные сразу? |
Эти фреймворки часто развертываются с ключами провайдеров, учетными данными баз данных и токенами интеграции, доступными для окружения процесса. Cyera документирует путь эксфильтрации учетных данных. |
Один RCE на сервере агента раскрывает каждый секрет, который процесс может прочитать. Радиус поражения — весь набор учетных данных, а не одно приложение. |
Инвентаризуйте, к каким секретам имеет доступ каждый процесс фреймворка. Убедитесь, что ключи поступают из менеджера секретов, а не из статических файлов .env. |
Перенесите ключи провайдеров на этап эфемерной инъекции. Ротируйте любые ключи, которые мог прочитать уязвимый экземпляр. Ограничьте каждый ключ принципом наименьших привилегий. |
«Один сбой в одном фреймворке ИИ раскрывает ключи к каждой модели и хранилищу данных, к которым он прикасается. Сейчас мы проводим ротацию и ограничиваем права». |
|
5. Работают ли эти фреймворки вне контроля безопасности? |
Предыдущая уязвимость Langflow, CVE-2025-34291, была использована связанной с Ираном группировкой MuddyWater и добавлена в CISA KEV в мае. Теневой ИИ — это новый теневой IT. |
Команды развертывают фреймворки ради скорости, предоставляют им учетные данные и никогда не подвергают их проверке. Команда безопасности не может видеть то, о существовании чего не знает. |
Запустите сканирование для обнаружения ИИ-фреймворков вне процессов управления изменениями. Привяжите каждый к владельцу и записи об утверждении. |
Назначьте каждому фреймворку задокументированного владельца и место в процессе утверждения. Предложите санкционированную альтернативу, чтобы команды не обходили систему. |
«У нас в продакшене есть фреймворки ИИ, которые никто официально не утверждал. Мы берем их под контроль, а не запрещаем». |
|
6. Могут ли наши сканеры вообще заглянуть внутрь фреймворка во время работы? |
Вокруг этого уровня формируются средства обнаружения времени выполнения: CrowdStrike Falcon AIDR расширился на AWS 17 июня (Bedrock, Kiro, Strands); коалиция QuiltWorks теперь охватывает облачные рабочие нагрузки. |
WAF читает HTTP на периферии. EDR следит за конечной точкой. По умолчанию ни то, ни другое надежно не моделирует декодер msgpack или загрузчик промптов на три слоя ниже в импортированном фреймворке как отдельную границу доверия. |
Проверьте, охватывает ли ваше AppSec-сканирование внутренности сторонних фреймворков. Отслеживайте CVE по зависимостям, а не только по тому, что могут распарсить ваши периферийные инструменты. |
Добавьте зависимости фреймворков в управление уязвимостями. Рассматривайте вывод агента и сохраненное состояние как недоверенные. Патчьте по факту раскрытия, а не по внесению в каталог KEV. |
«Наши сканеры проверяют наш код, а не фреймворки, которые этот код импортирует. Мы закрываем эту слепую зону и ставим патчи при раскрытии информации, не дожидаясь федерального каталога». |
Как читать эту таблицу: каждая строка представляет собой одну границу доверия слева направо — от вопроса, который нужно задать, до фразы для доклада совету директоров.
Назовите совету директоров дедлайн, а не технологии
Исправления не требуют переархитектуры. Это обновления версий и изменения конфигурации, которые вы можете внедрить на этой неделе. Зона риска — это промежуток между днем выхода патча и днем, когда ваша команда выполнит проверки, и в настоящее время этот разрыв исчисляется месяцами. Фреймворки сделали ровно то, для чего они создавались.



