TL;DR: Атака на библиотеку litellm через цепочку поставок (supply chain attack) подчеркивает важность аудита зависимостей. Вредоносный код выполнялся сразу после установки, не требуя импорта или вызова функций. Проверьте свои проекты на наличие уязвимых версий и внедрите инструменты для автоматического аудита зависимостей.
Введение
Атаки через цепочку поставок становятся всё более изощрёнными и опасными. Недавний инцидент с библиотекой litellm — яркий пример того, как злоумышленники могут использовать доверие к популярным инструментам для внедрения вредоносного кода. В данном случае атака была обнаружена только из-за ошибки в коде злоумышленников, что привело к краху систем. Если бы код работал корректно, атака могла оставаться незамеченной неделями.
Основная часть
Что произошло?
Версии 1.82.7 и 1.82.8 библиотеки litellm содержали вредоносный код, который выполнялся сразу после установки через pip install. Код собирал SSH-ключи, AWS-креды, секреты Kubernetes, криптокошельки и переменные окружения. Важно отметить, что код не требовал импорта или вызова функций — он запускался автоматически благодаря использованию .pth файлов, которые Python загружает при старте.
Как это произошло?
Атака была осуществлена через компрометацию инструмента безопасности Trivy. Злоумышленники украли токен для публикации на PyPI и загрузили вредоносные версии litellm. Этот инцидент демонстрирует, что даже инструменты, предназначенные для защиты, могут стать точкой входа для атак.
Практические шаги
-
Проверка версий litellm:
Используйте командуpip show litellmна всех серверах и разработческих машинах. Если версия выше 1.82.6, считайте систему полностью скомпрометированной.pip show litellm -
Ротация секретов:
Незамедлительно замените все секреты, включая AWS-ключи, пароли баз данных и API-токены для OpenAI, Anthropic и других сервисов. -
Аудит зависимостей:
Проверьте все зависимости проекта на наличие litellm как транзитивной зависимости. Используйтеpip freezeдля получения списка установленных пакетов.pip freeze | grep litellm -
Фиксация версий:
Закрепите версию litellm на 1.82.6 в файлеrequirements.txtдо устранения проблемы.litellm==1.82.6 -
Автоматизация аудита:
Внедрите инструменты для автоматического аудита зависимостей, такие какpip-audit, в CI/CD конвейер. Добавьте pre-commit хук для ручного ревью новых зависимостей.pip install pip-audit pip-audit
Пример интеграции pip-audit в CI/CD
# .github/workflows/audit.yml
name: Dependency Audit
on: [push, pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install pip-audit
run: pip install pip-audit
- name: Run pip-audit
run: pip-audit
Заключение
Атака на litellm — это серьёзный сигнал для всех разработчиков о необходимости более внимательного отношения к зависимостям. Внедрение инструментов для автоматического аудита и регулярный мониторинг зависимостей должны стать стандартной практикой в каждом проекте. Помните, что безопасность — это не разовая акция, а непрерывный процесс.
Проверьте свои проекты уже сегодня.
Источник: https://www.reddit.com/r/webdev/comments/1s496iy/that_litellm_supply_chain_attack_is_a_wake_up/