Исследователи из Zafran Labs обнаружили две критические уязвимости в популярном фреймворке с открытым исходным кодом Chainlit, который используется для создания разговорных AI-приложений. Эти уязвимости позволяют злоумышленникам читать произвольные файлы на сервере и выполнять атаки типа Server-Side Request Forgery (SSRF, подделка межсайтовых запросов). В результате возможно хищение API-ключей, учетных данных облачных сред и других конфиденциальных данных без какого-либо взаимодействия с пользователем.
Детали уязвимости
Chainlit играет ключевую роль в инфраструктуре искусственного интеллекта многих компаний, обеспечивая интерфейс для чатов и взаимодействие с бэкенд-системами, такими как LangChain, OpenAI и AWS Bedrock. Ежемесячно его пакеты скачиваются из PyPI около 700 000 раз. Обнаруженные уязвимости, получившие идентификаторы CVE-2026-22218 и CVE-2026-22219, затрагивают ядро фреймворка. Zafran Labs подтвердила наличие эксплуатируемых инстансов в инфраструктуре крупных компаний в рамках своего проекта DarkSide, направленного на анализ рисков в AI-стеке.
Технический анализ показывает, что для эксплуатации злоумышленнику необходимо пройти аутентификацию. После этого он может использовать уязвимый эндпоинт "PUT /project/element". Класс "Element" в Chainlit некорректно обрабатывает пользовательские элементы, что позволяет контролировать свойства "path" или "url".
Уязвимость CVE-2026-22218 (чтение произвольных файлов) имеет оценку CVSS 9.1 (критическая). Отправка специально созданного элемента с контролируемым свойством "path" заставляет функцию "persist_file" скопировать любой читаемый файл с сервера в директорию сессии атакующего. Затем этот файл становится доступен через API. Основными целями являются системные файлы, такие как "/proc/self/environ" для получения переменных окружения (например, "AWS_SECRET_KEY", "CHAINLIT_AUTH_SECRET"), файлы конфигурации приложения ("app.py") и базы данных, такие как ".chainlit/.langchain.db", которые могут содержать промпты и истории чатов всех пользователей в многопользовательских конфигурациях.
Уязвимость CVE-2026-22219 (SSRF) имеет оценку CVSS 8.8 (высокая). Указав свойство "url" в элементе, можно заставить Chainlit выполнить HTTP-запрос к указанному внутреннему ресурсу через библиотеку "aiohttp". Полученное содержимое сохраняется и также может быть извлечено атакующим. Особенно опасна эта уязвимость в облачных средах, таких как AWS EC2. Комбинируя ее с чтением файлов для получения данных о внутренней сети из "/etc/hosts", злоумышленник может обратиться к метаданным инстанса по адресу "http://169.254.169.254/". Это позволяет получить учетные данные IAM-роли, присвоенной виртуальной машине, что открывает путь к движению по сети и компрометации связанных облачных сервисов: хранилищ S3, сервисов секретов и моделей LLM.
Цепочка атаки начинается с обхода аутентификации через сгенерированные с помощью украденного секрета токены, затем происходит повышение привилегий через чтение файлов и завершается полным захватом контроля над облачной средой. Для успешной атаки достаточно лишь доступа к сессии. Риски критически возрастают в многопользовательских развертываниях, где одна уязвимость может привести к утечке данных всех клиентов.
В качестве индикаторов компрометации (IoC) исследователи отмечают наличие открытых серверов Chainlit, которые можно обнаружить по путям "/chainlit" или WebSocket-эндпоинту "/ws" на портах 8000 или 3000. К уязвимым относятся версии ниже 2.9.4. Подозрительная активность включает HTTP-запросы "PUT /project/element" с телами, содержащими "{"type":"custom","path":"..."}" или "{"type":"custom","url":"..."}". Также признаком взлома может служить наличие в логах утечек переменных окружения с секретом "CHAINLIT_AUTH_SECRET" или обращений к файлу ".chainlit/.langchain.db".
Для защиты необходимо немедленно обновить Chainlit до версии 2.9.4. Компания Zafran также рекомендует использовать свой модуль Components или правила для Web Application Firewall (WAF). В облачных средах следует отключить устаревшую версию службы метаданных IMDSv1 и строго следовать принципу наименьших привилерий при настройке IAM-ролей. Важным шагом является активный поиск и инвентаризация всех развернутых инстансов Chainlit с помощью инструментов вроде Shodan или Censys.
Проект DarkSide наглядно демонстрирует, как классические уязвимости в новых AI-фреймворках создают критически опасные цепочки для компрометации всей облачной инфраструктуры. По мере роста внедрения технологий искусственного интеллекта безопасность таких инструментов, как Chainlit, становится важнейшим элементом защиты от атак, исходящих от "темной стороны".
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-22218
- https://www.cve.org/CVERecord?id=CVE-2026-22219
- https://github.com/Chainlit/chainlit/releases/tag/2.9.4
- https://www.zafran.io/resources/chainleak-critical-ai-framework-vulnerabilities-expose-data-enable-cloud-takeover
- https://www.vulncheck.com/advisories/chainlit-arbitrary-file-read-via-project-element