opened image

Украденные AI-ключи: как LiteLLM, Railway и OpenCode подвели разработчиков

 

 

За одну неделю в октябре 2026 года произошли три крупные утечки. Пострадали популярный инструмент LiteLLM, хостинг Railway и сервис OpenCode. Во всех трёх случаях злоумышленники охотились за одним и тем же: ключами к OpenAI, Anthropic, Google и облачным сервисам.

Украденный ключ работает как ваша банковская карта в чужих руках. Им пользуются, а счёт приходит вам. Если вы подключали AI к своему сайту, боту или сервису, проверьте ключи сегодня. Ниже простая инструкция.

 

 

Что такое API-ключ и почему его крадут

 

API-ключ это длинная строка вроде sk-ant-... или sk-proj-.... Ваш сайт или бот показывает её сервису, например ChatGPT или Claude. Сервис видит ключ и понимает: это вы, и платите тоже вы.

По сути это банковская карта без ПИН-кода. Кто знает номер, тот и платит. Только платит не он, а вы.

 

Почему за этими ключами сейчас идёт охота:

  • Это прямые деньги. С чужим ключом можно бесплатно пользоваться дорогими моделями или перепродавать доступ. Один украденный ключ может нагенерировать счёт на десятки тысяч долларов за сутки.
  • Ключи покупают оптом. Некоторые компании используют чужие ключи, чтобы скачивать ответы больших моделей и обучать на них свои. Это называют дистилляцией. На такие ключи есть постоянный спрос.
  • Ключи часто лежат рядом с другими секретами. Там же пароли от баз данных, доступы к облаку, ключи от платёжных систем. Украл одно, получил всё.

 

 

LiteLLM: отравленное обновление

 

LiteLLM это популярная программа-посредник. Через неё сайты и боты обращаются сразу к десяткам AI-сервисов. Её скачивают около 23 миллионов раз в неделю.

 

Что случилось. 21 октября злоумышленники выпустили от имени LiteLLM поддельную версию 1.107.0. Она провисела в PyPI и Docker около двух часов. За это время её скачали примерно 49 тысяч раз.

Это как если бы на заводе в пачки с лекарством подложили яд. Упаковка настоящая, производитель настоящий, а внутри отрава.

 

Что делала поддельная версия. Она собирала всё ценное на компьютере или сервере: пароли из браузеров, SSH-ключи, доступы к облаку, ключи от AI-сервисов. Ещё она оставляла «чёрный ход», чтобы злоумышленник мог вернуться в любой момент. Украденные ключи начали проверять уже через несколько часов.

 

С чего всё началось. В мае разработчики LiteLLM случайно выложили служебный ключ в открытый репозиторий на GitHub. Его никто не заменил. В октябре злоумышленник нашёл этот ключ и через него добрался до системы выпуска обновлений.

Мораль простая. Один забытый ключ пролежал полгода и привёл к заражённому обновлению, которое скачали десятки тысяч раз.

 

Все версии до 1.107.0 безопасны. Отдельно LiteLLM обещала 27 октября раскрыть ещё одну уязвимость. Если вы пользуетесь LiteLLM, следите за обновлениями.

 

 

Railway: взлом хостинга

 

Railway это облачная платформа, где разработчики запускают свои приложения. Пароли и ключи там хранятся в так называемых переменных окружения.

 

Что случилось. 21 октября Railway заметила подозрительную активность в системах, где хранятся эти переменные. По словам компании, злоумышленник мог получить к ним доступ и часть расшифровать.

Это как если бы взломали не вашу квартиру, а комнату консьержа, где висят запасные ключи от всех квартир дома.

 

Последствия. Railway попросила всех клиентов заменить все ключи и пароли. Деплои были остановлены примерно на 17 часов. Пользователи писали, что их ключи к AI-сервисам начали использовать ещё до официального предупреждения. По данным исследователей, с криптокошельков, ключи от которых хранились на Railway, вывели около $371 тысячи. Сама Railway эту связь не подтвердила.

 

Railway считает, что взлом был частью серии атак на хостинги ради ключей к AI-сервисам. За два дня до этого о похожем взломе сообщил хостинг Zeabur.

 

 

OpenCode: ключи из старой системы

 

OpenCode это популярный AI-помощник для программистов. У него есть веб-кабинет Console. Туда можно сохранить свои ключи от OpenAI, Anthropic или Google, чтобы вся команда работала через них.

 

Что случилось. В ночь на 16 октября злоумышленник проник в старую систему OpenCode. Компания как раз собиралась её отключить. Но ключи клиентов там всё ещё лежали. Пострадали 1,4% пользователей Console.

Это как переехать в новый офис, а в старом оставить сейф с документами. Двери уже никто не охраняет.

 

Что заметили пользователи. Один разработчик рассказал, что ночью ему пришли уведомления о тратах сразу от трёх сервисов. Google сам заблокировал подозрительную активность. OpenAI и Anthropic продолжали списывать деньги, пока он не отозвал ключи вручную.

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

 

 

Проверьте, задело ли вас

 

LiteLLM. Проверьте версию на сервере:

pip show litellm

 

Если в ответе Version: 1.107.0, сервер заражён. Ещё поищите файлы, которые оставляла вредоносная версия:

find / -name "cook.pth" -o -name "litellm-1.107.0.dist-info" 2>/dev/null

 

Если вы запускаете LiteLLM в Docker, вспомните, не обновляли ли образ 21 октября. Опасными были теги v1.107.0, latest, main-latest и main-stable.

 

  • Railway. Если у вас там есть хотя бы один проект, считайте, что вас задело. Railway сама просит всех клиентов заменить ключи.
  • OpenCode. Проверьте почту: OpenCode разослала письма пострадавшим. Если писем нет, но вы сохраняли свои ключи в OpenCode Console, лучше их всё равно заменить. Если вы пользуетесь только программой на своём компьютере, ваши ключи хранятся у вас и в этой утечке не участвовали.
  • Всем остальным. Откройте кабинеты OpenAI, Anthropic, Google и посмотрите расходы за последние две недели. Резкий скачок, особенно ночью, это повод насторожиться.

 

 

Замените ключи правильно

 

Заменить ключ нужно так, чтобы сайт не упал. Порядок такой:

  1. Создайте новый ключ в кабинете сервиса: OpenAI, Anthropic, Google AI Studio и других.
  2. Пропишите новый ключ в своём сайте, боте или сервисе.
  3. Проверьте, что всё работает.
  4. Удалите старый ключ в кабинете сервиса. Только после этого он перестанет работать у вора.

 

Это как замена замка после потери ключей. Сначала ставите новый замок и раздаёте ключи своим. Потом выбрасываете старый.

 

Меняйте не только AI-ключи. Если ключ лежал на сервере рядом с другими секретами, меняйте всё: пароли от баз данных, ключи облака, токены платёжных систем, SSH-ключи.

Если у вас стояла LiteLLM 1.107.0, одной замены ключей мало. Вредоносная версия оставляла «чёрный ход». Удалить пакет недостаточно. Если вор уже побывал в квартире и сделал дубликат ключа от чёрного хода, новый замок на парадной двери не поможет. Такой сервер безопаснее переустановить с нуля, а потом уже менять все пароли и ключи.

 

 

Поставьте лимиты и наведите порядок

 

Полностью исключить утечку нельзя. Но можно сделать так, чтобы она обошлась дёшево.

  • Поставьте лимит трат на каждый ключ. Все крупные AI-сервисы позволяют задать месячный бюджет. Это как лимит на банковской карте. Даже если карту украдут, больше лимита не снимут.
  • Один ключ на один проект. Не используйте один ключ для сайта, бота и тестов. Если утечёт один, вы замените только его и сразу поймёте, откуда утечка.
  • Не храните ключи в коде. Держите их в файле .env и добавьте этот файл в .gitignore. Так он не попадёт в репозиторий. Именно так начался взлом LiteLLM: ключ случайно оказался на GitHub.
  • Не пишите ключи в логи. Проверьте, что ваш сайт или бот не сохраняет в логах полные запросы с ключами и токенами. Через логи злоумышленник добрался до системы обновлений LiteLLM.
  • Фиксируйте версии программ. Пишите точную версию, например litellm==1.106.2, а не просто litellm. В Docker не используйте тег latest. Тогда поддельное обновление не установится само, пока вы его не проверите.

 

 

Чек-лист

 

  • Проверил версию LiteLLM на сервере
  • Проверил, нет ли у меня проектов на Railway
  • Проверил почту на письмо от OpenCode
  • Посмотрел расходы в кабинетах OpenAI, Anthropic, Google
  • Заменил ключи в правильном порядке: новый, проверка, удаление старого
  • Заменил остальные пароли и ключи на заражённом сервере
  • Поставил лимит трат на каждый ключ
  • Убрал ключи из кода и логов
  • Зафиксировал версии программ и Docker-образов

 

 

Не хотите разбираться сами?

 

Найти все ключи на сервере сложнее, чем кажется. Один в .env, другой в настройках бота, третий в Docker-контейнере, четвёртый случайно попал в логи. А если сервер мог быть заражён, его нужно переустановить и ничего не потерять.

Для таких случаев у Zomro есть два варианта.

 

SOD: проверим сервер за вас

Наш системный администратор:

  • проверит, нет ли на сервере заражённой версии LiteLLM и её следов;
  • найдёт, где лежат ключи и пароли, и подскажет, какие нужно заменить;
  • проверит, не попадают ли секреты в логи;
  • поможет перенести проект на чистый сервер, если это нужно.

Стоимость: €12.50 за каждые 15 минут работы.

 

Заказать проверку сервера

 

Premium: быстрая помощь, когда она нужна

 

Когда ключ утёк, счёт растёт каждый час. По обычному техническому запросу ответ может занять до 10 часов. С Premium мы отвечаем за время от 5 до 30 минут.

Каждую неделю появляются новые утечки и уязвимости. С Premium вам не придётся разбираться с ними в одиночку.

 

Подключить Premium