В марте 2026 года сообщество разработчиков и специалистов по информационной безопасности столкнулось с масштабной и высокотехнологичной кампанией, нацеленной на ключевые элементы современной облачной и DevOps-экосистемы. Группировка угроз, известная как TeamPCP, провела серию скоординированных атак на цепочку поставок программного обеспечения, скомпрометировав популярные инструменты безопасности и разработки. Её деятельность демонстрирует тревожную эволюцию тактик, когда злоумышленники переходят от точечных взломов к системному заражению инфраструктуры, от которой зависит создание и развёртывание приложений по всему миру. Инцидент затронул не только отдельных разработчиков, но и целые организации, полагающиеся на автоматизированные конвейеры непрерывной интеграции и доставки.
Описание
Первые признаки атаки были обнаружены 19 марта, когда под удар попал сканер уязвимостей Trivy от компании Aqua Security. Вслед за ним были скомпрометированы продукты Checkmarx, фреймворк LiteLLM для работы с языковыми моделями и платформа связи Telnyx. Группировка использовала широкий арсенал техник, включая поддельные коммиты в репозитории, отравление тегов и выполнение файловых полезных нагрузок непосредственно в памяти, что значительно затрудняет их обнаружение традиционными средствами защиты. Анализ инцидента позволяет выделить единый и изощрённый почерк атакующих, которые продемонстрировали глубокое понимание работы облачных платформ, систем оркестрации контейнеров и процессов разработки.
Центральным элементом этой кампании стали вредоносные оболочки, или шеллы, которые использовались на разных этапах атаки для достижения конкретных целей. Всего в ходе анализа компрометации Trivy было выявлено десять таких сценариев, размер которых варьировался от 179 байт до 17,18 килобайт. Самый ранний файл датирован 20 марта, однако, судя по данным VirusTotal, активность группы может отслеживаться с декабря 2025 года, что указывает на длительную и тщательную подготовку операции. Каждый шелл выполнял специфическую функцию, образуя многоступенчатую цепочку заражения.
Наиболее компактный скрипт, размером всего 179 байт, был сфокусирован исключительно на хищении учётных данных. Он сканировал память всех запущенных процессов в поисках строк, содержащих "GITHUB_TOKEN", после чего отправлял найденные данные на контролируемый злоумышленниками домен, имитирующий сайт Aqua Security. Этот метод демонстрирует целенаправленный подход к краже высокоценных токенов доступа, которые широко используются в средах непрерывной интеграции. Другие, более сложные оболочки, такие как "0a8cf90379e91837f87a8b7cc0d529c2", выполняли функцию загрузчиков второго этапа. Их задачей была подготовка среды для атаки на кластеры Kubernetes: проверка наличия утилиты "kubectl", её автоматическая установка при необходимости и последующая загрузка из сети и выполнение в памяти управляющего скрипта на Python.
Особый интерес представляет оболочка "d761a6a7ae9f2254bd81ac234033a8b8", которая представляет собой гибрид легитимного и вредоносного кода. Внедрённая в официальный образ действия Trivy на GitHub, она начинала выполняться автоматически при запуске любого рабочего процесса, использовавшего скомпрометированную версию инструмента. Её функционал был гораздо шире: она не только искала секреты в памяти процессов GitHub Actions, но и проводила масштабный сбор данных с файловой системы, включая SSH-ключи, облачные учётные данные, конфигурации Kubernetes и даже ключи криптокошельков. Собранная информация упаковывалась, шифровалась с использованием гибридной схемы AES-256 и RSA-4096 и эксфильтрировалась. В качестве резервного канала утечки злоумышленники использовали механизм GitHub, создавая от имени жертвы публичный репозиторий и загружая туда украденные данные.
Аналогичные методы были применены и в атаке на пакет LiteLLM в репозитории PyPI. Вредоносные версии 1.82.7 и 1.82.8 содержали код, который автоматически запускался при старте интерпретатора Python благодаря специальному файлу ".pth". Как сообщается в аналитических материалах, этот скрипт выполнял схожие действия по сбору чувствительной информации с последующей отправкой на поддельный домен, стилизованный под легитимный сервис LiteLLM. Особенностью этой кампании стало также появление детектирующего шелла, который, по всей видимости, использовался самой группировкой для проверки успешности внедрения или для диагностики среды.
Проведённый анализ позволяет систематизировать основные тактики, техники и процедуры группировки TeamPCP в рамках модели MITRE ATT&CK. Среди ключевых из них можно выделить постоянное сканирование памяти процессов для извлечения секретов, активное использование утилиты "kubectl" для перемещения внутри кластеров Kubernetes, развёртывание привилегированных подов и наборов демонов, а также применение стеганографии для сокрытия полезной нагрузки в аудиофайлах. Для обеспечения скрытности атакующие широко использовали выполнение кода непосредственно в оперативной памяти, самоудаление скриптов после запуска и маскировку под легитимную активность, например, под сканирование уязвимостей.
Каналы управления и сбора данных также отличались разнообразием и изобретательностью. Помимо классических доменов с опечатками, имитирующих сайты известных компаний, группа использовала туннели Cloudflare для обхода сетевых ограничений, блокчейн Internet Computer Protocol для децентрализованного взаимодействия и так называемые "мёртвые почтовые ящики" на GitHub, когда данные временно размещаются в публичных репозиториях. Подобный арсенал свидетельствует о высоком уровне профессионализма и ресурсообеспеченности угрозы.
Последствия подобных атак на цепочку поставок носят каскадный характер. Компрометация одного широко используемого инструмента, такого как сканер безопасности или библиотека для работы с ИИ, может привести к заражению тысяч сред непрерывной интеграции, через которые затем происходит дальнейшее распространение. Украденные облачные учётные данные и токены доступа к репозиториям открывают путь для новых, ещё более масштабных атак, включая кражу интеллектуальной собственности, саботаж процессов сборки и развёртывания или криптоджекинг. Учитывая растущую зависимость бизнеса от автоматизированных DevOps-практик, ущерб от таких инцидентов может исчисляться миллионами долларов и неделями простоя.
Данный случай наглядно показывает, что традиционный подход, основанный лишь на блокировке известных индикаторов компрометации, в современном ландшафте угроз недостаточен. Противопоставление таким продвинутым группировкам требует комплексной стратегии безопасности, включающей строгий контроль целостности и происхождения зависимостей, регулярный аудит разрешений и токенов доступа в CI/CD-средах, мониторинг аномальной активности в кластерах Kubernetes и, что наиболее важно, смещение фокуса с реагирования на последствия к активному поиску тактик и методик злоумышленников. Только понимание их модификации операнди позволяет выстраивать эффективную и упреждающую защиту.
Индикаторы компрометации
IPv4
- 169.254.170.2
- 44.252.85.168
- 45.148.10.212
- 46.151.182.203
- 67.217.57.240
- 83.142.209.11
- 83.142.209.203
Domains
- aquasecurtiy.org
- championships-peoples-point-cassette.trycloudflare.com
- checkmarx.zone
- create-sensitivity-grad-sequence.trycloudflare.com
- investigation-launches-hearings-copying.trycloudflare.com
- models.litellm.cloud
- plug-tab-protective-relay.trycloudflare.com
- souls-entire-defined-routes.trycloudflare.com
- tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io
Onion Domains
- ffxjhdp4aaucgrkh5jy5xb4f4lhwre7wqxteg27i24pfyb2uwlwxgoyd.onion
URLs
- http://67.217.57.240:666/files/pcpcat.py
MD5
- 0a8cf90379e91837f87a8b7cc0d529c2
- 18af2b181388d1e142d5cb45300aff49
- 2dbedfba5f6bf5f69b471447e4161311
- 30767275ca828ec1c9d62baccbb0cdf1
- 3f88eca0a421a81595ee5669e6fd0816
- 4581ab19daebfd2e96962645e798b6fa
- 4ac3e3b1f0d054a4ed682a1d6a53ddb3
- 692238a56e1941b1d92df3d8dfd513eb
- 7e521bb895d7329b7fb2b2a8736f4b19
- 98021dca558b69e93a20d912200f1782
- a0d6118b15ff55fd2dc63b72fbc54108
- ab3441f16434b948a1bc653c2822e114
- af6b28b9565fe1022ab904151393fd62
- af915698efd4542a58fe0b293f4a9e40
- b676c0703f8e4d6a198aa370ca4f5405
- b72c2be9651ede5f337926c6b5830624
- c48ead53448a9c62ccd1dd62e2111011
- ccd59fd564a4780c3186ef43d0d02723
- d761a6a7ae9f2254bd81ac234033a8b8
- e4f074172ffde75287346d207debee39
- e8ad669f9a29983f7252ebbd40e4c4aa
- ecce2568792b0fd029a8f3b056468125
- ff65f5d264b36a8eb3a6e8037d29fdcb