С августа 2024 года, в рамках кампании PhantomRaven в npm загрузили 126 вредоносных пакетов, которые суммарно скачали более 86 000 раз. Кампанию обнаружили специалисты Koi Security, которые пишут, что атаки осуществлялись благодаря малоизвестной особенности npm, которая позволяет обходить защиту и детектирование.
Подчеркивается, что на момент публикации отчета около 80 вредоносных пакетов все еще были активны.
Специалисты объясняют, что злоумышленники используют механизм удаленных динамических зависимостей (Remote Dynamic Dependencies, RDD). Обычно разработчик видит все зависимости устанавливаемого пакета — они загружаются из доверенной инфраструктуры npm. Однако RDD позволяет пакетам автоматически подтягивать код с внешних URL, причем даже по незашифрованному HTTP-каналу. При этом в манифесте пакета отображается ноль зависимостей.
Когда разработчик запускает npm install, вредоносный пакет незаметно подгружает пейлоад с контролируемого атакующими сервера и сразу выполняет его. Никакого взаимодействия с пользователем не требуется, а инструменты статического анализа не замечают происходящее.
«PhantomRaven показывает, насколько изощренными могут быть атакующие при эксплуатации слепых зон в традиционных средствах защиты. Удаленные динамические зависимости просто невидимы для статического анализа», — говорят исследователи.
Отмечается, что малварь загружается с сервера при каждой установке пакета, а не кешируется. Это открывает возможности для таргетированных атак: злоумышленники могут проверять IP-адрес запроса и отправлять безобидный код ИБ-исследователям, отдавать вредоносный код для корпоративных сетей, специализированные пейлоады для облачных сред.
После заражения малварь тщательно собирает информацию о системе жертвы:
- переменные окружения с конфигурациями внутренних систем разработчика;
- токены и учетные данные для npm, GitHub Actions, GitLab, Jenkins и CircleCI;
- всю среду CI/CD, через которую проходят изменения кода от разных разработчиков.
Украденные токены могут использоваться для атак на цепочки поставок и внедрения вредоносного кода в легитимные проекты. Кража данных организована с избыточностью, сразу тремя методами: HTTP GET с данными в URL, HTTP POST с JSON и через WebSocket-соединения.
Специалисты пишут, что многие вредоносные пакеты маскируются под инструменты GitLab и Apache.
Отдельную роль в этой кампании играет слопсквоттинг (slopsquatting), то есть эксплуатация галлюцинаций ИИ. Дело в том, что разработчики часто спрашивают у LLM-ассистентов, какие пакеты лучше использовать для того или иного проекта. ИИ-модели нередко выдумывают несуществующие, но правдоподобно выглядящие названия. Операторы PhantomRaven отслеживают такие галлюцинации и регистрируют пакеты с этими именами. В итоге жертвы сами устанавливают малварь, следуя рекомендациям LLM.
Разработчики LLM пока не понимают точных причин этих галлюцинаций и не умеют строить модели, которые их не допускают, чем и пользуются злоумышленники.
Исследователи напоминают, что не стоит полагаться на LLM при выборе зависимостей, а также следует внимательно проверять названия пакетов и их источники, устанавливая только пакеты проверенных вендоров.


