Критическая SQL-инъекция в AI-шлюзе LiteLLM: атакующие перешли к целенаправленной охоте за ключами за 36 часов после публикации предупреждения

information security

Популярный открытый прокси для больших языковых моделей LiteLLM оказался уязвим к предварительной SQL-инъекции, позволяющей любому атакующему, способному добраться до порта прокси, выполнять произвольные запросы SELECT к базе данных PostgreSQL. Проблема, зарегистрированная как CVE-2026-42208, затрагивает версии с 1.81.16 по 1.83.6. Владельцам серверов настоятельно рекомендуется немедленно обновить ПО до версии 1.83.7, где строка запроса теперь передаётся через параметризованный механизм, исключающий подстановку пользовательского ввода напрямую в SQL.

Описание

Уязвимость кроется в этапе проверки авторизации: значение заголовка Authorization: Bearer подставляется прямо в SQL-запрос к таблице LiteLLM_VerificationToken без экранирования. Любой HTTP-запрос, содержащий кавычку во фрагменте ключа, ломает строковый литерал и позволяет атакующему дописать собственные команды UNION SELECT. Поскольку проверка происходит до принятия решения об аутентификации, инъекция является предварительной - для эксплуатации достаточно просто установить соединение с портом 4000.

Первую попытку использования уязвимости зафиксировали специалисты из команды Sysdig Threat Research Team. Они сообщили в аналитическом отчёте, что атакующий начал атаку 26 апреля 2026 года, спустя 36 часов и 7 минут после того, как запись о проблеме появилась в глобальной базе данных GitHub Advisory Database. Само предупреждение было опубликовано в репозитории LiteLLM 20 апреля, но индексация в глобальной БД состоялась только 24 апреля. Задержка в двое суток между появлением уведомления в репозитории и его зеркалами могла сыграть злую шутку с теми, кто полагается исключительно на системы раннего оповещения.

Атакующий не применял стандартный распылитель SQL-инъекций. Вместо этого он продемонстрировал осведомлённость о внутренней схеме базы данных. Первые четыре вредоносных запроса были нацелены на три ключевые таблицы: litellm_verificationtoken, litellm_credentials и litellm_config. Это не случайность - в них хранятся наиболее ценные данные: виртуальные API-ключи, учётные данные провайдеров (OpenAI, Anthropic, Bedrock) и переменные окружения прокси, где обычно находятся строка подключения к БД и мастер-ключ.

Особую настороженность вызывает тот факт, что атакующий заранее знал точное написание имён таблиц. PostgreSQL по умолчанию сворачивает неэкранированные идентификаторы в нижний регистр. Первые запросы использовали нижний регистр, но не принесли результата. Тогда злоумышленник переключился на точное название в стиле PascalCase, с кавычками - "LiteLLM_VerificationToken". Такое поведение характерно не для массового сканера, а для целенаправленного вредоносного актора, который либо изучил Prisma-схему LiteLLM, либо использовал генеративные нейросети для анализа кода.

После неудачных попыток атакующий 10 минут перебирал количество столбцов в результирующем наборе UNION. Он последовательно увеличивал число NULL-заполнителей от одного до шести, пока не подобрал правильную длину. Затем последовала пауза 21 минута, и запросы повторились уже с другого IP-адреса (65.111.25.67), принадлежащего тому же оператору 3xK Tech GmbH. Новый адрес снова прошёлся по целевым таблицам, а в конце последовал запрос с OR 1=1 - стандартный манёвр, когда атакующий после полного списка payload пытается вернуть хотя бы одну строку.

Важно, что специалисты Sysdig не зафиксировали следов успешной эксфильтрации данных. После перебора схемы злоумышленник попробовал обратиться к API-эндпоинтам /key/generate и /key/info без аутентификации, но безуспешно. Однако отсутствие подтверждённого ущерба не означает, что атака не удалась. Возможно, злоумышленник всё же извлёк ключи, но решил не использовать их немедленно. Или же ему помешали меры защиты на стороне целевого сервера. В любом случае операторы, чьи экземпляры LiteLLM были доступны из интернета в период с 20 по 26 апреля, должны считать базу данных скомпрометированной.

AI-шлюзы сегодня выполняют роль централизованного хранилища облачных учётных данных. Одна строка в таблице litellm_credentials часто содержит ключ OpenAI с ежемесячным лимитом трат в десятки тысяч долларов, консольный ключ Anthropic с правами администратора рабочей области и IAM-учётные данные AWS Bedrock. Успешная SQL-инъекция против такой базы данных равносильна взлому всей облачной учётной записи провайдера модели. Поэтому атакующие всё активнее охотятся именно за этими данными, а не за простыми страницами входа.

Событие показало, что критические уязвимости в AI-инфраструктуре становятся объектом целенаправленной атаки в течение считанных часов после публикации информации. Защита, полагающаяся только на CISA KEV или уведомления о CVE, может не успеть среагировать. Необходимо внедрять внутренние процессы быстрой проверки обновлений для открытых компонентов, особенно таких, как LiteLLM, которые объединяют доступ к самым ценным ресурсам. Пока же операторам стоит как можно скорее обновить прокси до версии 1.83.7, сменить все API-ключи и внимательно проверить биллинг провайдеров на предмет необычного трафика от неизвестных IP-адресов.

Индикаторы компрометации

IPv4

  • 65.111.25.67
  • 65.111.27.132
Комментарии: 0