Похоже, у AI тоже бывают гастрономические привычки — Chainlit с аппетитом потянулся к чужим файлам. В конце 2025 года исследователи Zafran Labs обнаружили две «болячки», которые позволяли красть секреты прямо из серверного бокса чат-приложения: произвольное чтение файлов и SSRF — и обе были вполне удобоваримы для злоумышленника.

Детективная часть проста и неприятна: через endpoint /project/element злоумышленник мог передать «элемент» с управляемым полем path, и сервер без должной валидации скопировал бы файл в сессию — так называемая CVE-2026-22218. Любые доступные серверу файлы — конфиги, ключи API, SQLite-базы — оказывались на тарелке. В параллельной сюжетной линии CVE-2026-22219 (в компоновке с SQLAlchemy) позволяла вставить URL, заставив сервер сделать исходящий GET и сохранить ответ, что давало доступ к внутренним сервисам через элемент загрузки.

Комбинация этих двух багов превратилась в полноценную «цепочку»: сначала пробная шпаргалка внутрь, затем выуживание других секретов и, при удаче, латеральное перемещение по облачной инфраструктуре. Zafran продемонстрировали практический путь к компрометации систем, о чём подробно написано в их репорте (см. источник ниже).

Хорошая новость — уязвимости исправлены: команда Chainlit выпустила патч в версии 2.9.4 (последняя на момент публикации — 2.9.6). Рекомендация простая и немного звучит как мантра для админов: обновите Chainlit, проверьте выданные ключи и секреты, пересмотрите правила доступа и мониторинг исходящих запросов. Также полезно изучить отчёт Zafran и записи CVE: CVE-2026-22218, CVE-2026-22219 и релизы Chainlit на GitHub.

Техника безопасности для AI — это не модная прихоть, а необходимая привычка. Берегите свои ключи как кота на клавиатуре: иногда он и правда умеет нажать не туда.