🚀 Не просто читай — прокачивайся! Зарегистрируйся в Kraken Academy и учись на практике: стенды, модули и путь к реальным скиллам.

8 сентября 2025 года экосистема Node Package Manager (NPM) пережила, пожалуй, самый громкий киберинцидент в своей истории. Злоумышленники получили доступ к аккаунту известного мейнтейнера под ником qix — человека, сопровождавшего фундаментальные для мира JavaScript библиотеки. И всё это произошло не через какой-то хитроумный эксплойт ядра, а с помощью старого доброго фишинга. Классика жанра.

За три дня до атаки был зарегистрирован поддельный домен npmjs.help, имитирующий официальный npmjs.com. С этого домена отправлялись письма от имени службы поддержки. Сообщалось, что двухфакторная аутентификация не обновлялась больше года, и «устаревшие» ключи будут заблокированы начиная с 10 сентября. Приправлено угрозами блокировки аккаунта и щепоткой паники. Даже у самых стойких админов в такие моменты потеют ладошки.

Письмо выглядело настолько правдоподобно, что qix перешёл по ссылке и ввёл данные на поддельной странице. Результат — полный контроль над его учётной записью. Как говорится, никакого 0day не нужно, если есть социальная инженерия уровня «бабушка из Сбербанка».

Получив доступ, злоумышленники выпустили новые версии по меньшей мере девятнадцати популярных пакетов, встроив в них тщательно обфусцированный JavaScript. Вредоносный код вёл себя как тихий карманник: сидел в стороне, ждал момента и в нужный момент подменял адреса криптокошельков в транзакциях на реквизиты своих хозяев. Ethereum, Bitcoin, Solana — всё, что блестит, утекает в чужие карманы.

Список заражённых версий выглядит внушительно: ansi-styles@6.2.2, debug@4.4.2, chalk@5.6.1, supports-color@10.2.1, strip-ansi@7.1.1, ansi-regex@6.2.1, wrap-ansi@9.0.1, color-convert@3.1.1, color-name@2.0.1, is-arrayish@0.3.3, slice-ansi@7.1.1, color@5.0.1, color-string@2.1.1, simple-swizzle@0.2.3, supports-hyperlinks@4.1.1, has-ansi@6.0.1, chalk-template@1.1.1, backslash@0.2.1, error-ex@1.3.3. Другими словами, полпланеты фронтендеров внезапно оказались в зоне риска.

Аномалию впервые заметили пользователи GitHub в тикете debug-js/debug#1005. После этого сообщество отреагировало довольно быстро: чистые версии были выпущены поверх заражённых, у взломанного аккаунта забрали доступ, а известные мейнтейнеры вроде Sindre Sorhus тут же подключились к наведению порядка.

Опасность ситуации трудно переоценить: суммарная еженедельная загрузка заражённых пакетов превышает 2,6 миллиарда раз. Удар пришёлся в самое сердце экосистемы — в базовые библиотеки, от которых зависят тысячи других проектов. Один фишинговый клик — и полмира веба под угрозой.

Что делать разработчикам? Немедленно удалить заражённые версии, проверить зависимостей через lock-файлы, пересобрать среды и задуматься о том, как храните секреты. Ну и, конечно, перестать верить в письма с «срочным обновлением 2FA», даже если они выглядят убедительнее, чем твоя дипломная работа.

Эта атака показала, что никакие красивые лозунги о «децентрализации open-source» не спасут, если вся безопасность держится на одном уставшем мейнтейнере, читающем почту за утренним кофе.

Вопрос остаётся открытым: как обезопасить будущее open-source от катастроф такого масштаба? Ведь, как выяснилось, для разрушения всей цепочки поставок ПО иногда достаточно всего одного клика мышкой.

Берегите себя и свои нервы.

📘 Понравилась статья?

Больше практики и реальных заданий — в Kraken Academy.
А чтобы точно ничего не пропустить — подпишись на наш Telegram-канал.

Рекомендуемые статьи

Обложка

Критическая уязвимость SAP S/4HANA

Читать полностью →
Обложка

Fortinet под атакой

Читать полностью →
Обложка

Обучение кибербезопасности онлайн или офлайн: что выбрать?

Читать полностью →