Shai-Hulud се завърна в екосистемата на npm, като този път обхватът му е необичайно широк.

Нов саморазпространяващ се зловреден софтуер, наречен CHAINDROP, внедри задни вратички в над 400 пакета, след като атакуващите компрометираха профила на поддръжката на широко използваната библиотека keyv.

Кампанията превръща легитимните софтуерни актуализации в метод за кражба на идентификационни данни на разработчици и за по-нататъшно разпространение.

Зловредният софтуер може да се стартира още преди инсталацията да е завършила, след което да използва откраднатите токени за достъп до npm, за да публикува модифицирани версии на всеки пакет, който жертвата има право да актуализира.

Elastic Security Labs идентифицира активността на 4 август, описвайки атака, която започва от monorepo-то на keyv и се разпространява бързо.

Засегнатият набор от пакети има общо над 1,3 милиарда изтегляния месечно, което излага на риск разработчици, среди за компилация и последващи приложения по веригата.

В доклад, споделен с Cyber Security News (CSN), Elastic посочва, че инцидентът показва как компрометирането на един профил на разработчик може да създаде проблем за цялата екосистема.

Читателите, които следят по-ранната атака по веригата за доставки в npm от страна на Shai-Hulud, ще разпознаят основния риск: откраднатите идентификационни данни за публикуване позволяват на зловредния софтуер да се придвижва през стандартните канали за пускане на версии.

Атакуващите са вмъкнали preinstall кука в package.json – стандартна функция на npm, която изпълнява команди преди приключване на инсталацията на даден пакет.

Това означава, че разработчикът може да задейства злонамерения код просто чрез инсталиране или актуализиране на засегната зависимост, без да е необходимо да я отваря или импортира.

Тъй като npm третира това като част от нормалния процес на инсталация, прегледът на кода може да пропусне опасността, когато екипите приемат рутинно обновяване. Резултатът е скрито изпълнение в работните станции на разработчиците и средите за компилация.

Всеки подпакет на keyv съдържа инжектиран код за изтегляне (dropper), който стартира основния злонамерен код под Linux, macOS и Windows.

Модифицираните версии използват свързани компоненти в директно компрометираните пакети, както и в пакетите, достигнати чрез разпространението на червея, което дава възможност на защитниците да разследват подозрителни версии.

CHAINDROP първо събира идентификационни данни от системите на разработчиците, включително npm, GitHub, облачни платформи, Kubernetes, SSH, среди за CI/CD и среди за разработка с изкуствен интелект.

След като открие npm токен с права за запис и разрешение за публикуване без двуфакторна автентификация, той изтегля пакетите, инжектира своите файлове, увеличава номера на версията и ги публикува повторно.

Зловредният софтуер може също така да променя хранилища, когато придобие токен за GitHub App. Той добавя компрометирани конфигурационни файлове за Claude Code и VS Code в до 50 клона, така че отварянето на инфектирано хранилище може да създаде друг път за изпълнение на кода.

Подробностите за компрометирането на пакета Keyv илюстрират защо достъпът до хранилището и достъпът до регистъра трябва да се разглеждат като свързани рискове.

Основният злонамерен код търси над 300 шаблона за идентификационни данни, след което компресира и шифрира намереното, преди да го изпрати към контролирана от атакуващите инфраструктура.

Вместо да разчита на един фиксиран команден сървър, той намира своята цел чрез смарт договор в Ethereum, което позволява на оператора да сменя инфраструктурата, без да публикува повторно зловредния софтуер.

Организациите трябва да избягват незабавното приемане на нови версии на пакети и да въведат тестов период, преди те да се използват в средите за компилация.

Това забавяне може да даде време на изследователите и поддържащите лица да идентифицират заразените версии, както показа и инцидентът с компрометирания пакет Axios.

Екипите трябва да изследват машините, които са инсталирали засегнатите версии, да анулират GitHub токените и да генерират отново разкритите npm токени, особено токените за автоматизация, които могат да заобикалят двуфакторната автентификация.

Те също така трябва да променят тайните за достъп за облака, Kubernetes, Vault, AI инструментите и средите за CI/CD, които може да са присъствали на засегнатите крайни устройства.

Поддържащите лица трябва да активират двуфакторна автентификация за своите npm профили, да премахнат опцията за заобикаляне на 2FA там, където тя не е крайно наложителна, и да прегледат хранилищата за неочаквани промени, свързани с кампанията.

Преминаването към npm версия 12 или по-нова добавя предпазна мярка, тъй като блокира preinstall куките по подразбиране – полезна защита срещу злоупотребата със злонамерени среди преди инсталиране, наблюдавани при скорошни прониквания по веригата за доставки.

Екипите за сигурност могат да използват техническите индикатори, за да проверяват регистрационните файлове за процеси на node или bun, свързани с атаката.

Всяко потвърдено съвпадение трябва да се третира като компрометиране на идентификационни данни, а не просто като компрометирана зависимост: изолирайте крайната точка, прегледайте активността по публикуване на пакети, подменете тайните за достъп и одитирайте всички скорошни версии за неоторизирани промени, преди да възстановите нормалната работа по разработката.