Липень 2025 року став переломним моментом для безпеки екосистеми відкритого програмного забезпечення. Протягом півтора тижня кіберзлочинці провели серію скоординованих атак на npm-реєстр, скомпрометувавши критично важливі пакети з загальною кількістю понад 30 мільйонів тижневих завантажень. Ці інциденти демонструють зростаючу загрозу для ланцюгів постачання програмного забезпечення та підкреслюють вразливість JavaScript-екосистеми.
Прорив безпеки Toptal: комплексна атака на корпоративну інфраструктуру
Найбільш серйозним інцидентом стала компрометація платформи Toptal — провідної біржі фрілансерів та постачальника інструментів розробки. 20 липня кіберзлочинці отримали повний контроль над GitHub-акаунтом компанії, миттєво оприлюднивши всі 73 корпоративні репозиторії, включаючи конфіденційні проекти та вихідні коди.
Аналіз експертів компанії Socket виявив методичний підхід зловмисників. Після захоплення репозиторіїв вони модифікували вихідний код дизайн-системи Picasso, впровадивши шкідливі компоненти, а потім опублікували 10 інфікованих пакетів у npm-реєстрі під виглядом легітимних оновлень.
Вбудоване шкідливе програмне забезпечення виконувало дві основні функції: викрадення токенів автентифікації GitHub через preinstall-скрипт та подальше знищення даних у системах жертв через postinstall-скрипт. До виявлення загрози заражені пакети завантажили близько 5000 разів.
Цільові фішингові кампанії проти мейнтейнерів npm-пакетів
Паралельно розвивалася ще масштабніша кампанія, спрямована на розробників популярних npm-бібліотек. Основною ціллю став мейнтейнер JounQin, відповідальний за підтримку пакета eslint-config-prettier з понад 30 мільйонами тижневих завантажень.
Атака здійснювалася через ретельно підготовлений фішинговий лист з адреси, що імітувала офіційну підтримку npm ([email protected]). Посилання в повідомленні перенаправляло на підроблений домен npnjs[.]com — майстерно замасковану копію офіційного сайту npmjs.com.
Результатом успішної атаки стала компрометація кількох критично важливих пакетів: eslint-plugin-prettier, synckit, @pkgr/core та napi-postinstall. Зловмисники використали викрадені облікові дані для публікації шкідливих версій, що містили спеціалізоване malware для Windows-систем.
Технічний аналіз шкідливого коду
Дослідження заражених пакетів розкрило складну схему інфікування. Шкідливий скрипт install.js активувався одразу після встановлення пакета та містив функцію logDiskSpace(), яка всупереч своїй назві запускала виконавчий файл node-gyp.dll через системний процес rundll32. Цей механізм забезпечував проникнення стілера Scavanger — троянської програми для викрадення конфіденційної інформації.
Компрометація бібліотеки is: кросплатформенний бекдор
Третім значущим інцидентом стала атака на пакет is — легку JavaScript-бібліотеку з 2,8 мільйонами тижневих завантажень. Розробник Джордан Харбанд оперативно виявив компрометацію версій 3.3.1-5.0.0, які було видалено з реєстру через шість годин після публікації.
У цьому випадку зловмисники використали той самий підроблений домен npnjs[.]com для викрадення облікових даних мейнтейнера. Впроваджений у бібліотеку код являв собою кросплатформенний JavaScript-завантажувач, що створював WebSocket-з’єднання для віддаленого управління зараженими системами.
Шкідливе навантаження збирало детальну інформацію про хост-систему, включаючи ім’я комп’ютера, характеристики операційної системи та процесора, а також усі змінні оточення. Кожне повідомлення, отримане через WebSocket, інтерпретувалося як виконавчий JavaScript-код, фактично надаючи зловмисникам повний інтерактивний доступ до скомпрометованих машин.
Стратегії захисту та відновлення
Експертна спільнота з кібербезпеки наполегливо рекомендує розробникам провести негайний аудит використовуваних залежностей. Необхідно переконатися у відсутності скомпрометованих версій пакетів у продакшн-системах та виконати повне сканування на предмет можливого зараження.
Ця серія інцидентів демонструє критичну важливість захисту ланцюгів постачання програмного забезпечення та необхідність підвищення обізнаності розробників про методи соціальної інженерії. Використання двофакторної автентифікації, регулярна перевірка джерел комунікації та обережність при переході за посиланнями в листах залишаються фундаментальними принципами захисту від подібних загроз. Розробники повинні також впровадити автоматизовані інструменти моніторингу безпеки залежностей та регулярно оновлювати свої знання про актуальні кіберзагрози.