Твой ИИ-агент сделал ровно то, для чего его запрограммировали. А фреймворк под ним только что передал атакующему полный доступ к серверу, где лежат твой OpenAI-ключ, логины от базы данных и токены CRM.
Это не гипотетика. За несколько месяцев три самых популярных фреймворка для ИИ-агентов превратили обычный, известный баг в дыру насквозь. Check Point Research связала SQL-инъекцию в LangGraph с полным удаленным выполнением кода. Tenable и VulnCheck отследили path traversal в эндпоинте загрузки файлов Langflow — активная эксплуатация в дикой природе, RCE на выходе. Cyera задокументировала path traversal в загрузчике промптов LangChain-core — считывает твои секреты с диска. Два пути к шеллу, один — к ключам. Одна и та же уязвимость в трех разных обертках.
Эти фреймворки стали продакшен-инфраструктурой быстрее, чем кто-либо успел их обезопасить. Они хранят состояние агента, принимают загрузку файлов, подгружают конфиги промптов и держат учетки к базам, CRM и внутренним API. Инструменты периметра следят за трафиком. Средства защиты конечных точек — за процессами. Ни те, ни другие не проектировались так, чтобы считать импортированный фреймворк независимой границей, которую надо оборонять. И именно в этой слепой зоне живут все три цепочки, шириной с каждую неделю, пока фреймворки уходят в продакшен.
LangGraph: SQL-инъекция, ведущая к Python-шеллу
Начнем с того, который большинство команд затащили в прод в этом квартале. LangGraph дает ИИ-агентам память через чекпоинтеры — слой персистентности, хранящий состояние выполнения. У фреймворка — под 50 миллионов загрузок в месяц. Ярден Порат из 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 — path traversal в эндпоинте POST /api/v2/files. Фреймворк берет имя файла прямо из формы и пишет на диск без очистки. Атакующий набивает имя файла обходными последовательностями и кладет файл куда угодно — скажем, крон-джоб в /etc/cron.d/. Поскольку Langflow по умолчанию поставляется с включенным авто-логином, для раскрытого инстанса не нужны вообще никакие учетные данные. Один неаутентифицированный запрос долетает до эндпоинта, и следующий запуск крона отдает шелл.
Кейтлин Кондон из VulnCheck подтвердила эксплуатацию 9 июня: «Наши канарейки наблюдали эксплуатацию CVE-2026-5027 — атакующие успешно использовали path traversal для записи того, что выглядит как тестовые файлы, на системы жертв». Censys насчитал около 7000 раскрытых инстансов в интернете, большинство в Северной Америке. Это третий баг Langflow, который активно эксплуатируют в этом году, после CVE-2025-34291 — его вооружила иранская государственная группировка MuddyWater, и CISA добавила его в каталог известных эксплуатируемых уязвимостей в мае. CVE-2026-5027 был исправлен в версии 1.9.0, выпущенной 15 апреля.
Вот что задает тайминг: патч вышел 15 апреля. Атаки начались в июне. VulnCheck добавил CVE-2026-5027 в свой список эксплуатируемых 8 июня — как только сенсоры засекли первые попадания в дикой природе. Все инстансы, оставшиеся незалатанными между этими датами, просто торчали наружу почти два месяца. Урок для security-команд: запускайте счетчик патча с момента раскрытия уязвимости, а не с записи в федеральном каталоге.
Разрыв в LangChain-core: чтение произвольных файлов через загрузчик промптов
LangChain-core — фундамент обоих фреймворков — раскрыл CVE-2026-34070, CVSS 7.5 — path traversal в своем легаси-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-бага. Path traversal. SQL-инъекция. Небезопасная десериализация. Ничего экзотического, ничего ИИ-специфичного — просто старые уязвимости, поселившиеся в новой инфраструктуре. И это не проблема фронтальных моделей. Водопровод, лежащий на стыке ИИ и enterprise.
Почему сканер это не видит
Меррит Бэр, CSO в Enkrypt AI и бывший заместитель CISO в AWS, назвала то, что делает подобные сбои трудно прогнозируемыми. Они не объявляют себя ИИ-проблемой. «CISO столкнутся с небезопасностью MCP не в абстракции, а когда сотрудник вставит чувствительные данные в инструмент или когда атакующий найдет неаутентифицированный MCP-сервер в вашем облаке, — сказала Бэр VentureBeat. — Это не будет выглядеть как «ИИ-риск». Это будет выглядеть как провал вашей традиционной программы безопасности». Цепочки уязвимостей здесь той же формы. Раскрытый инстанс Langflow — это неаутентифицированный сервер в вашем облаке, и если сработает оповещение, оно прочитается как обычный инцидент.
Вот разрыв в одном предложении. Эксплойт живет во фреймворке, который импортирует ваш код. WAF никогда не видит msgpack-декодер, работающий на три уровня ниже. EDR смотрит, как сервер агента делает те же системные вызовы, что и тысячу раз в день, и пропускает его. Оба инструмента делают свою работу. Никто не рассматривал сам фреймворк как нечто, что может на вас обернуться. Коренная причина старше ИИ, и Бэр ее формулирует: «MCP поставляется с той же ошибкой, которую мы видели в каждом крупном протоколе: небезопасные настройки по умолчанию, — сказала она VentureBeat. — Если не встроить аутентификацию и минимальные привилегии с первого дня, следующие десять лет мы будем разгребать утечки». Авто-логин Langflow — это и есть та ошибка, поставленная в коробку. Незащищенный загрузчик промптов LangChain-core — это она же. Удобный дефолт — это уязвимость. А как только агент подключается к чему-либо, риск умножается. «Вы доверяете не только своей безопасности — вы наследуете гигиену каждого инструмента, каждой учетки, каждого разработчика в этой цепочке, — сказала Бэр. — Это риск цепочки поставок в реальном времени».
Поверх технического провала лежит управленческий — и это та же неверная классификация, которую Ассаф Керен, директор по безопасности Qualtrics и бывший CISO PayPal, отмечал в смежных инструментах. «Большинство security-команд до сих пор классифицируют платформы управления опытом как «инструменты для опросов», помещая их на тот же уровень риска, что и приложение для управления проектами, — рассказал Керен VentureBeat. — Это гигантская ошибка классификации». Подставьте ИИ-агентные фреймворки — и утверждение остается в силе. Команды записывают LangGraph, Langflow и LangChain в категорию «удобство для разработчика», а затем подключают их к базам, CRM и ключам провайдеров. «Безопасность должна быть помощником, — сказал Керен, — иначе команды просто обходят ее». Эти фреймворки — то, как выглядит обход.
Посмотрите на деньги — они указывают на тот же слой. На отчетном звонке за первый квартал фискального 2027 года CrowdStrike сообщила, что их ИИ-продукты обнаружения и реагирования выросли более чем на 250% последовательно, а 17 июня расширили покрытие времени выполнения на трафик агентов, LLM и MCP в AWS. Джордж Куртц, сооснователь и CEO компании, назвал причину прямо: «Агенты работают на конечных точках. Они совершают инструментальные вызовы, обращаются к файлам, вызывают API и перемещают данные на уровне процессов». Это и есть та самая сантехника, которую эксплуатируют описанные цепочки, и реальные деньги сейчас движутся в слой, который пропускает ваш AppSec-скан.
Что выносить перед советом директоров
Совету не нужны номера CVE. Ему нужны последствия — и Керен чертит линию, которая их волнует. Большинство команд уже нарисовали технический радиус поражения. «Но не бизнес-радиус, — сказал Керен VentureBeat. — Когда ИИ-движок запускает корректировку компенсации на основании отравленных данных, ущерб — не инцидент безопасности. Это неверное бизнес-решение, исполненное на машинной скорости». RCE во фреймворке — та же проблема на слой раньше. Агент не просто сливает учетку — он действует с ней в продукционных системах, и бизнес получает исход, который никто не может объяснить.
Формулируйте так, как формулирует совет: мы используем в продакшене ИИ-агентные фреймворки, которые могут быть превращены в удаленные шеллы через баги, которые наши сканеры не умеют находить; все три исправлены, один атакуют прямо сейчас; вот дата, когда каждый инстанс проверен и закрыт. Ни для одного из этих эксплойтов не понадобился кастомный малварь или zero-day.
Чеклист из шести вопросов
Шесть границ доверия — строка за строкой. В каждой — вопрос, доказательство, что сломалось, команда проверки, фикс и фраза для совета. Запустите сегодня вечером.
1. Можно ли отравить хранилище состояний агента кодом? Доказательство: цепочка LangGraph SQLi→RCE. CVE-2025-67644 (CVSS 7.3) сцепляется с CVE-2026-28277 (CVSS 6.8). PoC публичен, in-the-wild пока нет. Что сломалось: ключи фильтра интерполируются в 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 июня. ~7000 раскрытых инстансов (Censys). Что сломалось: path traversal в POST /api/v2/files. Имя файла не очищается. Авто-логин включен по умолчанию. Два HTTP-запроса — и крон-джоб на месте, шелл в кармане. Команда проверки: пробейте свои инстансы Langflow, Flowise, n8n и Dify через Censys или Shodan. Проверьте, включен ли авто-логин. Фикс: обновить Langflow до 1.9.0+. Отключить авто-логин. Убрать ИИ-инструменты за VPN или zero-trust. Изолировать порт 7860. Совету: «Наши ИИ-инструменты доступны из интернета без логина. Эта конкретная дыра атакуется прямо сейчас. Мы закрываем доступ сегодня».
3. Может ли загрузчик промптов читать файлы, к которым не должен прикасаться? Доказательство: LangChain-core CVE-2026-34070 (CVSS 7.5), path traversal в 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() на белый список директорий. Запускать не от root. Совету: «Наш загрузчик промптов можно заставить прочитать с диска ключи API. Мы ставим патч и убираем легаси-загрузчик».
4. Отдает ли скомпрометированный фреймворк сразу все учетки? Доказательство: эти фреймворки часто разворачиваются с ключами провайдеров, учетками к БД и токенами интеграций, доступными процессу. Cyera документирует путь кражи учетных данных. Что сломалось: один RCE на сервере агента — и все секреты, которые процесс может прочитать, утекают. Радиус поражения — полный набор учетных данных, а не одно приложение. Команда проверки: проинвентаризируйте, к каким секретам имеет доступ каждый фреймворк. Убедитесь, что ключи берутся из менеджера секретов, а не из статического .env. Фикс: перевести ключи провайдеров на эфемерную инъекцию. Откатить все ключи, которые мог прочитать уязвимый инстанс. Сузить права до минимума. Совету: «Один взлом одного ИИ-фреймворка раскроет ключи ко всем моделям и хранилищам, к которым он подключен. Мы ротируем и разграничиваем их сейчас».
5. Работают ли эти фреймворки вне зоны действия security-политик? Доказательство: предыдущий баг Langflow CVE-2025-34291 был вооружен иранской группировкой MuddyWater и добавлен в каталог CISA KEV в мае. Теневой ИИ — это новый теневой IT. Что сломалось: команды поднимают фреймворки для скорости, дают им учетки и никогда не вводят в процедуру согласования. Security не видит то, о чем не знает. Команда проверки: проведите sweep-поиск ИИ-фреймворков вне управления изменениями. Назначьте каждому владельца и запись о согласовании. Фикс: закрепить за каждым фреймворком документированного владельца и место в процедуре согласования. Предложить санкционированную альтернативу — чтобы команды не обходили вас. Совету: «У нас есть ИИ-фреймворки в проде, которые никто официально не одобрил. Мы вводим их в governance, а не запрещаем».
6. Могут ли наши сканеры вообще заглянуть внутрь фреймворка во время выполнения? Доказательство: детекция времени выполнения только формируется — CrowdStrike Falcon AIDR расширен на AWS 17 июня (Bedrock, Kiro, Strands); коалиция QuiltWorks теперь покрывает облачные нагрузки. Что сломалось: WAF читает HTTP на периметре. EDR следит за конечной точкой. По умолчанию ни тот, ни другой не моделируют msgpack-декодер или загрузчик промптов на три уровня в глубине импортированного фреймворка как отдельную границу. Команда проверки: проверьте, покрывает ли ваш AppSec-скан внутренности сторонних фреймворков. Отслеживайте CVE по зависимостям, а не только то, что парсят инструменты периметра. Фикс: добавить зависимости фреймворков в управление уязвимостями. Считать вывод агента и сохраненное состояние недоверенными. Патчить по раскрытию, а не по попаданию в KEV. Совету: «Наши сканеры проверяют наш код — но не код импортированных фреймворков. Мы закрываем эту слепую зону и патчим по раскрытию уязвимости, не дожидаясь федерального каталога».
Как читать эту таблицу: каждая строка — одна граница доверия, слева направо — от вопроса к действию и фразе для совета директоров.
Дайте совету дедлайн, а не технологию
Фиксы — не перестройка архитектуры. Это бамп версий и правки конфигов — можно сделать на этой неделе. Экспозиция — это разрыв между днем выхода патча и днем, когда ваша команда прогонит проверки. Прямо сейчас этот разрыв измеряется месяцами. Фреймворки сделали ровно то, для чего их построили.