Ad
Инциденты

GhostAction прячет похититель ключей в файле шрифта

Маша Даровская
By Маша Даровская , IT-редактор и автор
GhostAction прячет похититель ключей в файле шрифта
Обложка © Anonhaven

В 94 репозиториях GitHub обнаружили продолжение атаки GhostAction: злоумышленники добавляли в проекты JavaScript для кражи учетных данных, замаскированный под обычный файл шрифта. Вместе с ним появлялась задача Visual Studio Code (VS Code), которая могла запустить вредоносный код при открытии проекта. Атака нацелена не только на секреты в GitHub Actions, как раньше, но и на ключи, сохраненные на компьютере разработчика.

О новой стадии кампании 16 октября сообщила исследовательская группа OpenSourceMalware. Ее специалисты обнаружили 94 скомпрометированных репозитория 66 владельцев. Из них 79 удалось изучить, остальные уже удалили, переименовали или сделали приватными. Это количество зараженных проектов, а не подтвержденное число взломанных рабочих станций.

Файл шрифта оказался JavaScript-стилером

В зараженных проектах находили скрытую конфигурацию `.vscode/tasks.json` и файл `public/fonts/fa-solid-400.woff2`. Название последнего напоминает ресурс популярного набора иконок Font Awesome, однако вместо бинарного веб-шрифта внутри находился 38-строчный JavaScript. Конфигурация редактора предписывала выполнять его с помощью Node.js под видом задачи `eslint-check`. Дополнительно атакующие помещали в репозитории еще один workflow для GitHub Actions.

Технический прием похож на схему PolinRider, исследованную ранее в 2026 году: та кампания также использовала задачи VS Code и поддельные шрифты. Но совпадение приема не означает, что атаки проводит одна и та же группировка. OpenSourceMalware не обнаружила общих индикаторов с известными ей образцами вредоносного ПО из северокорейских операций и рассматривает новую стадию GhostAction как копирование метода.

Открытие репозитория само по себе не означает заражение

В файле задач стоял параметр `runOn: folderOpen`. При определенных условиях он позволяет VS Code запустить задачу при открытии рабочей папки, без отдельного вызова через меню. Однако официальная документация VS Code поясняет, что автоматические задачи запрещены в недоверенных рабочих пространствах. Даже для доверенной папки запуск зависит от настройки `task.allowAutomaticTasks` и решения пользователя разрешить автоматическое выполнение.

Это важное ограничение: скачать или клонировать репозиторий недостаточно, чтобы выполнить стилер. Опасный сценарий возникает, когда разработчик открывает зараженный проект в VS Code, считает его доверенным и разрешает автоматические задачи. Отдельный workflow в GitHub Actions имеет собственную логику запуска и от настроек локального редактора не зависит.

Какие данные пытался похитить вредонос

JavaScript искал учетные данные AWS и Kubernetes, токены реестров npm и PyPI, сохраненные логины Git и закрытые SSH-ключи. В списке целей находились также файлы авторизации Claude и Gemini, переменные окружения с токенами и фрагменты домашних каталогов с возможными секретами. Часть данных программа читала напрямую из известных путей, а часть пыталась найти поиском по файловой системе.

Собранную информацию стилер отправлял на сервер атакующих через обычный HTTP-запрос. Затем на Linux и macOS он пытался установить задание cron, обращавшееся к удаленному серверу каждые пять минут. Если такая задача действительно была установлена, одно лишь удаление вредоносного workflow из GitHub не уничтожало механизм на уже затронутой машине. Публичного числа подтвержденных установок этой задачи исследователи не привели.

Читайте также: Один npm install — и секреты уже в чужом GitHub

Что изменилось по сравнению с первой стадией

На первом этапе GhostAction использовала украденный доступ к GitHub, чтобы добавлять в доступные злоумышленникам репозитории workflow с названием вроде «проверки безопасности». Задание пыталось собрать секреты из среды GitHub Actions и истории репозитория. Новый этап перенес риск на рабочую станцию: поддельный файл шрифта мог продолжать присутствовать в проекте даже после удаления подозрительного workflow.

Исследователи восстановили хронологию: первую стадию находили в репозиториях начиная с 8 октября, а файлы для локального запуска добавляли преимущественно 14–15 октября. В одном из случаев владелец удалил вредоносные workflows, но оставил `.vscode/tasks.json` и поддельный шрифт. The Hacker News также описало связанные с GhostAction попытки фишинга пользователей GitHub. При этом общая картина не позволяет точно установить, сколько машин пострадало и как преступники получили доступ к каждой учетной записи.

Читайте также: Как GitHub Issues превращались в команды для ИИ-агентов

Что известно о масштабе атаки

Исследование подтверждает присутствие файлов второй стадии в 79 доступных для анализа репозиториях из обнаруженной группы в 94 проекта. Не опубликованы подтвержденное количество пользователей, которые запустили стилер, объем реально похищенных ключей и данные об операторе кампании. Поэтому масштаб распространения вредоносных файлов и фактический ущерб следует разделять.

GhostAction показывает, насколько обычные механизмы автоматизации разработки полезны атакующим, получившим право записи в чужой репозиторий. Код под видом шрифта не использует специальную уязвимость WOFF2 или VS Code: опасность возникает из-за того, что измененные файлы проекта могут стать исполняемыми командами при доверенной конфигурации среды.

Вопросы и ответы (FAQ)

Что такое GhostAction? Это кампания по краже секретов из GitHub-репозиториев и среды разработки. В октябре 2026 года исследователи выявили ее вторую стадию с кодом, замаскированным под шрифт.

Запускается ли вредонос сразу при скачивании проекта? Нет. Для описанного сценария требуется открыть проект в VS Code с доверенной рабочей папкой и разрешением автоматических задач.

Почему использовали расширение .woff2? Оно помогало представить JavaScript как обычный ресурс интерфейса. Исполнялся файл через Node.js, а не как шрифт.

Какие секреты были целью атаки? SSH-ключи, облачные учетные данные, токены npm и PyPI, конфигурации Kubernetes, а также отдельные данные авторизации ИИ-инструментов.

Сколько компьютеров заразилось? Исследователи обнаружили вторую стадию в 94 репозиториях, но подтвержденного числа успешно выполненных локальных заражений нет.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.