У популярний інструмент для розробників було внесено зловмисний програмний код. Фахівці 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 десятки інфікованих версій пакетів.
Source: dev.ua
