TGViewer
RedBlue Notes RedBlue Notes @redbluenotes · 634 subscribers
Post #732 475
Атака на цепочку поставок: как один npm роняет полмира

Окей, представьте сценарий мечты для злоумышленника. Он не ломает периметр жертвы. Он вообще к нему не прикасается. Он просто отравляет то, что жертва сама скачает и запустит у себя в проде. Налил яд в источник, а дальше тысячи разработчиков выстроились в очередь попить.Это и есть атака на цепочку поставок (supply chain attack). И в 2025–2026 она переехала из отчётов про APT-группировки в категорию «обычный вторник».

Суть на пальцах ☝️
Supply chain переворачивает доску. Зачем ломать тысячу компаний поштучно, если можно скомпрометировать одно звено, которому все эти компании доверяют: библиотеку, обновление, CI/CD-пайплайн. Дальше работает гравитация экосистемы, жертвы сами притянут вредонос через npm install или автообновление. Доверие и есть вектор атаки. Красиво, если смотреть со стороны атакующего.

Почему open-source — это праздник для атакующего 🧛
Современное приложение — это 5% своего кода и 95% чужого. Ставишь один фреймворк, он тянет 40 пакетов, каждый тянет ещё. В node_modules вырастает небоскрёб из сотен библиотек, которые никто не видел и проверять не собирался. Утилитка для раскраски текста в консоли может оказаться несущей стеной половины индустрии.
Математика атакующего проста: отрави один популярный пакет, получи доступ к тысячам приложений ниже по течению. Прилетит даже тем, кто этот пакет в глаза не видел.

Разбор полётов: атака на chalk и debug 🤹
8 сентября 2025 года. Учебник, который стоит разобрать по шагам.
Шаг 1, подготовка. За три дня до атаки регистрируется домен npmjs[.]help. Выглядит как родной npm. Но это не он.
Шаг 2, фишинг. Мейнтейнеру пачки популярных пакетов прилетает убедительное письмо с адреса support@npmjs[.]help, мол, срочно сбрось 2FA. Человек вводит логин, пароль и живой TOTP-код. Аккаунт угнан. Всё.
Шаг 3, спидран. Примерно через 16 минут после захвата аккаунта публикуются вредоносные версии 18 пакетов: chalk, debug, ansi-styles, strip-ansi и компания. Суммарно около 2 млрд загрузок в неделю. Шестнадцать минут. Люди дольше кофе варят.
Шаг 4, полезная нагрузка. Внутри обфусцированный JS-стилер. Он перехватывал браузерные API (fetch, XMLHttpRequest) и крипто-кошельки (window.ethereum, Solana), молча подменяя адреса получателей в транзакциях. Юзер видит «нормальную» транзакцию, а деньги едут к атакующему.
И вишенка: спалил атаку сам вредонос. Он дёргал браузерный fetch(), которого в Node.js нет, и серверные сборки начали падать с ошибкой ReferenceError: fetch is not defined. Пейлоад стал лучшим индикатором компрометации.

Откуда хайп: эпоха червей 🔫
Хайп раздули не стилеры, а самораспространяющиеся черви. Червь Shai-Hulud угонял токены публикации и заражал ими новые пакеты от имени новых жертв. Цепная реакция: 500+ пакетов в первой волне.
И понеслось: Shai-Hulud 2.0, «Mini Shai-Hulud». 11 мая 2026 года группировка TeamPCP за шесть минут опубликовала 84 вредоносные версии 42 пакетов @tanstack, кампания расползлась на Mistral AI, UiPath, OpenSearch и PyPI. Новые варианты обзавелись демоном, который при отзыве токена пытается снести домашнюю директорию через rm -rf. Темп такой, что список заражённых пакетов устаревает, пока его дочитываешь.

Как защититься 🍩
🔒 Зафиксируйте версии. Lockfile с хэшами. Кто запиннил зависимости, тот очередную волну проспал, в хорошем смысле.
⏳ Cooldown. Не тащите версию младше нескольких дней. Вредонос обычно отзывают за часы.
🚫 Выключите install-скрипты в CI. npm ci --ignore-scripts. Большинство пейлоадов исполняется в preinstall/postinstall.
📋 Заведите SBOM. На новость «заражён пакет X» ответ «есть ли он у нас» должен искаться минуты, а не дни.
🔑 Защитите publish-токены. Аппаратные ключи вместо SMS, trusted publishing через OIDC, ротация секретов.
🤖 Сканируйте зависимости. SCA в пайплайне плюс baseline.
🧯 План реагирования заранее. Изолированный билд-агент, процедура массовой ротации, ответственный.

Подписывайтесь на канал, дальше больше!
  • 👍 1
More from @redbluenotes
  1. Sep 15, 2026вот би кто лайк поставил 👀
  2. Sep 12, 2026Запись доклада: "Если очень хочется, то можно: обходим ограничения современных SWG-шлюзов…
  3. Sep 10, 2026Мы на IT Elements 2026 ⚛️ Я впервые был в доме культуры завода Серп и молот, площадка оказ…
  4. Sep 9, 2026Post #763
  5. Sep 3, 2026Побывал сегодня на закрытом митапе от Бизона. Они похвалились, что единственные, у кого ED…
  6. Aug 20, 2026Мы на offzone 2026, тут всё, как всегда (почти). Уже привычная площадка, бесконечная погод…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →