Шкідливий npm-пакет у GitHub @acitons/artifact полював на токени GitHub-репозиторіїв

12.11.2025 1 хвилин Автор: Newsman

Дослідники виявили шкідливий npm-пакет @acitons/artifact, який маскувався під офіційний @actions/artifact і був спеціально заточений під атаки на репозиторії, що належать GitHub. Мета — виконатися всередині GitHub Actions, викрасти токени збірки й використати їх для публікації підроблених артефактів уже від імені GitHub.

Veracode повідомляє, що автор пакета під ніком blakesdev завантажив принаймні шість шкідливих версій — з 4.0.12 по 4.0.17. У них був прописаний postinstall-хук, який після встановлення пакета тягнув та запускав додатковий шкідливий код. Нині в npm доступна версія 4.0.10 без цього хука, а підозрілі білди з реєстру прибрали, але на момент виявлення пакет уже встиг набрати понад 47 тис. завантажень.

  1. Після встановлення модифікований @acitons/artifact завантажував бінарник harness з окремого GitHub-акаунта. Той виявився заплутаним shell-скриптом із «таймером» — код не запускався, якщо дата на хості пізніша за 6 листопада 2025 року (UTC). Далі він викликав verify.js, який перевіряв наявність змінних середовища GITHUB_, тобто фактично підтверджував, що код крутиться в контексті GitHub Actions.

  2. Якщо перевірка проходила, скрипт забирав ці змінні (разом із токенами доступу до репозиторію), шифрував їх і відправляв у текстовий файл на піддомені app.github.dev. Veracode підкреслює: логіка явно заточена під репозиторії, що належать організації GitHub, а також під один тестовий акаунт із рандомним іменем. Це робить кампанію максимально таргетованою, а не масовим «фішингом по npm».

Окремо дослідники знайшли ще один пакет із подібним функціоналом — з рандомним іменем 8jfiesaf83. Його вже видалили з реєстру, але він встиг набрати трохи більше тисячі завантажень.

Атаки через ланцюжок постачання ПЗ (software supply chain) стали одним із головних векторів для злочинців: замість ламати конкретну компанію, достатньо підмінити бібліотеку, яку вона використовує. Typosquatting — класична техніка: зловмисник реєструє пакет із назвою, схожою на популярний оригінал (@acitons/artifact vs @actions/artifact) і чекає, поки хтось помилиться в залежностях.

npm, PyPI та інші реєстри регулярно чистять від шкідливих пакетів, але ланцюг довіри все одно залишається слабким місцем. Ситуація з @acitons/artifact показує ще й новий рівень амбіцій: атакувати не просто будь-які CI/CD-пайплайни, а інфраструктуру самого GitHub, потенційно отримавши можливість випускати фейкові збірки «від GitHub» та використовувати їх далі по ланцюжку.

Історія з @acitons/artifact — чергове нагадування, що npm install давно перестав бути «просто командою». Розробникам варто:

  • уважно перевіряти назви пакетів і джерело публікації;

  • фіксувати версії залежностей і стежити за підозрілими оновленнями;

  • запускати сканери supply-chain-ризиків і аналізувати postinstall/preinstall-хуки;

  • обмежувати повноваження токенів GitHub Actions та використовувати окремі облікові дані тільки для CI.

Інакше один невинний typo в package.json може перетворити ваш пайплайн на точку входу для атаки рівня GitHub.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.