
TeamPCP: как команда хакеров-любителей «Дюны» закинула в наши Node.js-пакеты червей Shai-Hulud
net0pyr только что TeamPCP: как команда хакеров-любителей «Дюны» закинула в наши Node.js-пакеты червей Shai-Hulud Средний 7 мин 12 Блог компании RUVDS.com Node.JS * Информационная безопасность * JavaScript * GitHub *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. net0pyr только что TeamPCP: как команда хакеров-любителей «Дюны» закинула в наши Node. js-пакеты червей Shai-Hulud Средний 7 мин 12 Блог компании RUVDS. JS * Информационная безопасность * JavaScript * GitHub * Обзор Спасибо Фрэнку Герберту, что воспитал поколение хакеровnpm install — такая привычная многим из читателей команда, но за последние пару месяцев она обернулась сущим кошмаром для инженеров по безопасности.
И ладно бы всё сводилось к проверке 5 пакетов из package. json, но у каждой зависимости по 10 своих зависимостей, а у тех ещё по 10. В итоге мы тянем 2000, а не 5 пакетов, и тут, кажется, уже руками не проверишь.
Технические детали
И именно на этой боли всех безопасников, поддерживающих JS-проекты, сыграла команда TeamPCP. В этой статье я хочу подробно, от А до Я, разобраться, в чём опасность, почему так произошло и как от этого защититься. Небольшая теоретическая справкаПеред тем как погружаться в тему, предлагаю освежить в голове основные понятия, на которых и строится вся атака.
Большую часть того, что мы можем придумать, уже давно изобрели до нас. Поэтому, например, для того чтобы распарсить дату, не нужно писать логику с нуля — мы просто берём готовую библиотеку и используем её. В результате имеем 2 строчки кода, а не 100.
js Package Manager) — самый крупный склад пакетов для JavaScript/Node. Является публичным реестром, т. любой может опубликовать и скачать пакет.
Отраслевые последствия
Зависимости, package. json и node_modulesЕсли один проект использует чужой пакет, то этот пакет — зависимость проекта. js список зависимостей хранится в файле package.
json:{ "name": "Тестовый стенд", "dependencies": { "@tanstack/react-router": "^1. 0" } } npm использует этот файл, чтобы тянуть из реестра нужные пакеты, когда ты используешь команду npm install. Lockfile — фиксация точных версийВ примере выше мы использовали ^1.
Эта запись значит, что мы берём версию 1. 0 и выше в рамках мажорной версии. И при запуске npm install, если он увидит более новую версию в рамках этого правила, то её подтянет.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





