Npm-пакет rand-user-agent скомпрометовано під час атаки на ланцюжок поставок⛓️
У популярний пакет rand-user-agent, який завантажують понад 45 000 разів на тиждень, впровадили обфусцирований код. Малварь активує троян віддаленого доступу (RAT) у системі користувача.
Rand-user-agent – це інструмент, призначений для генерування рандомізованих рядків user-agent, що часто застосовується для скрапінгу, автоматизованого тестування та досліджень у сфері ІБ.
Як повідомляють аналітики компанії Aikido, зловмисники скористалися тим, що пакет є напівзанедбаним, хоча все ще популярний. У підсумку в rand-user-agent впровадили шкідливий код, який, імовірно, потрапив і в інші проєкти.
Дослідники виявили компрометацію 5 травня 2025 року в новій версії rand-user-agent -1.0.110. Під час глибшого аналізу було виявлено обфусований код, прихований у файлі dist/index.js. При цьому код можна було помітити тільки за горизонтальної прокрутки в режимі перегляду вихідного коду.
Як показало подальше розслідування, останньою легітимною версією rand-user-agent була 2.0.82, випущена сім місяців тому. Тобто версії 2.0.83, 2.0.84 і згадана 1.0.110, були шкідливими і були відсутні в GitHub-репозиторії проєкту.
Шкідливий код, вбудований у заражені версії, створював прихований каталог у домашній папці користувача (~/.node_modules) і розширював module.paths таким чином, щоб цей кастомний шлях можна було використовувати для завантаження залежностей, а саме axios і socket.io-client.
Потім він відкривав постійне сокет-з’єднання зі своїм керуючим сервером, розташованим за адресою http://85.239.62[.]36:3306, і передавав операторам інформацію про заражену машину, включно з ім’ям хоста, ім’ям користувача, типом ОС і згенерованим UUID. Після активації RAT очікував отримання наступних команд.
Наразі шкідливі версії пакета вже видалено з npm, тому остання доступна версія безпечна, і її можна використовувати.
Усім, хто встановлював версії 2.0.83, 2.0.84 і 1.0.110, рекомендується провести повне сканування системи на предмет виявлення ознак компрометації. Підкреслюється, що оновлення пакета до безпечної версії не видаляє RAT із системи.
Окремо розробники підкреслили, що інцидент обмежився тільки npm, не зачепивши корпоративну мережу і репозиторій із вихідним кодом проєкту.
“Ми приносимо вибачення всім розробникам і організаціям, яких торкнувся цей інцидент. Захист опенсорсної екосистеми – це обов’язок, до якого ми ставимося з усією серйозністю. Ми прагнемо до повної прозорості та усуваємо всі проломи, завдяки яким могла статися ця атака”, – заявили в WebScrapingAPI.