На днях мы обнаружили и сообщили администрации npm о серии вредоносных пакетов:
@phonos/types@structureit/ir-dealapi-js@wame/ngx-adfs@wame/ngx-frf-utilitiescclr-component-resourcescompliancepolicyservconnectedmerchantsservftapi-corelakk-analyticsmeshim-frontend-confignms-dashboard-jsoc-aa-module-clientoc-ccp-module-clientoc-navbar-module-clientqr-code-styling-tempuploader-frontenduploader-frontend-legacy

Перечисленные пакеты содержат схожий код и стратегию размещения: сперва публикуется чистая версия (обычно это 9.9.0), через пару дней публикуется «обновление» с нежелательным функционалом.
Вредоносная логика срабатывает во время установки, исполняя index.js c передачей управления ./lib/core.js.

Скрипты с вредоносной логикой довольно компактны — каждый по отдельности занимает не больше килобайта.
В коде используются две техники сокрытия логики: однострочники и хранение констант в виде массивов ASCII‑кодов без дополнительной обфускации.
Назначение сниппетов на примере @phonos/types (мы добавили в код поясняющие комментарии):

b02e30.js хранит информацию о C2. Из занятного: злоумышленник поленился закодировать имя кампании.
6ad264.js — резолвит модули os, dns и process
core.js — получает и эксфильтрует информациюНагрузка на первый взгляд выглядит безобидной — всего лишь получение злоумышленником базового представления о пользователе, установившем пакет. Можно даже допустить версию, что эти пакеты были созданы из благородных побуждений. С другой стороны, npm прямо запрещает размещение подобных пакетов даже в исследовательских целях:
Несколько примеров неприемлемого контента:... 3. Контент, содержащий вредоносный компьютерный код, такой как компьютерные вирусы, компьютерные черви, руткиты, бэкдоры или шпионское ПО. Это включает контент, предоставленный в исследовательских целях.
Перевод
Не хотите, чтобы ваши CI/CD и устройства разработчиков поучаствовали в такого рода незапланированном опросе? Решение есть: фиды для безопасной разработки в рамках PT Fusion.
(Источник)
wepp
Чем "помогла" ему его забывчивость? Зачем такой заголовок?