В экосистеме npm выявлена новая масштабная атака на разработчиков. Злоумышленники распространяют вредоносные пакеты, которые маскируются под обычные библиотеки, но после установки начинают собирать криптографические ключи, токены CI/CD и другие чувствительные данные. Кампания уже затронула десятки проектов и продолжает развиваться.
Как устроена атака
Вредоносные модули публиковались в репозитории npm под поддельными аккаунтами. Внешне это выглядело как обычные вспомогательные пакеты для работы с цветами, криптографией или CLI-утилитами. После установки библиотека автоматически запускала скрытый скрипт.
Сценарий работы был двухэтапным. Сначала код собирал базовую информацию о среде: переменные окружения, токены доступа, конфигурационные файлы. Особый интерес представляли:
токены npm;
доступы к GitHub;
ключи от облачных сервисов, включая AWS;
SSH-ключи и файлы конфигурации CI.
Через некоторое время запускался второй этап. Он активировался с задержкой от двух до четырёх суток, что усложняло обнаружение. На этой стадии вредоносный код пытался закрепиться в системе и распространяться дальше, используя уже украденные учётные данные.
Попытка самораспространения
Атака носит червеобразный характер. Получив доступ к npm или GitHub-аккаунту разработчика, злоумышленники могли публиковать новые заражённые пакеты или внедрять вредоносный код в существующие проекты.
Это превращает отдельный инцидент в цепную реакцию. Один заражённый пакет способен привести к компрометации множества зависимых проектов.
Использование AI-инструментов
Отдельного внимания заслуживает ещё одна особенность кампании. Некоторые пакеты пытались взаимодействовать с локальными AI-инструментами разработчиков. В частности, речь идёт о средах вроде Visual Studio Code и популярных AI-ассистентах для кода, включая Claude и Cursor.
Вредоносные модули добавляли собственные конфигурации и пытались через так называемые prompt-инъекции заставить AI-ассистента извлекать локальные секреты. По сути, злоумышленники использовали доверие к инструментам ИИ как дополнительный канал утечки данных.
Что делать разработчикам
Если в проекте использовались подозрительные или недавно опубликованные пакеты, стоит провести аудит зависимостей. Особое внимание нужно уделить новым библиотекам с низким числом загрузок и минимальной историей.
При малейших подозрениях рекомендуется:
Удалить сомнительный пакет.
Сменить токены npm, GitHub и CI/CD.
Перегенерировать SSH-ключи.
Проверить журналы активности на предмет несанкционированных публикаций или коммитов.
Также имеет смысл ограничить права токенов по принципу минимально необходимого доступа и регулярно проверять список зависимостей.
Тренд на атаки через цепочку поставок
Подобные инциденты становятся всё более частыми. Атаки через open-source-экосистемы позволяют злоумышленникам обходить классические средства защиты и проникать в инфраструктуру через доверенные каналы.
Разработчикам и компаниям всё чаще приходится относиться к зависимостям так же внимательно, как к собственному коду. Автоматическая установка пакетов без проверки больше не выглядит безопасной практикой.
Источник: HN