Дослідники компанії Socket виявили 18 шкідливих npm пакетів, націлених на розробників, які використовують інструменти екосистеми Alibaba Group. Пакети імітують приватні компоненти з простору імен @ali і доставляють кросплатформенний троян віддаленого доступу (RAT) з можливостями виконання команд, ексфільтрації файлів і латерального переміщення. Атака зачіпає середовища на Windows, Linux і macOS. Усі, хто встановлював перелічені пакети, мають вважати систему скомпрометованою та негайно змінити облікові дані з чистої машини.
Механізм атаки: багаторівневий ланцюжок залежностей
За даними дослідника Socket Карло Занкі, ключовий елемент кампанії — пакет lib-mtop, однойменний приватному пакету Alibaba з області @ali. Пакет було вперше опубліковано в листопаді 2023 року без будь-якої функціональності, однак у березні–квітні 2025 року з’явилися три нові версії (v1.0.1, v1.0.2, v1.0.3), що містять завантажувач, який отримує віддалене JavaScript-навантаження через curl і виконує його.
Атаку побудовано на трирівневій архітектурі залежностей:
- Верхній рівень (пакети-приманки) — до 10 пакетів, що імітують приватні компоненти @ali. Серед них aone-kit, aone-kit-cli і aone-sandbox, які, за даними дослідників, є порожніми обгортками, що оголошують приватні пакети Alibaba як залежності.
- Середній рівень (міст) — пакет smart-config-manager, від якого залежать пакети верхнього рівня і який пов’язує їх із шкідливими компонентами нижнього рівня.
- Нижній рівень (завантажувач) — компоненти, які звертаються до GitHub-репозиторію для отримання конфігурації рушія правил, а потім завантажують і виконують шкідливе навантаження з віддаленого сервера.
Пакет local-config-parser вартий окремої уваги: він реалізує легітимний парсер JSON-конфігурацій, але містить залежності, які окремо виглядають нешкідливо, а разом формують канал доставки RAT. Усі п’ять первинних пакетів були опубліковані від імені облікового запису ch4ce, який наразі повертає помилку «not found» на npmjs.com.
Кросплатформна поведінка шкідливого навантаження
Як повідомляється, рушій правил використовує модуль vm Node.js для визначення операційної системи жертви та завантаження відповідного шкідливого навантаження. Завантаження здійснюється з домену, що маскується під інфраструктуру Alibaba.
Поведінка змінюється залежно від платформи:
- Windows — завершує процеси корпоративного застосунку безпеки Alilang, VPN і офісного ПЗ, після чого підмінює їхній основний код троянізованою версією.
- Linux — завантажує бінарний файл у /tmp, запускає його як від’єднаний процес і видаляє файл з диска після завантаження в пам’ять.
- macOS — вбудовує шкідливий фоновий скрипт у ~/.zshrc і налаштовує Launch Agent з інтервалом запуску 10 хвилин.
Кінцеве шкідливе навантаження є складним бекдором з можливостями виконання довільних команд, завантаження та вивантаження файлів, розвідки хоста, підготовки додаткових шкідливих навантажень і латерального переміщення. За даними дослідників, бекдор також може закріплюватися шляхом впровадження шкідливого коду в корпоративні застосунки для спільної роботи — DingTalk, Wukong і Qoder.
Індикатори компрометації
Домени, пов’язані з кампанією:
- aone-cli-next.oss-cn-beijing.aliyuncs[.]com — джерело шкідливого навантаження, що імітує інфраструктуру Alibaba
Повний список шкідливих пакетів:
- lib-mtop, aone-kit, aone-kit-cli, aone-sandbox, local-config-parser
- smart-config-manager, cloud-config-fetcher, fast-transform-pipeline
- aone-cloud-cli, colder-cli, def-open-client, feedback-ai-sdk
- flight-compare-analyzer, lwp-web-client, lzd-unified-station-sdk
- open-worker-cli, test-skill-zip, uniapi-bridge
Контекст загрози та атрибуція
Автор кампанії залишається невідомим. Дослідники відзначають, що точний масштаб впливу складно оцінити: хоча кількість завантажень шкідливих пакетів невелика, цільовий характер атаки та можливості латерального поширення кінцевого шкідливого навантаження роблять потенційну шкоду значною. Залишається незрозумілим, чи було обліковий запис ch4ce скомпрометовано, чи його власник навмисно опублікував шкідливий код.
Варто зазначити, що ця кампанія — не поодинокий випадок атак на ланцюжок постачання в екосистемах менеджерів пакетів. Паралельно StepSecurity повідомила про компрометацію пакета PyPI mrmustard версії 0.7.4 (бібліотека для фотонних квантових обчислень від Xanadu). Зловмисники зламали GitHub-акаунт основного мейнтейнера, проникли через самостійно розміщені CI ранери й опублікували версію зі стилером, націленим на SSH ключі, облікові дані AWS і конфігурації Kubernetes. За даними SafeDep, шкідливий код встановлював три окремі механізми закріплення, які зберігали активність навіть після видалення пакета.
Рекомендації
- Перевірте залежності — проведіть аудит проєктів на наявність будь-якого з 18 перелічених пакетів у дереві залежностей. Використовуйте
npm lsабо інструменти аналізу складу ПЗ (SCA). - У разі виявлення — вважайте систему скомпрометованою. Змініть усі облікові дані (токени npm, SSH ключі, хмарні секрети) із завідомо чистої машини.
- Перевірте механізми закріплення: на macOS — файл ~/.zshrc і Launch Agents; на Windows — цілісність інсталяції Alilang і пов’язаного корпоративного ПЗ; на Linux — підозрілі процеси, запущені з /tmp.
- Налаштуйте політику області видимості — використовуйте конфігурацію .npmrc із прив’язкою приватних областей (@ali) до внутрішнього реєстру, щоб запобігти підміні залежностей із публічного реєстру npm.
- Перевірте корпоративні застосунки DingTalk, Wukong і Qoder на наявність несанкціонованих модифікацій коду.
Ця кампанія демонструє ефективність техніки підміни залежностей (dependency confusion) у поєднанні з багаторівневою архітектурою, де шкідлива логіка розподілена між кількома зовні нешкідливими пакетами. Організаціям, які використовують приватні npm пакети з областю видимості, критично важливо налаштувати прив’язку областей до внутрішніх реєстрів через .npmrc та впровадити автоматизований аудит залежностей, що блокує встановлення публічних пакетів з назвами, які збігаються з приватними компонентами.