Як масштабна атака на NPM завершилася крадіжкою лише 159 доларів

Як одна з найнебезпечніших атак на NPM закінчилася крадіжкою лише 159 $
9 вересня 2025 р.
~4 хв. читання

На початку вересня 2025 року світ JavaScript зіткнувся з однією з найнебезпечніших атак останніх років. Зловмисники отримали доступ до акаунта популярного розробника і завантажили на NPM нові версії базових пакетів, усередині яких був вбудований шкідливий код. Ці пакети використовуються мільярди разів щотижня, і атака могла призвести до масштабної крадіжки коштів у користувачів криптовалютних сервісів.

На щастя, завдяки помилкам хакерів і швидкій реакції спільноти збитки виявилися мінімальними. Редакція Quickex відновила хронологію подій і розібралася, чому все закінчилося відносно безболісно.

Слідкуйте, як ціна біткоїна реагує на ринкові потрясіння, з Quickex.

Як розвивалася атака

Першим повідомив про те, що відбувалося ввечері 8 вересня, технічний директор компанії Ledger Шарль Гійоме. Він попередив, що акаунт відомого розробника було зламано, а на NPM завантажено заражені версії таких інструментів, як chalk, debug, ansi-styles і strip-ansi. Ці пакети лежать в основі більшості вебзастосунків, тому зараження загрожувало всій екосистемі.

Пізніше з’ясувалося, що доступ до акаунта хакери отримали через фішинговий лист. Він імітував повідомлення від служби підтримки NPM і вів на підроблений сайт входу.

NPM (Node Package Manager) — найбільший каталог пакетів для JavaScript, де розробники публікують і завантажують готові модулі коду. Наприклад, chalk потрібен для кольорового форматування тексту, debug для логування, а ansi-styles і strip-ansi для роботи з консольними символами. Коли зловмисники випустили нові версії, ці релізи автоматично почали встановлюватися в проєкти, якщо розробники не закріпили старі редакції.

На тлі новин про атаку криптопроєкти кинулися публікувати у своїх соціальних мережах заяви, що інцидент їх не зачепив.

Як працював шкідливий код

Вбудована програма діяла за принципом криптокліппера — це різновид атак, під час яких змінюється адреса гаманця у транзакції. Користувач думає, що переказує кошти на свій рахунок або знайомому, а насправді гроші йдуть на адресу атакувальника.

StarPlatinum детально розібрав механіку. За його словами, код мав два режими.

  1. У «пасивному» він підміняв адреси прямо в інтерфейсі застосунків.
  2. В «активному» — перехоплював транзакції перед підписанням і змінював реквізити призначення.

Для маскування використовувався алгоритм Левенштейна, який підбирав максимально схожі рядки: збігалися перші й останні символи адреси, що робило підміну майже непомітною.

Він також навів конкретні рахунки, на які мали йти вкрадені кошти: основний 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976 і кілька резервних адрес.

Станом на момент публікації блогера перекази на ці гаманці були зафіксовані, але кошти залишалися без руху.

Розробники вперше дізналися про проблему, коли почали падати автоматичні збірки. У логах з’являлися незвичні помилки на кшталт «fetch is not defined». Перевірка показала наявність обфусцьованого коду й підозрілих функцій, пов’язаних з Ethereum і Solana.

Чому збитки виявилися мінімальними

Хоча ідея атаки виглядала небезпечною, на практиці вона не спрацювала. Код виявився занадто нестабільним і ламав робочі процеси. Це дозволило спільноті швидко помітити аномалії та заблокувати заражені версії.

Шарль Гійоме уточнив, що атака фактично провалилася: потерпілих виявилося вкрай мало. За його словами, шкідливий код був націлений на криптооперації й підміняв адреси прямо у мережевих відповідях, але через помилки розробників-зломників він спрацьовував непередбачувано.

Arkham підрахувала, що зловмисникам вдалося викрасти лише 159 $. Ці гроші потрапили на гаманці, які фігурували у звітах Ledger. Сума неспівмірна з масштабом потенційного ризику, але випадок показав, наскільки близько екосистема підійшла до серйозної кризи.

Баланс криптогаманця шахраїв, за даними Arkham

Роль апаратних гаманців

Найбільшому ризику піддалися власники програмних гаманців, які підписують транзакції прямо у браузері. Там підміна адреси проходила практично непомітно. Зовсім інакше виглядала ситуація у тих, хто використовував апаратні пристрої для зберігання ключів.

Апаратний гаманець показує користувачу всі дані операції на власному екрані, і підтвердження відбувається фізичною кнопкою. Навіть якщо застосунок підмінив адресу, пристрій відобразить справжнього отримувача. Уважний користувач одразу помітить невідповідність і скасує підписання.

За словами Гійоме, саме такі функції, як Clear Signing і вбудовані перевірки транзакцій, роблять апаратні рішення ключовим бар’єром проти подібних атак.

Урок для криптоспільноти

Ця історія стала нагадуванням про те, що вразливість ланцюга постачання залишається головним ризиком для індустрії. Один злам акаунта розробника здатен поставити під удар мільйони користувачів у всьому світі.

З усієї ситуації можна виділити три основні уроки:

  • Розробники мають закріплювати версії залежностей, використовувати відтворювані збірки й ретельно перевіряти оновлення базових інструментів.
  • Власникам криптовалют варто зберігати активи в апаратних гаманцях і уважно звіряти адреси на екрані пристрою перед кожним підписанням.

Акаунти розробників в екосистемі NPM необхідно захищати ключами безпеки й багатофакторною автентифікацією, щоб фішинг не призводив до компрометації.

Підсумок

Атака на NPM показала, наскільки крихкою може бути вся інфраструктура: мільярди інсталяцій залежали від одного акаунта. Цього разу збитки обмежилися 159 $, але наступного разу все може бути інакше.

Випадковість і помилки зловмисників не замінять системної безпеки. Саме тому і розробники, і користувачі мають робити кроки, щоб нові атаки не застали їх зненацька.

Шукайте вигідний курс обміну криптовалюти на Quickex.

0.0
(0 оцінки)
Натисніть на зірку, щоб оцінити

Відправляєте:

Відправляєте:

Мережа

Плаваюча

Отримуєте:

Отримуєте:

Мережа