Содержание статьи
- Февральская прелюдия
- 19 марта: вторая атака на Trivy
- TeamPCP Cloud Stealer
- 22 марта: атака на внутреннюю организацию Aqua Security
- Эффект домино: npm, LiteLLM, Checkmarx
- 27 марта: Telnyx и стеганография в WAV-файлах
- Вайпер Kamikaze
- Cisco, Еврокомиссия, Mercor и другие
- TruffleHog и AWS
- Связь с Lapsus$
- Цифры и выводы
Среди пострадавших оказались Cisco, Европейская комиссия, ИИ‑стартап Mercor и сотни других организаций. По оценкам компании Mandiant, общее число скомпрометированных SaaS-сред превысило 1000 и продолжает расти.
Самым неприятным в этой истории оказался даже не масштаб атак, а тот факт, что в основе всего лежала не уязвимость нулевого дня, а взлом одной‑единственной учетной записи. Этого хватило, чтобы спровоцировать настоящий эффект домино.
Что такое Trivy
Trivy — известный опенсорсный сканер уязвимостей, разработанный компанией Aqua Security. Инструмент помогает выявлять проблемы безопасности и жестко закодированные секреты в контейнерах, Kubernetes-кластерах, репозиториях и облачной инфраструктуре. На GitHub у проекта больше 33 тысяч звезд, а связанные с ним GitHub Actions используются в десятках тысяч CI/CD-воркфлоу по всему миру.
Парадокс ситуации заключается в том, что Trivy — это инструмент безопасности. Именно его организации запускают, чтобы убедиться, что в их сборках нет малвари и утечек секретов. Поэтому и доверие к нему повышенное, и он получает соответствующие привилегии. Для хакеров скомпрометировать такой инструмент гораздо выгоднее, чем рядовую зависимость.
Февральская прелюдия
Эта история началась в феврале 2026 года. Тогда автономный бот hackerbot-claw, зарегистрированный на GitHub за неделю до начала атак, открыл pull request к репозиторию Trivy. PR эксплуатировал давно известную опасную конфигурацию pull_request_target в одном из воркфлоу проекта — это паттерн, при котором GitHub Actions выполняет код из форка, но делает это с правами и секретами основного репозитория.
Любопытно, что еще в ноябре 2025 года (за три месяца до эксплуатации hackerbot-claw) эту опасную конфигурацию обнаружил и пометил автоматический анализатор, однако разработчики Aqua Security проигнорировали предупреждение.
Неизвестно, управлялся ли hackerbot-claw группировкой TeamPCP или это был отдельный субъект, доступ которого хакеры использовали впоследствии.
Как бы то ни было, через эту брешь атакующие выгрузили из памяти процесса Personal Access Token (PAT) сервисного аккаунта aqua-bot — этот токен обладал правами repo на всю организацию aquasecurity. После этого злоумышленники удалили все 178 релизов Trivy (с 0.27.0 по 0.69.1), на короткое время сделали репозиторий приватным и опубликовали в OpenVSX вредоносное расширение Aqua Trivy для VS Code.
Специалисты Aqua Security быстро заметили инцидент, 1 марта публично сообщили о произошедшем и сменили скомпрометированные токены. Однако, как выяснилось позже, часть артефактов (API-ключи, сертификаты, пароли) осталась доступна злоумышленникам. Этого оказалось достаточно, чтобы через 20 дней хакеры вернулись.
19 марта: вторая атака на Trivy
19 марта 2026 года, когда значительная часть ИБ‑сообщества разъезжалась с BSidesSF и готовилась к RSA Conference, участники TeamPCP начали основную фазу своей операции.
Используя украденные в феврале учетные данные, атакующие опубликовали вредоносный тег 0.69.4 в основном репозитории Trivy через сервисный аккаунт aqua-bot и запустили автоматический пайплайн релиза. Параллельно они выполнили force push 75 из 76 тегов в репозитории aquasecurity/ и подменили все семь тегов в aquasecurity/. В результате теги указывали уже не на легитимные коммиты, а на вредоносные. Среди скомпрометированных оказались версии @0.34.2, @0.33 и @0.18.0, а единственной незатронутой осталась @0.35.0.
Атакующие не стали делать новый коммит или создавать релиз — это отобразилось бы в истории и спровоцировало бы появление уведомлений у мейнтейнеров. Вместо этого хакеры перенаправили существующие теги на вредоносные коммиты, аккуратно клонировав метаданные оригиналов: имя автора, email, временные метки и даже текст сообщения с номером PR. Любой воркфлоу, который ссылался на такой тег, автоматически подтягивал вредоносный код.
Следы, по которым в итоге удалось распутать эту атаку, были обнаружены только при ретроспективном анализе. Force push тегов в принципе не порождает событий CreateEvent или DeleteEvent в публичном API GitHub, то есть для систем мониторинга, завязанных на эти события, атака была невидимой.
Поддельные коммиты не были подписаны GPG, а оригиналы были. Подделки затрагивали только entrypoint., тогда как оригинальные — несколько файлов. Parent-коммиты датировались мартом 2026 года, при том что сами коммиты притворялись релизами 2021–2022 годов.
Параллельно с тегами TeamPCP опубликовала зараженные бинарники Trivy v0.69.4 через GitHub Releases, Docker Hub, GHCR, AWS ECR и репозитории DEB и RPM. Вредоносный релиз был доступен около трех часов, а зараженные теги GitHub Actions оставались активными примерно двенадцать часов.
TeamPCP Cloud Stealer
Малварь, которую TeamPCP внедрила в Trivy, получила название TeamPCP Cloud Stealer.
На GitHub-раннерах вредонос повышал привилегии до уровня root через passwordless sudo, находил процессы Runner. и сканировал их регионы памяти / в поисках JSON-строк с секретами, которые GitHub Actions использует для маскировки чувствительных данных в логах.
В дополнение к этому стилер собирал переменные окружения и искал в файловой системе учетные данные: SSH-ключи, настройки AWS, GCP, Azure, Kubernetes, Docker, файлы .env, пароли от баз данных, токены Slack и Discord, TLS-ключи, настройки VPN и данные криптокошельков.

Все собранное шифровалось AES-256-CBC со случайно сгенерированным ключом, а сам ключ — жестко закодированным публичным ключом RSA-4096. Полученный архив с именем tpcp.tar.gz отправлялся POST-запросом на тайпсквоттинговый домен scan. (обрати внимание — буквы в слове security поменяны местами).
Если же эксфильтрация не удавалась, малварь использовала запасной канал: создавала в GitHub-аккаунте жертвы публичный репозиторий tpcp-docs и заливала украденные данные туда как release asset.
На машинах разработчиков (вредонос определял их по отсутствию переменной GITHUB_ACTIONS=true) поведение менялось. Малварь не только собирала секреты, но и устанавливала на хост по пути ~/. Python-бэкдор, который регистрировался как сервис systemd и периодически опрашивал управляющий сервер на предмет новых полезных нагрузок.
При наличии кластера Kubernetes малварь формировала конфигурацию привилегированного пода с securityContext., монтировала корневую файловую систему ноды через hostPath и таким образом выходила за пределы контейнера на уровень хост‑системы.
По данным «Лаборатории Касперского», именно эта связка с Kubernetes делала малварь особенно опасной: она не ограничивалась кражей файлов и пыталась добраться до runtime-секретов, которые AWS выдает контейнерам через Instance Metadata Service по адресу 169.254.169.254 и Amazon ECS через 169.254.170.2. То есть TeamPCP охотилась не только за статическими секретами, но и за временными IAM-токенами, которые в момент заражения открывали прямой доступ к ресурсам AWS.
В итоге мейнтейнер Trivy Итай Шакури (Itay Shakury) подтвердил компрометацию и связал инцидент с февральской атакой. Он писал:
Если вы подозреваете, что использовали скомпрометированную версию, считайте все секреты вашего пайплайна скомпрометированными и немедленно измените их.
Инциденту присвоили идентификатор CVE-2026-33634 с оценкой 9,4 балла по шкале CVSS.
22 марта: атака на внутреннюю организацию Aqua Security
Через три дня после основной атаки выяснилось, что неполная ротация секретов принесла еще один неприятный сюрприз. 22 марта в Docker Hub появились вредоносные образы Trivy версий 0.69.5 и 0.69.6 — без соответствующих релизов на GitHub. Оба содержали все тот же TeamPCP Cloud Stealer. Последней «чистой» версией с тех пор считается 0.69.3.
В тот же день группировка TeamPCP добралась до GitHub-организации aquasec-com, где Aqua Security хранит проприетарный код: исходники Tracee, внутренние форки Trivy, CI/CD-пайплайны, Kubernetes-операторы и внутренние базы знаний.
По данным исследователей OpenSourceMalware, точкой входа послужил сервисный аккаунт Argon-DevOps-Mgt — бот с админскими правами одновременно в публичной организации aquasecurity и внутренней aquasec-com. Авторизовался он через PAT, а не через GitHub App, и его токен лежал в CI-раннере Trivy, где его и нашел стилер.
Сначала атакующие провели тестовый прогон: создали и сразу удалили тестовую ветку update-plugin-links-v0. в репозитории aquasecurity/. Никакого релиза с таким именем не существовало, никаких воркфлоу не запускалось — это была проверка краденого токена.
Через семь часов группировка в автоматическом режиме переименовала все 44 репозитория в aquasec-com, добавив к именам префикс tpcp-docs- и поменяв описания на TeamPCP Owns Aqua Security. Вся операция заняла меньше двух минут.
Эффект домино: npm, LiteLLM, Checkmarx
Параллельно с дефейсом Aqua Security группировка TeamPCP перешла к каскадной фазе атак, где каждое последующее звено цепочки подпитывалось секретами, украденными на предыдущем этапе.
Сначала пострадала экосистема npm. Из CI-раннеров Trivy утекли publish-токены мейнтейнеров, чьи пайплайны включали запуск сканера. На основе этих токенов TeamPCP запустила саморазмножающегося червя CanisterWorm, который автоматически публиковал вредоносные обновления во все пакеты, к которым у токена был доступ.
CanisterWorm заслуживает отдельного упоминания. Вместо обычного управляющего сервера червь использует canister в сети Internet Computer Protocol, что делает инфраструктуру устойчивой к блокировке: чтобы удалить canister, нужно голосование участников сети.
Для маскировки червь устанавливал себя в системе как pgmon., притворяясь сервисом мониторинга PostgreSQL, и периодически опрашивал ICP-узел на предмет новых полезных нагрузок. Также у него был «рубильник», реагирующий на строку youtube. в полученном URL, — на случай, если операторам понадобится экстренно отключить ботнет.
Следующей жертвой компрометации стал PyPI-пакет LiteLLM — популярная библиотека, предоставляющая шлюз к различным LLM-провайдерам. LiteLLM насчитывает более 90 миллионов загрузок в месяц, а среди пользователей — компании, которым нужен единый API для OpenAI, Anthropic, AWS Bedrock и Google Vertex AI одновременно.
К сожалению, CI-пайплайн BerriAI (компании, разрабатывающей LiteLLM) запускал Trivy в качестве этапа сборки и при этом не пинил конкретную версию инструмента. В результате стилер выгрузил из раннера токен PYPI_PUBLISH и GitHub PAT сооснователя проекта Криша Дхолакиа (Krrish Dholakia).
24 марта TeamPCP опубликовала в PyPI вредоносные версии LiteLLM — 1.82.7 и 1.82.8. Никаких соответствующих коммитов или тегов в Git-репозитории проекта при этом не было: пакеты собрали локально и, используя легитимные учетные данные мейнтейнера, залили на GitHub в обход стандартного релиз‑пайплайна. Так хакерам удалось обойти проверки целостности, включая верификацию хешей в pip: вредоносный код был корректно прописан в метаданных пакета с правильными хешами и хеш совпадал. Подпись была валидной, однако содержимое — нет.
В версии 1.82.7 стилер встроили в файл proxy_server. в строку 128, аккуратно вставив между двумя легитимными блоками кода, и он срабатывал при импорте litellm.. Эксперты Endor Labs обнаружили в этой версии сразу три итерации пейлоада, что свидетельствовало об активной доработке вредоноса прямо во время атаки.
В версии 1.82.8 атакующие пошли дальше и добавили litellm_init. — специальный тип файлов, который Python-модуль site исполняет при каждом старте интерпретатора, безо всякого импорта. Достаточно было запустить что угодно на Python (pip, IDE-плагин, любой подпроцесс), и стилер начинал работу.
Аналитики «Лаборатории Касперского» в своем анализе отметили примечательную деталь: вредоносный пейлоад декодировался из Base64 и исполнялся в памяти, а его вывод шифровался AES-256-CBC со случайным ключом, который, в свою очередь, шифровался публичным RSA-ключом. Этот же RSA-ключ потом был обнаружен в других фазах кампании, став одним из главных индикаторов.
Параллельно специалисты Sysdig обнаружили тот же стилер в двух GitHub Actions ИБ‑компании Checkmarx — ast-github-action и kics-github-action. Изначально предполагалось, что в ast-github-action пострадали один‑два тега, однако позже выяснилось, что TeamPCP перезаписала все опубликованные теги репозитория (91 тег), индивидуально сфабриковав отдельный коммит под каждую версию. Украденные на этом этапе атаки данные передавались на тайпсквоттинговый домен checkmarx[.]zone.

Кроме того, через скомпрометированный аккаунт Checkmarx в OpenVSX хакеры опубликовали вредоносные версии расширений ast-results 2.53.0 и cx-dev-assist 1.7.0. Версии в основном VS Code Marketplace при этом не пострадали, и представители Checkmarx заявили, что не обнаружили признаков утечки клиентских данных.
27 марта: Telnyx и стеганография в WAV-файлах
27 марта TeamPCP добавила в число жертв Python-пакет Telnyx — официальный SDK для интеграции VoIP, мессенджинга и IoT-сервисов. В PyPI появились две вредоносные версии (4.87.1 и 4.87.2), а вредоносный код внедрили в файл client., чтобы тот срабатывал автоматически при импорте пакета, не мешая работе легитимных функций SDK.
По данным Endor Labs, токен для публикации в PyPI, скорее всего, утек именно в результате взлома LiteLLM: любой разработчик или CI-пайплайн, у которого был установлен LiteLLM и одновременно в окружении лежал PyPI-токен Telnyx, мог отдать этот токен стилеру.
Самым интересным в этой фазе атаки была техника доставки финального пейлоада: вместо того чтобы хостить готовый бинарник или закодированный блоб, TeamPCP применила стеганографию в аудиофайлах.
В Linux и macOS зараженный пакет скачивал с управляющего сервера файл ringtone., извлекал из аудиоданных зашифрованный XOR скрипт‑сборщик и исполнял его в памяти. После этого стилер собирал SSH-ключи, переменные окружения, облачные токены, данные криптокошельков и секреты Kubernetes-кластеров, паковал в tpcp. и отправлял на управляющий сервер, после чего уничтожал за собой все следы.

В Windows атака выглядела иначе: пакет скачивал файл hangup., извлекал из него исполняемый файл и сохранял в папку автозагрузки как msbuild.. То есть на машинах с Windows TeamPCP стремилась закрепиться в системе, в отличие от Linux и macOS.
Любопытно, что технику стеганографии в WAV-файлах TeamPCP применяла и раньше — например, в вайпере Kamikaze (о нем речь пойдет дальше). Но если в Kamikaze пейлоад встраивался прямо в аудио в виде Base64, то для Telnyx его подгружали с удаленного сервера в поксоренном виде.
Вайпер Kamikaze
В рамках той же кампании TeamPCP использовала компонент, который плохо сочетается с обычным портретом финансово мотивированной группировки: деструктивный пейлоад под названием Kamikaze, нацеленный исключительно на иранские системы.
Вайпер доставлялся через CanisterWorm и иногда через незащищенные инстансы Docker. Перед запуском пейлоад проверял несколько индикаторов: тегеранскую таймзону, иранскую локаль, признак fa_IR. Если ничего из этого не обнаруживалось, на машине развертывался только бэкдор CanisterWorm.
В кластерах Kubernetes в иранской таймзоне Kamikaze разворачивал привилегированный DaemonSet с именем host-provisioner-iran и контейнером kamikaze на каждой ноде, включая control plane, после чего запускал принудительную очистку файловых систем и перезагрузку.
На обычных Linux-хостах, если процесс был запущен как root, выполнялась команда rm . Если нет — атакующие пытались повысить привилегии через passwordless sudo.
Чарли Эриксен (Charlie Eriksen) из компании Aikido, который отслеживал эволюцию пейлоада в реальном времени, насчитал шесть итераций Kamikaze только за 22 марта. Ранние версии фокусировались на побеге из Kubernetes, а в более поздние добавили распространение по SSH, эксплуатацию Docker API через порт 2375 и стеганографию в WAV.
По словам Эриксена, подтверждений реального ущерба от атак вайпера нет, но сама связка финансово мотивированной кампании с геотаргетированной деструктивной малварью не имеет объяснений.
Исследователи допускают, что это могла быть операция со смешанными целями, либо деструктивный модуль был заказан кем‑то параллельно с основной кампанией, либо же это была попытка хакеров привлечь к себе внимание, а группа намеренно наращивала «медийность».
Cisco, Еврокомиссия, Mercor и другие
Следом начал проявляться масштаб проблемы и появились первые downstream-жертвы.
Одной из первых публично зафиксированных жертв этого каскада стала компания Cisco. Атакующие воспользовались учетными данными, украденными в ходе компрометации Trivy, и пробрались во внутреннюю build- и dev-среду компании.
В результате с десятков машин, включая рабочие станции разработчиков, утекли AWS-ключи, которые затем использовались для несанкционированных действий в облачных аккаунтах компании. По данным СМИ, атакующие клонировали более 300 GitHub-репозиториев, среди которых были исходные коды ИИ‑продуктов Cisco (включая AI Assistants, AI Defense и еще не вышедшие решения). Хуже того, часть похищенных репозиториев могла принадлежать корпоративным клиентам компании, включая банки, BPO-компании и американские госструктуры.
Второй крупной жертвой стала Европейская комиссия. 24 марта 2026 года ЕК предупредила о компрометации своей облачной инфраструктуры, обслуживающей платформу Europa.eu, а ответственность за атаку поначалу взяла на себя вымогательская группировка ShinyHunters.

Как объясняли специалисты CERT-EU, точкой входа злоумышленников стал API-ключ от AWS, скомпрометированный еще 19 марта в ходе атаки на Trivy. Европейская комиссия использовала зараженную версию сканера, не подозревая об этом: инструмент пришел по обычным каналам обновления.
Получив скомпрометированный ключ, атакующие создали и привязали к учетной записи новый ключ доступа и приступили к разведке. В дело пошел TruffleHog — опенсорсный инструмент для поиска секретов и валидации учетных данных AWS через Security Token Service.
В итоге утечка затронула данные 71 клиента хостинга Europa.eu — 42 внутренних подразделения Европейской комиссии и не менее 29 других структур ЕС. Общий объем украденных данных в несжатом виде составил 340 Гбайт, включая имена, адреса электронной почты и логины. Около 2,22 Гбайт (51 992 файла) пришлись на автоматические уведомления о недоставке, включая сообщения с оригинальным пользовательским контентом. То есть в них тоже могли содержаться персональные данные.
Еще одной публично подтвержденной жертвой стал ИИ‑стартап Mercor, который специализируется на найме через ИИ. Представители компании написали в социальных сетях:
Недавно мы обнаружили, что оказались одной из тысяч компаний, затронутых атакой на цепочку поставок LiteLLM.
При этом вымогательская группировка Lapsus$ заявила, что украла у стартапа 4 Тбайт данных, включая 939 Гбайт исходного кода, и выставила этот дамп на продажу.
Другой крупной жертвой этих атак стала швейцарская компания Sportradar — поставщик спортивных данных и аналитики для NBA, ESPN, Nike, IMG Arena, Bet365 и FIBA. 25 марта группировки TeamPCP и вымогательская группировка Vect провели совместную атаку против Sportradar, использовав скомпрометированные через Trivy учетные данные.
В итоге утечка затронула около 26 тысяч пользовательских записей, профили 23 169 спортсменов, восемь паролей продакшен‑БД RDS, а также 328 пар API-ключей, связывающих Sportradar со 161 клиентской организацией. Похищенный у компании дамп хакеры выставили на продажу за 50 тысяч долларов США.
TruffleHog и AWS
Если первые этапы кампании выглядели как классическая атака на цепочку поставок, то фаза постэксплуатации, которую изучили аналитики компании Wiz, скорее походила на полноценный взлом облачных сред.
По информации исследователей, TeamPCP не теряла времени и сразу переходила к валидации украденных учетных данных. TruffleHog, который был замечен в инциденте со взломом Еврокомиссии, использовался для проверки, что украденные ключи AWS, секреты Azure-приложений и SaaS-токены все еще работают и активны. В течение 24 ч после валидации группировка переходила к разведке в скомпрометированных AWS-средах: перечисляла сервисы с фокусом на контейнеры, изучала кластеры и task definitions, добиралась до AWS Secrets Manager.
После в ход шли воркфлоу GitHub для исполнения кода в среде жертвы и ECS Exec для запуска bash-команд и Python-скриптов прямо в контейнерах AWS. Из репозиториев на GitHub утекали исходники, конфигурационные файлы и секреты. Из AWS-инфраструктуры — содержимое S3-бакетов, Secrets Manager и баз данных.
Постэксплуатационная активность TeamPCP сосредоточилась на компрометации дополнительных секретов и эксфильтрации огромных объемов данных из репозиториев и облачных ресурсов, — сообщали в Wiz. — Украденные данные и секреты, вероятно, передаются другим группам для дальнейших операций.
Связь с Lapsus$
Параллельно с самими атаками TeamPCP начала открыто хвалиться своими успехами в Telegram и заявила о планах «похищать терабайты коммерческих секретов вместе с новыми партнерами».

Хотя эти партнеры не названы напрямую, практически одновременно в Telegram-канале группировки Lapsus$ появились посты о предстоящей атаке на цепочку поставок, связанной с TeamPCP.

На конференции RSAC 2026 технический директор компании Mandiant Consulting Чарльз Кармакал (Charles Carmakal) подтвердил связь между группами. По его словам, на тот момент было известно более чем о тысяче скомпрометированных сред SaaS и это число могло значительно вырасти. Кармакал отдельно подчеркнул, что участники атак базируются преимущественно в США, Великобритании, Канаде и Западной Европе и «известны своей исключительной агрессивностью в вопросах вымогательства».
По данным аналитиков Palo Alto Networks, помимо Lapsus$, TeamPCP сотрудничает с операторами шифровальщика CipherForce и начинающей вымогательской группировкой Vect. Представители последней даже выложили на одном из хакерских форумов открытое заявление о партнерстве с TeamPCP.

Хенрик Плейт (Henrik Plate), глава исследовательского отдела Endor Labs, объяснил логику этого альянса так:
Группировка предположительно собрала массу учетных данных в ходе последних атак, и кооперация [с вымогателями] позволяет масштабировать их использование, пока жертвы не завершили обновление секретов.
В свою очередь специалисты Wiz подчеркивали, что горизонтальное распространение малвари по экосистеме создает «эффект снежного кома» и кампания, скорее всего, продолжит расширяться:
Мы наблюдаем опасное сближение групп, атакующих цепочки поставок, с известными вымогателями вроде Lapsus$.
Параллельно с этим аналитики обнаружили еще одну интересную связь. 31 марта произошла отдельная атака на популярный npm-пакет Axios, которую специалисты Elastic Security Labs и Google Threat Intelligence Group приписывают северокорейской группировке UNC1069 (связана с Lazarus, использует бэкдор семейства WAVESHAPER).
Рабочая теория исследователей гласит, что CanisterWorm, запущенный TeamPCP, собрал npm-токены с тысяч CI/CD-окружений, после чего эти токены были переданы или проданы участникам UNC1069 для атаки на Axios. Если эта версия подтвердится, это будет означать, что TeamPCP работает не только с вымогателями, но и с северокорейскими хакерами в роли брокера доступов.
Цифры и выводы
В сухом остатке мартовская кампания TeamPCP выглядела следующим образом:
- по данным SANS Institute, атака на Trivy затронула свыше 10 тысяч CI/CD-воркфлоу, ссылавшихся на скомпрометированные GitHub Actions;
- по оценкам исследователей Vx-Underground, в общей сложности с 500 тысяч зараженных машин украли около 300 Гбайт данных;
- LiteLLM присутствует в 36% облачных сред, которые мониторят специалисты Wiz;
- в Mandiant отслеживали более 1000 пострадавших SaaS-сред с прогнозом роста на порядок;
- жертвы обнаружились повсеместно, но больше всего пострадавших, по данным «Лаборатории Касперского», было в России, Китае, Бразилии, Нидерландах и ОАЭ.
Технически в этих атаках не использовались ни 0-day, ни новые эксплоиты. Опасный паттерн pull_request_target был задокументирован еще несколько лет тому назад. Изменяемые теги GitHub Actions — общеизвестная проблема. Долгоживущие PAT с доступом к нескольким организациям — тоже классическая ошибка.
Эксперты напоминают, что всегда рекомендуется привязывать GitHub Actions к полным SHA коммитов, а не к тегам и относиться к CI/CD-раннерам с той же серьезностью, что и к продакшен‑хостам. PyPI Trusted Publishers с OIDC-аутентификацией убирает из пайплайнов долгоживущие токены, и, если бы разработчики LiteLLM использовали этот механизм, украденный PYPI_PUBLISH был бы бесполезен для хакеров.
Также во многих отчетах подчеркивается, что сервисные аккаунты не должны содержать долгоживущие PAT с административным доступом к разным организациям — из‑за этого Argon-DevOps-Mgt стал единой точкой отказа сразу для двух организаций Aqua Security.
Ротация секретов после инцидента должна охватывать все системы, иначе атакующие могут сохранить доступ к валидной сессии на неопределенный срок (что и произошло между февральским и мартовским эпизодами).
Теперь всем, кто использовал вредоносные версии Trivy, GitHub Actions Checkmarx, LiteLLM, Telnyx и так далее, рекомендуется считать свои секреты полностью скомпрометированными и сменить всё — от облачных учетных данных и SSH-ключей до API-токенов и паролей от баз данных.
