Атака на ланцюг постачання npm: швидке проникнення в хмари та уроки для безпеки залежностей

CyberSecureFox 🦊

Галузь відкритого ПЗ зіткнулася з найбільшою за історію екосистеми npm атакою на ланцюг постачання: за приблизно дві години шкідливі версії популярних пакетів опинилися орієнтовно в 10% хмарних середовищ. Попри масштаби, реальний дохід зловмисників склав лише декілька доларів, але інцидент оголив критичну проблему — швидкість, із якою вразливі залежності проникають в інфраструктури.

Фішинг мейнтейнера та компрометація ключових npm-пакетів

Атака почалася зі зламу облікових даних мейнтейнера та розробника Джоша Джунона (Qix). Отримавши доступ, зловмисники оновили близько 20 популярних пакетів, зокрема chalk, debug та ansi-styles, що сумарно мають понад 2,6 млрд завантажень на тиждень. У публікації було додано код для перехоплення криптотранзакцій і підміни адрес отримувачів з метою викрадення активів.

Масштаб охоплення: 99% залежностей і проникнення в 10% хмар

За оцінкою компанії Wiz, хоча б один зі скомпрометованих пакетів є базовою залежністю майже будь-якого JavaScript/Node.js-проєкту й присутній у 99% хмарних середовищ. У короткий період доступності шкідливих версій — близько двох годин — вони були завантажені приблизно в кожному десятому середовищі. Цей кейс демонструє, наскільки швидко загроза поширюється за ланцюгом постачання, коли уражено фундаментальні бібліотеки.

Технічний розбір: перехоплення транзакцій у браузері

За даними Security Alliance, закладена шкідлива логіка була орієнтована на браузерне оточення. Скрипт перевіряв наявність window.ethereum та перехоплював базові функції Ethereum-транзакцій — approve, permit, transfer, transferFrom — спрямовуючи їх на гаманець 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976. Також перенаправлялися ETH-перекази з фіксованою сумою без додаткових даних. Для Solana підміна адреси отримувача некоректним рядком, що починався з «1911…», призводила до збоїв і блокування валідних транзакцій. Практично це становило ризик для користувачів DApp, де у фронтенд-пакет потрапила скомпрометована залежність.

Обмежені збитки: чому монетизація провалилася

Завдяки швидкій реакції спільноти шкідливі публікації видалили протягом кількох годин. Дослідники зазначають, що зловмисники, ймовірно, використали адреси Uniswap та інших swap-контрактів замість власних гаманців, що різко знизило їхній зиск — від центів до приблизно $50 за перший епізод.

Повторна компрометація DuckDB та підсумковий “прибуток”

За інформацією Socket, та сама група згодом скомпрометувала акаунт мейнтейнера DuckDB і розгорнула ідентичну корисну нагрузку. Сумарний результат залишився скромним: близько $429 в ETH, $46 у SOL і незначні суми в BTC, Tron, BCH та LTC — загалом приблизно $600. Водночас рівень доступу дозволяв здійснити значно згубніші дії (на кшталт реверс-шелів, бічного переміщення або шифрувальників), проте атакувальники зосередилися на підміні криптотранзакцій.

Уроки для безпеки ланцюга постачання: що впровадити вже зараз

Інцидент підтверджує головний ризик open source — швидкість і масштаб розповсюдження уражених залежностей. Організаціям варто: по-перше, забезпечити MFA і жорсткий захист облікових записів мейнтейнерів та публікаційних токенів; по-друге, впровадити підписання та атестацію артефактів (наприклад, Sigstore, npm provenance) і політику незмінності релізів.

Критично важливо фіксувати версії через lock-файли, звіряти контрольні суми, регулярно проводити аудити залежностей, формувати SBOM і відстежувати зміни. У контурі CI/CD слід ізолювати середовища, обмежити egress-трафік, застосовувати мінімально необхідні привілеї та використовувати дзеркала/проксі-репозиторії з попереднім карантином для нових пакетів. Додатково корисні механізми allowlist для критичних бібліотек і перевірка походження артефактів перед промоцією в продакшн.

Ключовий висновок очевидний: навіть коротке вікно доступності шкідливих пакетів здатне дати значний “вибуховий радіус” у хмарі. Варто негайно переглянути процеси довіреної збірки, увімкнути 2FA для npm, ротацію токенів публікації, впровадити Sigstore/attestation, SBOM та автоматизоване сповіщення про нові/нетипові залежності. Це зменшить шкоду від майбутніх атак і скоротить час реагування, коли наступна компрометація неминуче станеться.

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.