Шай-Хулуд
Шай-Хулуд (Shai-Hulud) — компьютерный вирус, который качественно и быстро заражает npm. Появился в 2025 году.
Описание[править]
В JavaScript применяется система npm, в которой размещено несколько миллионов пакетов, а используется она практически в каждом современном проекте. Система в целом весьма и весьма проста в использовании, позволяет легко раскрывать зависимости, так что хакеры решили восраться в неё. И вот был реализован настоящий компьютерный червь, который оказался в состоянии распространяться и самовоспроизводиться, заражённый пакет не только крал данные, но и сам по себе заражал другие пакеты того же разраба, что приводило к скоростному распространению.
Началось всё в сентябре 2025 года, когда червяга заползла в десятки популярных пакетов. Среди заражённых пакетов были @ctrl/tinycolor (один из самых популярных пакетов), библиотеки CrowdStrike и многие другие. Червь быстро распространился на сотни пакетов. Он был подавлен.
В ноябре появилась вторая, значительно более продвинутая волна. Было заражено почти 800 пакетов, которые суммарно были загружены почти 20 миллионов раз. Червь пополз так стремительно, что оказался в 25 тысячах репозиториев и подавил работу, справиться с ним было нелегко.
В апреле и мае 2026 года появилось ещё несколько червей, которые правда такого же размера не достигли.
Принцип[править]
После захвата изначального репозитория код червяка добавляется в package.json как preinstall/postinstall-скрипт. При установке пакета скрипт запускается, собирает приватную информацию вроде токенов доступа к разным системам разработки, после чего записывает себя во все найденные репозитории.
Если кража данных и распространение оказались невозможны, червь может уничтожить домашнюю директорию пользователя. Например при отзыве токена.