Офіційний npm-пакет Bitwarden CLI протягом приблизно півтори години 22 квітня 2026 року містив шкідливий код, здатний викрадати облікові дані розробників і поширюватися на інші проєкти. Bitwarden підтвердила інцидент і запевнила, що дані сховищ користувачів не постраждали.
Що сталося
За даними дослідників із компаній Socket, JFrog та OX Security, зловмисники завантажили до реєстру npm шкідливу версію пакету @bitwarden/cli під номером 2026.4.0. Вона була доступна з 17:57 до 19:30 за східноамериканським часом 22 квітня, після чого її видалили.
Bitwarden підтвердила факт атаки та зазначила, що інцидент зачепив лише механізм розповсюдження через npm — тільки ті, хто завантажив шкідливу версію. Цілісність основного коду Bitwarden CLI та даних у сховищах користувачів порушена не була.
«Розслідування не виявило жодних доказів того, що дані сховищ кінцевих користувачів були доступні або перебували під загрозою, або що виробничі дані чи системи було скомпрометовано. Щойно проблему було виявлено, скомпрометований доступ відкликали, шкідливий npm-реліз деактивували, а заходи з усунення наслідків розпочали негайно», — йдеться в офіційній заяві компанії.
Як здійснювалась атака
За висновком Socket, зловмисники скористалися скомпрометованою GitHub Action у конвеєрі CI/CD Bitwarden, щоб впровадити шкідливий код у npm-пакет CLI.
Згідно з аналізом JFrog, модифікований пакет використовував попередній інсталяційний скрипт і спеціальний завантажувач bw_setup.js, який перевіряв наявність середовища виконання Bun і завантажував його за відсутності. Завантажувач запускав обфускований JavaScript-файл bw1.js, який виступав шкідливим ПЗ для крадіжки облікових даних.
Після запуску шкідливий код збирав широкий спектр секретних даних із заражених систем, зокрема:
- npm-токени
- токени автентифікації GitHub
- SSH-ключі
- хмарні облікові дані AWS, Azure та Google Cloud
Зібрані дані шифрувалися за допомогою алгоритму AES-256-GCM, а потім викрадалися шляхом створення публічних репозиторіїв на GitHub під обліковим записом жертви, де й зберігалися зашифровані дані.
OX Security зауважила, що створені репозиторії містили рядок «Shai-Hulud: The Third Coming» — посилання на попередні атаки на ланцюжок постачання npm, які використовували аналогічний метод і той самий текстовий рядок для ексфільтрації вкрадених даних.
Самопоширення та загроза для CI/CD
Шкідливе ПЗ також мало здатність до самопоширення: за даними OX Security, воно могло використовувати вкрадені npm-облікові дані для визначення пакетів, які жертва має право модифікувати, і впроваджувати до них шкідливий код. Socket також зафіксував, що payload цілеспрямовано атакував середовища CI/CD та намагався зібрати секрети для розширення атаки.
Зв’язок з атакою на Checkmarx
Bitwarden повідомила виданню BleepingComputer, що інцидент пов’язаний з атакою на ланцюжок постачання компанії Checkmarx, яку було розкрито напередодні. Скомпрометований інструмент розробки, пов’язаний із Checkmarx, дозволив зловмисникам зловжити механізмом доставки npm для CLI протягом обмеженого часового вікна.
Socket також підтвердив збіг індикаторів між двома інцидентами. «Зв’язок простежується на рівні шкідливого ПЗ та інфраструктури. У випадку Bitwarden шкідливий payload використовує той самий endpoint audit.checkmarx[.]cx/v1/telemetry, що фігурував в інциденті з Checkmarx. Він також застосовує ту саму процедуру обфускації __decodeScrambled із початковим значенням 0x3039 і демонструє той самий загальний патерн крадіжки облікових даних, ексфільтрації через GitHub та поширення по ланцюжку постачання», — прокоментував Socket.
Обидві кампанії пов’язують із загрозовим актором під назвою TeamPCP, якого раніше ідентифікували в масштабних атаках на ланцюжки постачання Trivy та LiteLLM.
Рекомендації для розробників
Розробникам, які встановлювали пакет у зазначений проміжок часу, фахівці радять вважати свої системи та облікові дані скомпрометованими та негайно замінити всі потенційно відкриті секрети — насамперед ті, що використовуються в конвеєрах CI/CD, хмарних сховищах і середовищах розробки.

