Хакерская группа отравляет open-source код в беспрецедентном масштабе
«Как лесной пожар»
GitHub стал очередной жертвой TeamPCP — группировки, устроившей настоящую цепную атаку на программные цепочки поставок.
Supply chain attack — когда хакеры подменяют легитимный софт, встраивая вредоносный код, — когда-то был редкостью. Но угроза пугала: любая безобидная программа могла стать плацдармом внутри сети жертвы. Теперь одна группа киберпреступников превратила эту редкую угрозу в почти еженедельное событие. Она скомпрометировала сотни open-source инструментов, вымогает деньги у жертв и сеет недоверие к целой экосистеме, на которой строится мировой софт.
Во вторник вечером GitHub сообщил о взломе через supply chain attack. Разработчик компании установил «отравленное» расширение для VSCode — плагина популярного редактора кода (как и сам GitHub, он принадлежит Microsoft). Хакеры из TeamPCP заявляют, что получили доступ примерно к 4 000 репозиториям. GitHub подтвердила обнаружение не менее 3 800 скомпрометированных репозиториев. Но компания отметила: все они содержали только её внутренний код, а не код клиентов.
«Мы здесь сегодня, чтобы выставить на продажу исходный код GitHub и внутренние структуры компании», — написала TeamPCP на BreachForums, форуме и маркетплейсе киберпреступников. «Всё по основной платформе там есть, и я с удовольствием отправлю образцы заинтересованным покупателям для подтверждения подлинности».
Взлом GitHub — лишь последний эпизод в самой длинной из известных серий supply chain атак. Конца ей не видно. Компания Socket специализируется на безопасности программных цепочек поставок. По её данным, за последние месяцы TeamPCP провела 20 «волн» атак. Группировка внедрила малварь более чем в 500 различных программ. Если считать все версии скомпрометированного кода, цифра превышает тысячу.
Эти заражённые пакеты позволили TeamPCP взломать сотни компаний, установивших этот софт. Об этом говорит Бен Рид, руководитель стратегической угроз-разведки в облачной компании Wiz. GitHub — последняя в длинном списке жертв. В него входят также OpenAI и Mercor. «Возможно, это их крупнейший взлом, — говорит Рид о случае с GitHub. — Но для каждой пострадавшей компании это большое событие. Качественно он не отличается от 14 взломов на прошлой неделе».
Маховик компрометаций
Основная тактика TeamPCP — циклическая эксплуатация разработчиков. Хакеры получают доступ к сети, где создается популярный open-source инструмент. Например, то самое расширение VSCode, приведшее к взлому GitHub. Или библиотека визуализации данных AntV, захваченная на этой неделе. В инструмент внедряется малварь. Она попадает на машины других разработчиков, включая тех, кто создаёт свои инструменты для программистов.
Малварь позволяет TeamPCP красть учётные данные и публиковать вредоносные версии уже этих инструментов. Цикл повторяется, и набор скомпрометированных сетей растёт. «Это маховик компрометаций цепочек поставок, — говорит Рид. — Он самовоспроизводящийся, и оказался невероятно эффективным способом проникновения в сети и кражи данных».
В последнее время группировка автоматизировала многие атаки. Для этого используется самораспространяющийся червь, получивший название Mini Shai-Hulud. Имя происходит от GitHub-репозиториев, которые создаёт червь. Они содержат зашифрованные учётные данные жертв. В описании каждого фигурирует фраза «A Mini Shai-Hulud Has Appeared» вместе с отсылками к sci-fi роману «Дюна». Это отсылает не только к песчаным червям книги, но и к подобному черву Shai-Hulud, появившемуся в сентябре. Однако нет доказательств, что TeamPCP стояла за тем ранним вредоносом.
«Они точно гонятся за громким резонансом. Им важна максимальная огласка», — говорит Филипп Буркхардт, руководитель исследований в Socket. Он отслеживает TeamPCP уже несколько месяцев. «Они любят хвастаться». Сайт группировки в даркнете оформлен в стиле «Матрицы»: каскад нулей и единиц, регги-саундтрек и надпись «TEAMPCP: The Cats Hijacking Your Supply Chains». На сайте есть ссылки на «деловые контакты», вероятно, используемые для переговоров о выкупе.
От Next.js до ransomware-as-a-service
До перехода к текущей стратегии TeamPCP появилась в конце 2025 года. Тогда группировка использовала ошибки настройки облачной инфраструктуры и уязвимость в инструменте веб-разработки Next.js. Это позволило ей развернуть ботнет для кражи учётных данных и майнинга криптовалют. Именно тогда группировка начала активно использовать червей. Она всё успешнее захватывала статические учётные данные и токены аутентификации (ключи доступа к сервисам), чтобы углубляться в системы жертв.
«Это было как лесной пожар — очень быстро, — говорит Натаниэль Куист, руководитель команды Cortex Cloud в Palo Alto Networks. — Они находят учётные данные, personal access tokens, и дальше вопрос только в том, как далеко заведёт один токен. Думаю, мы продолжим видеть эти техники. Угрозы знают, что они работают, и бегут с этим».
TeamPCP мотивирована финансово и часто развёртывает ransomware или кампании по вымогательству данных. Но также готова продавать данные любому покупателю. В случае с GitHub, например, группировка написала на BreachForums: «Это не выкуп. Нам не интересно вымогать у GitHub. Один покупатель — и мы удаляем данные у себя».
Там же содержалась завуалированная угроза, возможно, направленная на то, чтобы заставить компанию заплатить: «Похоже, наш выход на пенсию скоро, так что если покупатель не найдётся, мы сольём всё бесплатно».
Ситуация усложнилась в апреле. TeamPCP перешла к модели ransomware-as-a-service (сдача вирусов-вымогателей в аренду), заключив партнёрство с платформами BreachForums и DragonForce. Группировка иногда вмешивалась и в геополитику. Она задействовала географически таргетированный wiper (названный CanisterWorm исследователями). Wiper — это программа для безвозвратного удаления данных. Вирус заражал любую Kubernetes-инфраструктуру (систему управления контейнерами). Но деструктивная нагрузка задействовалась только против иранских целей. На этой неделе некая сущность, назвавшаяся TeamPCP, слила исходный код оригинального червя Shai Hulud вместе с подробной документацией. Мотивы этого слива неясны.
Каскадный эффект
Масштаб атак резко расширился в марте. TeamPCP взломала больше утилит, что привело к каскадному эффекту. Группировка встроила infostealer (вирус для кражи данных) в open-source сканер безопасности Trivy. Затем она использовала украденные учётные данные для компрометации отдельных версий AI-инструмента LiteLLM. Он размещён на популярном Python-репозитории PyPI. Также группировка скомпрометировала инфраструктуру компании Checkmarx. Её жертвы: сервер разработки pgserve, библиотека веб-приложений TanStack и enterprise AI-платформа Mistral AI.
Последствия серьёзны. Атаки TeamPCP на поставщиков ПО привели не только к взлому GitHub. Был взломан публичный сайт Европейской комиссии и компания Mercor. Злоумышленники скомпрометировали устройства двух сотрудников OpenAI, и это лишь часть инцидентов. Но Куист из Palo Alto подчёркивает: организации могут защитить себя базовой «гигиеной» безопасности. Это аккуратное управление токенами аутентификации и ограничение доступа везде, где это возможно.
«Главный фактор, делающий эту операцию успешной, — долгоживущие учётные данные в этих окружениях, — говорит он. — Критически важно менять токены, даже если вы не используете LiteLLM или какие-либо из скомпрометированных пакетов. Если у вас есть personal access tokens для Gitlab и GitHub — ротируйте их. И учётные данные AWS, Azure, GCP, Alibaba, Oracle — всё это украдено».
Как защититься
Волны отравленного кода TeamPCP ставят сложный вопрос. Как безопасно использовать open-source в эпоху массовых supply chain атак? Рид из Wiz рекомендует такие меры, как «age-gating» обновлений. Это проверка и установка патчей безопасности с отказом от немедленного обновления кода, который только что опубликован и может быть вредоносным.
В одном из недавних случаев Wiz обнаружила компрометацию и предупредила клиентов за минуты. Но многие пользователи ПО имели включённые auto-updates и уже скачали вредоносную версию. «Не стоит всегда ставить самую свежую версию», — говорит Рид.
На фоне эпидемии supply chain атак, развязанной TeamPCP, Буркхардт из Socket говорит о необходимости подхода «доверяй, но проверяй». Это анализ обновлений на наличие малвари перед развёртыванием в сети. Также он советует использовать «период остывания», который рекомендует Рид, перед скачиванием и запуском кода.
«Когда код попал на вашу машину — уже поздно».
