Шкідливі npm-пакети та Adspect: як легальні сервіси використовують для атак на ланцюг постачання ПЗ

CyberSecureFox 🦊

Екосистема відкритого програмного забезпечення знову опинилася в центрі уваги: дослідники компанії Socket виявили на платформі npm сім шкідливих пакетів, які використовували хмарний сервіс Adspect для приховування активності та перенаправлення користувачів на криптомошенницькі ресурси. Інцидент показує, наскільки легко інструменти антибот-захисту можуть перетворюватися на механізм cloaking у руках зловмисників і як це поглиблює ризики для ланцюга постачання ПЗ (software supply chain).

Як зловмисники скомпрометували npm за допомогою Adspect

Усі сім пакетів були опубліковані в період з вересня по листопад 2025 року з облікового запису розробника під псевдонімом dino_reborn (email geneboo@proton[.]me). Зовні вони позиціонувалися як звичайні залежності для веб-проєктів, що підвищувало ймовірність їх інтеграції до реальних застосунків без додаткових підозр.

Хмарний сервіс Adspect офіційно рекламується як платформа для фільтрації трафіку та захисту від ботів. У межах цієї кампанії його застосували протилежним чином — як інструмент cloaking, тобто відокремлення «корисного» для зловмисника трафіку від небажаного (сканери, дослідники, аналітичні системи) та приховування шкідливої логіки від систем моніторингу.

Зі знайдених семи пакетів шість містили шкідливий JavaScript-код, тоді як сьомий, під назвою signals-embed, слугував приманкою: формував початкову сторінку, з якої запускався сценарій атаки.

Adspect як елемент схеми cloaking

Зібрані відвідувачем технічні параметри середовища надсилалися на сервери зловмисників та в API Adspect. На основі цих даних сервіс вирішував, який контент показати: реальній жертві — шкідливий ланцюжок із криптоскамом, досліднику безпеки — нейтральну сторінку, що маскує справжню мету кампанії.

Технічний аналіз шкідливого JavaScript у npm-пакетах

Автоматичний запуск через IIFE у браузері

Шкідлива частина складалася приблизно з 39 КБ JavaScript-коду, упакованого в конструкцію IIFE (Immediately Invoked Function Expression) — функцію, яка виконується одразу після оголошення. Це означало, що достатньо було підключити залежність до фронтенд-проєкту, щоб скрипт автоматично завантажувався й запускався в браузері користувача без жодних явних дій з боку розробника.

Протидія аналізу та виявленню

Код очевидно проєктувався з урахуванням протидії аналізу та реверс-інжинірингу. Він:

  • блокував правий клік миші;
  • відключав відкриття інструментів розробника через клавішу F12;
  • перехоплював комбінації Ctrl+U (перегляд вихідного коду сторінки) та Ctrl+Shift+I (DevTools);
  • при виявленні відкритих DevTools примусово перезавантажував сторінку.

Подібні прийоми давно застосовуються у фішингових і шахрайських кампаніях, оскільки ускладнюють роботу аналітиків, систем динамічного аналізу та автоматизованих сканерів веб-контенту.

Фингерпринтинг браузера та відбір потенційних жертв

Паралельно скрипт виконував активний фингерпринтинг браузера — збирав характеристики середовища користувача для побудови профілю. Серед іншого фіксувалися:

  • user agent браузера;
  • мовні налаштування;
  • використовуваний протокол (HTTP/HTTPS);
  • домен (host) і реферер;
  • повний URI та параметри запиту;
  • типи кодування та інші технічні параметри.

Ці метадані передавалися на проксі-сервер зловмисників, а реальна IP-адреса користувача — в API Adspect. На основі сукупності ознак система класифікувала відвідувача як «цінну» жертву або як потенційного дослідника / бота та обирала відповідний сценарій.

Ланцюжок атаки: фальшива CAPTCHA та криптомошенницькі сайти

Якщо профіль користувача відповідав критеріям зловмисників, його перенаправляли на підроблену сторінку з CAPTCHA, стилізовану під тематику криптовалют з використанням логотипів Ethereum або Solana. Візуально це нагадувало стандартну перевірку «Я не робот».

Підтвердження CAPTCHA ініціювало відкриття в новій вкладці спеціально сформованого URL сервісу Adspect. У результаті перехід на криптомошенницький сайт виглядав для браузера й деяких антифрод-систем як користувацька дія, а не автоматичне перенаправлення скриптом, що ускладнювало виявлення шахрайства.

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

Ризики для ланцюга постачання ПЗ та безпеки npm

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

За публічними звітами провайдерів рішень для безпеки розробки (зокрема Sonatype, Snyk, Checkmarx), щороку в екосистемах на кшталт npm, PyPI, Maven виявляються тисячі шкідливих або скомпрометованих пакетів. Випадок із Adspect лише підкреслює, що до ризиків додається ще й зловживання легальними сервісами для обману засобів захисту.

Після публікації звіту Socket усі сім виявлених пакетів були оперативно видалені з репозиторію npm. Водночас факт їх присутності протягом кількох місяців демонструє обмеженість ручної та вибіркової модерації та потребу в більш жорстких процесах валідації пакунків.

Щоб знизити подібні ризики, доцільно комбінувати кілька підходів: використовувати спеціалізовані інструменти аналізу залежностей (SCA-рішення), фіксувати версії пакетів за допомогою lock-файлів, проводити регулярний аудит використовуваних бібліотек, впроваджувати принципи Zero Trust щодо стороннього коду й розмежовувати права доступу для збірки та виконання застосунків.

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

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

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