19 мая 2026 года один из крупнейших хостингов разработческого кода, GitHub, объявил о расследовании несанкционированного доступа к своим внутренним репозиториям. Причиной послужило вредоносное расширение для популярного редактора кода VS Code (визуальной среды разработки от Microsoft), которое было опубликовано днём ранее. Этот инцидент затронул миллионы разработчиков по всему миру, поскольку GitHub хранит исходные коды бесчисленных проектов и является критической частью инфраструктуры современной разработки.
Описание
Вскоре после публичного раскрытия атаки группировка TeamPCP заявила, что выставляет украденный исходный код GitHub на аукцион. Саму сделку, как сообщили в той же соцсети X, брокером назначили участников известной хакерской группы LAPSUS$. Утечка произошла не в результате прямой атаки на инфраструктуру GitHub, а через цепочку поставок - через скомпрометированное расширение Nx Console версии 18.95.0, опубликованное 18 мая. Аналитики выяснили, что вредоносный код в этом расширении и в пакетах @antv был частью одной кампании по распространению бэкдора под названием Mini Shai‑Hulud. Он устанавливал на заражённую машину бэкдор на языке Python, который обеспечивал связь с командным центром (C2) через файл ~/.local/share/kitty/cat.py.
Первоначальная компрометация произошла из‑за кражи учётных данных GitHub у одного из разработчиков Nx. Злоумышленники использовали их, чтобы опубликовать подменённое расширение в официальном маркете VS Code. В состав вредоносного пакета входил файл main.js - минифицированный и сильно обфусцированный скрипт на JavaScript. При активации рабочей области он маскировался под легитимный серверный функционал MCP (аналогичный механизму взаимодействия между компонентами) и загружал дополнительный пакет "nx‑next" из заброшенного коммита в официальном репозитории nrwl/nx. Этот пакет содержал второй этап полезной нагрузки - файл index.js, также написанный на JavaScript с многослойной обфускацией.
Методы запутывания кода включали перемешанную таблицу строк, расшифровку строк во время выполнения с помощью алгоритма PBKDF2 (производная функция на основе пароля с солью), разбитые и искажённые идентификаторы, а также зашифрованные блоки дополнительных данных. Чтобы избежать срабатывания в аналитических средах, скрипт проверял количество ядер процессора на хосте и существование файла блокировки во временной директории. Геолокационные проверки на основе часового пояса и локали запрещали выполнение в странах СНГ, включая Россию.
Для закрепления в системе вредонос устанавливал демон kitty‑monitor и уже упомянутый файл cat.py, который давал злоумышленникам постоянный доступ к командному центру. В предыдущих атаках тот же демон использовался для запросов к API GitHub за токенами из "мёртвых" репозиториев - если токен становился недействительным, срабатывал аварийный переключатель. Инфраструктура C2 также могла принимать команды, находя в недавних коммитах ключевое слово "firedalazer" и выполняя указанные там инструкции.
Затем вредоносное расширение начинало сбор секретов и учётных данных. Оно искало токены для систем управления пакетами PyPi и NPM, для менеджеров паролей Bitwarden и 1Password, а также для облачной платформы AWS. Токены AWS захватывались через запросы к локальному адресу 169.254.169.254 - это так называемый APIPA‑адрес, который используется для обращения к сервису метаданных экземпляра AWS IMDS. Кроме того, скрипт сканировал процессы Linux через /proc, чтобы найти процесс GitHub Actions Runner.Worker, который, как известно, хранит в памяти токены и другие секреты в открытом виде. После обнаружения эти данные извлекались и передавались наружу.
Особая опасность заключается в том, что атака предусматривает уничтожение данных на заражённой машине в случае обнаружения компрометации. Если "мёртвые" репозитории удалялись до того, как вредоносное расширение было деактивировано, срабатывал триггер, и сценарий удалял домашнюю папку пользователя ~/ и папку ~/Documents. Это могло привести к полной потере личных файлов разработчика.
Атака группы TeamPCP - яркий пример того, как злоумышленники нацеливаются на учётные данные разработчиков, чтобы внедрить вредоносные расширения в цепочку поставок программного обеспечения. Инцидент с Nx Console уже назвали одним из самых масштабных за последние годы. Он напоминает, что даже доверенное расширение для редактора кода может стать вектором проникновения, если скомпрометированы учётные записи его авторов. Для защиты от подобных угроз специалистам рекомендуется строго соблюдать дисциплину управления учётными данными: никогда не хранить секреты в открытом виде, внедрять многофакторную аутентификацию (MFA) для всех сервисных аккаунтов, использовать IMDSv2 для AWS и придерживаться принципа минимальных привилегий при настройке доступа к контейнерам и кластерам Kubernetes. Однако главный вывод из этой истории - необходимость проверки подлинности и целостности каждого расширения, а также мониторинг подозрительной сетевой активности на рабочих станциях разработчиков. Утечка исходного кода GitHub стала серьёзным предупреждением для всей отрасли: безопасность цепочки поставок вновь оказалась под вопросом.
Индикаторы компрометации
IPv4
- 169.254.169.254
- 169.254.170.2
Domains
- fulcio.sigstore.dev
- rekor.sigstore.dev
SHA1
- 558b09d7ad0d1660e2a0fb8a06da81a6f42e06d2
- 9d88f040c44b5f4d5f9db15ff89310776c168e99
- acfc3f957a63b4cde93ff645f2b6bf26a8ed1bbf
- ba642fe2c7c65e42dd7f6444b83023dc6827e08c
SHA256
- 1a4afce34918bdc74ae3f31edaffffaa0ee074d83618f53edfd88137927340b8
- 43f2b001846c4966073ebffa5be8f15e491a1e7d32bbd805d57406ff540e0dd9
- b0cefb66b953e5184b6adb3035e9e267335ac5eabfe1848e07834777b9397b74
- e7347d90653efc565f03733a95e9209d78f9cfa81e31ff2b2dd9d48d75a4b8b1