Оксана СтепураНавколо IT
30 серпня 2026, 12:54
2026-08-30
Зловмисник заразив популярний npm-пакет із понад 150 000 завантажень на тиждень. Як шкідливе ПЗ крало токени та заражало інші проєкти?
У популярний інструмент для розробників підклали шкідливий код. Дослідники Aikido виявили одразу десять заражених версій npm-пакета @7nohe/openapi-react-query-codegen, який завантажують понад 150 000 разів на тиждень. Після встановлення він міг шукати на комп’ютері ключі та токени доступу, а потім використовувати їх, щоб поширюватися на інші проєкти.
У популярний інструмент для розробників підклали шкідливий код. Дослідники Aikido виявили одразу десять заражених версій npm-пакета @7nohe/openapi-react-query-codegen, який завантажують понад 150 000 разів на тиждень. Після встановлення він міг шукати на комп’ютері ключі та токени доступу, а потім використовувати їх, щоб поширюватися на інші проєкти.
Про це повідомляє компанія Aikido, що займається кібербезпекою. Сам розробник пакета також опублікував попередження на GitHub, де інцидент отримав критичну оцінку — 9,6 з 10.
Цей пакет — інструмент для React-розробників. Він допомагає їм автоматично створювати код для роботи з API через TanStack Query, популярну бібліотеку для React. Вона спрощує отримання даних із сервера. Наприклад, завантаження списку товарів, профілю користувача чи повідомлень через API. Вона також допомагає керувати завантаженням, кешуванням і повторним оновленням цих даних. Тож розробник може додати такий пакет до свого проєкту, а разом із ним автоматично встановиться чужий код.
Проблема виявилася в автоматизації випуску нових версій через GitHub Actions — систему, яка може самостійно виконувати різні дії з кодом, зокрема збирати та публікувати нові версії пакета.
Один із таких сценаріїв був налаштований небезпечно. Сторонній користувач міг залишити спеціальний коментар під pull request і запустити процес, який виконував код із цього pull request і мав право опублікувати нову версію пакета. Цим і скористався зловмисник. Він додав шкідливий код і через офіційну систему проєкту опублікував заражені версії пакета в npm — каталозі, звідки розробники встановлюють такі інструменти у свої проєкти. Через це вони навіть мали справжні підтвердження походження.
Заражений пакет був фактично крадієм облікових даних. Він шукав на комп’ютері розробника все, що могло дати доступ до інших сервісів і проєктів. Наприклад:
токени GitHub, npm, PyPI та RubyGems;
ключі AWS, Azure і Google Cloud;
SSH-ключі;
файли .env, де часто зберігають паролі й API-ключі;
доступи до Kubernetes і HashiCorp Vault;
конфігурації Docker та Git;
дані криптогаманців;
дані сесій Signal, Telegram, Discord і Slack;
файли конфігурації Claude.
До того ж, якщо шкідливе ПЗ знаходило токен, який дозволяв публікувати npm-пакети, воно шукало інші пакети цього користувача, додавало до них свій код і публікувало нові заражені версії. Так само він міг поширюватися через PyPI та RubyGems — каталоги пакетів для інших мов програмування. Із GitHub-акаунтами схема була схожою. Після отримання токенів, шкідливе ПЗ заходило в доступні користувачу репозиторії та додавало туди файли, здатні запускати шкідливий код у різних інструментах розробника.
Дослідники вже опублікували ознаки, за якими можна перевірити систему на зараження. Зокрема, в корені пакета може бути файл 3FWCvzduYZg.js, а в системній тимчасовій папці — директорії, назви яких починаються з trinnyyyy-.
Раніше dev.ua писав про схожу атаку на TanStack. Тоді зловмисники скористалися вразливістю в GitHub Actions і змогли опублікувати в npm десятки заражених версій пакетів.
Як ламають відео-ігри та викладають їхні піратські копії? Розповідає програміст
Що, юний хакер, тобі цікаво, які ігри ще досі не крякнули? Тоді мерщій читай цю статтю. Нижче ми розглянемо, які технології використовуються для захисту ігор від злому. Також не пройдемо повз рекордсменів. Дізнаємося про рекордний час, за який вдалося зламати гру. Та розглянемо справжніх «міцних горішків».