
Ваш AI-агент робив саме те, для чого був створений. Однак фреймворк, що працює під ним, надав зловмисникам прямий доступ до сервера, де зберігаються ваші ключі OpenAI, облікові дані бази даних та токени CRM.
Це не гіпотетична ситуація. За останні кілька місяців три найпоширеніші фреймворки для AI-агентів перетворили відомі, стандартні класи вразливостей на шлях для вторгнення. Дослідники Check Point Research об’єднали SQL-ін’єкцію у механізмі збереження стану LangGraph із повним виконанням віддаленого коду. Компанії Tenable та VulnCheck виявили обхід шляху (path traversal) в API завантаження файлів Langflow, що призвів до реальних атак з виконанням коду. Cyera задокументувала подібний обхід шляху у компоненті завантаження промптів LangChain-core, який дозволяє зчитувати ваші секрети з диска. Дві атаки призводять до отримання командного рядка, одна – до доступу до ваших ключів. Це одна й та сама вразливість, яка використовується у трьох різних фреймворках.
Ці фреймворки стали частиною виробничої інфраструктури значно швидше, ніж були належним чином захищені. Вони зберігають стан агентів, приймають завантажені файли, завантажують конфігурації промптів та містять облікові дані для доступу до баз даних, CRM-систем та внутрішніх API. Засоби захисту мережевого трафіку (WAF) та кінцевих точок (EDR) не були розроблені з урахуванням того, що імпортований фреймворк може стати точкою входу. Цей сліпий кут є саме тим, де ховаються всі три описані ланцюжки атак, і ця небезпека зростає з кожним тижнем, оскільки ці фреймворки впроваджуються у виробниче середовище.
Ланцюжок LangGraph: від SQL-ін’єкції до Python-оболонки
Почнемо з того, що багато команд впровадили цього кварталу. LangGraph забезпечує “пам’ять” для AI-агентів за допомогою механізмів збереження стану (checkpointers), які зберігають стан виконання. Він завантажується понад 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.
Наразі підтвердженого використання в реальних атаках не зафіксовано. Працюючий доказ концепції (proof-of-concept) є публічним у розкритті інформації від 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`, яка приймає ім’я файлу безпосередньо з даних форми та записує його на диск без санітизації. Зловмисник може включити послідовності для обходу шляху в ім’я файлу і завантажити його куди завгодно, наприклад, як завдання cron у `/etc/cron.d/`. Оскільки Langflow постачається з увімкненим автологіном у конфігурації за замовчуванням, для атаки на скомпрометований екземпляр не потрібні жодні облікові дані. Достатньо одного неавтентифікованого запиту до кінцевої точки, і наступний запуск cron надасть командний рядок.
Кейтлін Кондон з VulnCheck підтвердила експлуатацію 9 червня: “Наші “канарки” зафіксували експлуатацію 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) – обхід шляху (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-вразливості: обхід шляху, SQL-ін’єкція, небезпечна десеріалізація. Нічого екзотичного, нічого специфічного для AI, лише старі вразливості, що існують у новій інфраструктурі. Це не проблема передових моделей, це “трубопровід”, що працює на стику AI та підприємства.
Чому сканер не бачить цього
Меррітт Бейєр, CSO в Enkrypt AI та колишній заступник CISO в AWS, пояснює, чому подібні збої важко передбачити. Це не анонсується як проблема AI. “CISO зіткнуться з небезпекою MCP (Managed Cloud Platform) не в абстракції, а коли співробітник вставить конфіденційні дані в інструмент, або коли зловмисник знайде незахищений сервер MCP у вашій хмарі”, – зазначила Бейєр. “Це не буде відчуватися як ‘ризик AI’. Це буде відчуватися як збій вашої традиційної програми безпеки”. Ланцюжки вразливостей у фреймворках мають таку ж природу. Відкритий екземпляр Langflow – це незахищений сервер у вашій хмарі, а сповіщення, якщо воно спрацює, буде схоже на звичайний інцидент.
Це прогалина, висловлена одним реченням. Експлуатація відбувається у фреймворку, який імпортує ваш код. WAF ніколи не бачить декодер `msgpack`, що працює на трьох рівнях нижче. EDR спостерігає, як сервер агента виконує ті самі системні виклики, що й тисячі разів на день, і пропускає їх. Обидва інструменти виконують свою роботу. Ніхто не розглядав сам фреймворк як джерело потенційної загрози.
Першопричина старша за AI, і Бейєр визначає її. “MCP поставляються з тим самим недоліком, який ми бачили в кожному великому розгортанні протоколів: незахищені налаштування за замовчуванням”, – сказала вона. “Якщо ми не вбудуємо автентифікацію та принцип найменших привілеїв з першого дня, ми будемо усувати наслідки витоків протягом наступного десятиліття”. Автологін Langflow – це реалізація цієї помилки. Незахищений завантажувач промптів LangChain-core – це також реалізація цієї помилки. Зручне налаштування за замовчуванням є вразливістю. І в той момент, коли агент підключається до чогось, цей ризик зростає. “Ви довіряєте не тільки своїй безпеці, ви успадковуєте гігієну кожного інструменту, кожного облікового запису, кожного розробника в цьому ланцюжку”, – зазначила Бейєр. “Це ризик ланцюжка постачання в реальному часі”.
Крім технічної проблеми, існує проблема управління, яка є результатом того самого неправильного класифікування, на яке вказав Ассаф Керен, головний спеціаліст з безпеки Qualtrics та колишній CISO PayPal, щодо суміжних інструментів. “Більшість команд безпеки досі класифікують платформи управління досвідом як ‘інструменти для опитувань’, які належать до того ж рівня ризику, що й додатки для управління проєктами”, – сказав Керен. “Це величезне неправильне класифікування”. Якщо замінити “платформи управління досвідом” на “фреймворки AI-агентів”, це твердження залишається актуальним. Команди відносять LangGraph, Langflow та LangChain до категорії “зручність для розробників”, а потім підключають їх до баз даних, CRM та ключів постачальників. “Безпека має бути рушієм прогресу, – зазначив Керен, – інакше команди знайдуть спосіб обійти її”. Ці фреймворки – це саме те, що означає “обійти безпеку”.
Якщо відстежувати фінансові потоки, вони також вказують на той самий рівень. У своєму фінансовому звіті за перший квартал 2027 фінансового року CrowdStrike повідомила про зростання свого рішення для виявлення та реагування на AI більш ніж на 250% послідовно, а 17 червня вони розширили покриття часу виконання на трафік агентів, LLM та MCP в AWS. Джордж Куртц, співзасновник і генеральний директор компанії, чітко назвав причину: “Агенти працюють на кінцевих точках. Вони виконують виклики інструментів, отримують доступ до файлів, викликають API та переміщують дані на рівні процесів”. Це саме та “інфраструктура”, якою зловмисники зловживають у цих ланцюжках, і реальні фінансові ресурси тепер спрямовуються на рівень, який пропускають ваші AppSec-сканери.
Що представити раді директорів
Раді директорів не потрібні номери CVE. Їм потрібні наслідки, і Керен проводить межу, яка цікавить раду. Більшість команд визначили технічний масштаб ураження. “Але не бізнес-масштаб ураження”, – сказав Керен. “Коли AI-двигун ініціює коригування компенсації на основі “отруєних” даних, шкода полягає не в інциденті безпеки. Це неправильне бізнес-рішення, виконане зі швидкістю машини”. RCE у фреймворку – це та сама проблема на рівень вище. Агент не просто викрадає облікові дані; він діє з ними на виробничих системах, і бізнес бачить результат, який ніхто не може пояснити.
Тому сформулюйте це так, як це робить рада директорів: ми використовуємо фреймворки AI-агентів у виробництві, які можуть бути перетворені на віддалені оболонки через вразливості, які наші сканери не призначені виявляти. Всі три вже виправлені, один активно атакується, і ось дата, коли всі екземпляри будуть перевірені та захищені. Жодна з цих атак не потребувала спеціалізованого шкідливого програмного забезпечення або zero-day вразливості.
Чек-лист з шести питань
Шість меж довіри, по одному на рядок, кожне з питанням, доказом, командою, виправленням та формулюванням для ради директорів. Виконайте це сьогодні ввечері.
|
Питання щодо межі довіри |
Доказ |
Що зламалося |
Перевірка перед встановленням |
Виправлення |
Формулювання для ради директорів |
|
1. Чи можна отруїти сховище стану агента кодом? |
Ланцюжок SQLi-to-RCE LangGraph. 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). У списку KEV VulnCheck (8 червня). Активна експлуатація підтверджена 9 червня. Приблизно 7 000 доступних екземплярів (Censys). |
Обхід шляху (path traversal) у POST `/api/v2/files`. Ім’я файлу не санітизується. Автологін увімкнено за замовчуванням. Два HTTP-запити для створення завдання cron та отримання командного рядка. |
Виконайте запит до Censys або Shodan для ваших екземплярів Langflow, Flowise, n8n та Dify на периферії. Перевірте, чи увімкнено автологін. |
Оновіть Langflow до версії 1.9.0+. Вимкніть автологін. Перенесіть AI-інструменти для розробки за VPN або Zero Trust. Ізолюйте порт 7860. |
“Наші AI-інструменти для розробки доступні з Інтернету з вимкненим логіном. Саме ця вразливість зараз активно експлуатується. Ми вживаємо заходів для обмеження доступу вже сьогодні.” |
|
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()` на каталог з білого списку. Запускайте від імені непривілейованого користувача. |
“Наша система промптів могла бути використана для зчитування наших API-ключів з диска. Ми випускаємо патч та видаляємо застарілий завантажувач.” |
|
4. Чи надає скомпрометований фреймворк усі облікові дані одночасно? |
Ці фреймворки часто розгортаються з ключами постачальників, обліковими даними баз даних та токенами інтеграції, доступними для середовища процесу. Cyera документує шлях витоку облікових даних. |
Одне виконання віддаленого коду (RCE) на сервері агента викриває усі секрети, доступні процесу. Масштаб ураження – повний набір облікових даних, а не одна програма. |
Проведіть інвентаризацію секретів, до яких може отримати доступ процес фреймворку. Підтвердьте, що ключі надходять з менеджера секретів, а не зі статичних файлів `.env`. |
Перенесіть ключі постачальників до тимчасового введення. Змініть будь-який ключ, який міг бути прочитаний вразливим екземпляром. Надайте кожному ключу мінімально необхідні привілеї. |
“Одне порушення безпеки в одному AI-фреймворку викриває ключі до всіх моделей та сховищ даних, до яких він має доступ. Ми зараз змінюємо їх та обмежуємо їхні привілеї.” |
|
5. Чи ці фреймворки працюють поза межами управління безпекою? |
Попередня вразливість Langflow, CVE-2025-34291, була використана MuddyWater, пов’язаною з Іраном, і додана до CISA KEV у травні. “Тіньовий AI” – це новий “тіньовий IT”. |
Команди розгортають фреймворки для швидкості, надають їм облікові дані та ніколи не проводять їхній перегляд. Команда безпеки не може бачити те, про що вона не знає. |
Проведіть виявлення AI-фреймворків, що знаходяться поза системою управління змінами. Призначте кожному власнику та запис про схвалення. |
Призначте кожному фреймворку відповідального власника та місце в процесі затвердження. Запропонуйте санкціоновану альтернативу, щоб команди не шукали шляхів обходу. |
“У нас є AI-фреймворки у виробництві, які ніхто офіційно не затверджував. Ми вводимо їх під управління, а не забороняємо.” |
|
6. Чи можуть наші сканери взагалі бачити внутрішню роботу фреймворку під час виконання? |
Виявлення під час виконання формується навколо цього рівня: CrowdStrike Falcon AIDR розширився на AWS 17 червня (Bedrock, Kiro, Strands); їхня коаліція QuiltWorks тепер охоплює хмарні робочі навантаження. |
WAF читає HTTP на периферії. EDR спостерігає за кінцевою точкою. За замовчуванням жоден з них надійно не моделює декодер `msgpack` або завантажувач промптів на трьох рівнях нижче у імпортованому фреймворку як окрему межу довіри. |
Перевірте, чи охоплює ваш AppSec-сканер внутрішні компоненти сторонніх фреймворків. Відстежуйте CVE за залежностями, а не тільки за тим, що можуть розпарсити ваші периферійні інструменти. |
Додайте залежності фреймворків до управління вразливостями. Розглядайте вивід агента та збережений стан як недовірені. Встановлюйте патчі при розкритті інформації, а не після внесення до списку KEV. |
“Наші сканери перевіряють наш код, а не фреймворки, які імпортує наш код. Ми усуваємо цей сліпий кут та встановлюємо патчі одразу після розкриття інформації, не чекаючи федерального каталогу.” |
Як читати цю таблицю: кожен рядок – це одна межа довіри, зліва направо, від питання, яке слід поставити, до формулювання для вашої ради директорів.
Надайте раді директорів термін, а не технологію
Виправлення не потребують реархітектури. Це оновлення версій та зміни конфігурації, які ви можете впровадити цього тижня. Експозиція – це прогалина між днем випуску патчу та днем, коли ваша команда проведе перевірки. І зараз ця прогалина вимірюється місяцями. Фреймворки робили саме те, для чого були створені.
Як захиститися (Порада ІТ-Блогу): Завжди оновлюйте свої AI-фреймворки та залежності до останніх версій, як тільки з’являються виправлення. Також, обмежте доступ до цих фреймворків ззовні, використовуючи VPN або мережеві правила, щоб вони були доступні лише з довірених мереж.
Інформація підготовлена на основі матеріалів: venturebeat.com
