Сканер уязвимостей, который сам стал главной уязвимостью. Ироничная история взлома Trivy.

leer en español

Сканер уязвимостей, который сам стал главной уязвимостью. Ироничная история взлома Trivy.

Злоумышленники научились доставать секреты прямо из оперативной памяти серверов.

image

Одна атака на инструмент разработчиков за сутки переросла в цепную реакцию, которая затронула уже десятки проектов. Сначала злоумышленники взломали популярный сканер уязвимостей Trivy и встроили в него код для кражи учётных данных, а затем с помощью украденных доступов начали распространять вредоносные пакеты в NPM.

19 марта группировка TeamPCP скомпрометировала инфраструктуру Aqua Security и подменила официальные версии Trivy и связанные действия GitHub. Пользователи устанавливали инструмент как обычно, но вместе с ним получали вредоносный компонент, который собирал токены, ключи и другие секреты. Уже на следующий день те же данные, по всей видимости, использовали для следующего этапа атаки – массового заражения пакетов в экосистеме NPM.

Атака оказалась многоуровневой. Злоумышленники подделали изменения в репозиториях, маскируясь под реальных участников проекта, а затем выпустили заражённую версию Trivy 0.69.4. Вредоносный код загружался с домена, внешне похожего на официальный сайт Aqua Security, и попадал в опубликованные сборки на GitHub, Docker Hub и других площадках.

После запуска заражённый Trivy работал как обычно, параллельно собирая конфиденциальные данные. Программа вытаскивала переменные окружения, ключи доступа, учётные данные облачных сервисов и токены Kubernetes, а затем шифровала их и отправляла на удалённый сервер. Если основной канал не работал, вредоносный код использовал запасной вариант – создавал репозиторий с названием tpcp-docs в учётной записи жертвы и выгружал туда архив с украденными данными.

Отдельный сценарий предназначался для систем сборки. Заражённые действия GitHub читали память процесса Runner.Worker, чтобы вытащить секреты прямо из оперативной памяти, а также проходились по файловой системе в поисках SSH-ключей, учётных данных облаков и даже криптокошельков. Собранные данные шифровались с использованием стойких алгоритмов и отправлялись на сервер злоумышленников через туннель Cloudflare.

Если вредоносный код обнаруживал, что работает не в среде GitHub Actions, а на машине разработчика, он закреплялся в системе. Для этого создавался скрипт sysmon.py и служба systemd, которая регулярно обращалась к тому же удалённому узлу в сети Internet Computer и загружала дополнительные компоненты. Именно этот механизм позже лёг в основу CanisterWorm.

Проблема усугубилась тем, что злоумышленники сохранили доступ после предыдущего инцидента и продолжили развивать атаку. Уже 22 марта они опубликовали новые заражённые образы Trivy (версии 0.69.5 и 0.69.6) в Docker Hub, а также выложили внутренние репозитории Aqua Security в открытый доступ. Параллельно инфраструктура управления начала раздавать новый вредоносный скрипт kamikaze.sh.

Именно украденные токены и учётные данные стали топливом для следующего этапа – массового заражения пакетов в NPM. CanisterWorm использует те же принципы закрепления и связи с управляющей инфраструктурой, но добавляет автоматическое распространение. Теперь каждая заражённая машина пытается найти токены NPM и с их помощью публикует вредоносные обновления в доступных пакетах.

По сути, цепочка выглядит так: сначала компрометация инструмента разработки, затем кража секретов, после чего – заражение экосистемы зависимостей. Такой сценарий опасен тем, что затрагивает не одну компанию, а сразу множество проектов, которые даже не связаны напрямую.

На момент анализа управляющий узел периодически отдавал безобидные ссылки, но позже начал раздавать полноценную вредоносную нагрузку. Часть инфраструктуры уже заблокировали за нарушение правил, однако атака продолжает развиваться, а злоумышленники демонстрируют, что готовы быстро менять тактику.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS