В прошлом релизном цикле npm выкатил свою двенадцатую мажорную версию и сделал то, что от него просили годами: отключил выполнение lifecycle-скриптов при установке пакетов по умолчанию. Это был прямой ответ на лавину вредоносных пакетов, которые годами пользовались одной и той же лазейкой – preinstall или postinstall в package.json, который дёргается сразу же после npm install, задолго до того, как разработчик вообще откроет код. Защита закрыла главный лаз, которым пользовались все, и на этом должна была закончиться эра дешёвых supply-chain-кампаний через реестр JavaScript.
Checkmarx вытащил на свет пакет, у которого в package.json нет ни единого lifecycle-хука. Чистый scripts-блок, никаких preinstall, никаких postinstall. При этом за неделю его скачивали два миллиона раз, он связывался с ботами в Slack и Telegram, тянул команды со смарт-контракта на Ethereum и расшифровывал вторую стадию по собственному ECDH-протоколу. Атакующий просто не стал пользоваться запрещённым входом – он открыл свой.
Эта статья доступна только подписчикам. Оформите подписку, чтобы получить доступ ко всем премиум статьям.
Оформить подписку →Автор: hacker@shifry.local