Почти двухчасовое окно уязвимости подвергло пользователей GitHub потенциальному захвату после того, как мошеннический интерфейс командной строки выдал себя за легитимный инструмент Bitwarden.

22 апреля вредоносная версия интерфейса командной строки Bitwarden появилась на npm под официальным именем пакета @bitwarden/cli@2026.4.0. В течение 93 минут каждый, кто протащил CLI через npm, получил бэкдорную замену легитимному инструменту.
Bitwarden обнаружила компрометацию, удалила пакет и опубликовала заявление, в котором говорится, что не обнаружено никаких доказательств того, что злоумышленники получили доступ к данным хранилища конечных пользователей или скомпрометировали производственные системы.
Исследовательская фирма JFrog, занимающаяся исследованиями в области безопасности, проанализировала вредоносную полезную нагрузку и обнаружила, что у нее нет особого интереса к хранилищам Bitwarden. Он предназначался для токенов GitHub, токенов npm, ключей SSH, истории оболочки, учетных данных AWS, учетных данных GCP, учетных данных Azure, секретов действий GitHub и файлов конфигурации инструментов AI.
Это учетные данные, которые определяют, как команды создают, развертывают и получают доступ к своей инфраструктуре.
Целевой секрет/тип данных
Где он обычно обитает
Почему это важно с точки зрения эксплуатации
Токены GitHub
Ноутбуки для разработчиков, локальная конфигурация, среды CI
Может обеспечить доступ к репо, злоупотребление рабочим процессом, секретный листинг и горизонтальное перемещение посредством автоматизации.
токены npm
Локальная конфигурация, среды выпуска
Может использоваться для публикации вредоносных пакетов или изменения потоков выпуска.
SSH-ключи
Машины для разработки, сборки хостов
Может открывать доступ к серверам, внутренним репозиториям и инфраструктуре.
История Шелл
Локальные машины
Может раскрывать вставленные секреты, команды, внутренние имена хостов и детали рабочего процесса.
Учетные данные AWS
Локальные файлы конфигурации, переменные среды, секреты CI
Может предоставлять доступ к облачным рабочим нагрузкам, системам хранения и развертывания.
Учетные данные GCP
Локальные файлы конфигурации, переменные среды, секреты CI
Может предоставлять доступ к облачным проектам, сервисам и конвейерам автоматизации.
Учетные данные Azure
Локальные файлы конфигурации, переменные среды, секреты CI
Может раскрывать облачную инфраструктуру, системы идентификации и пути развертывания.
Секреты действий GitHub
Среды CI/CD
Может предоставлять доступ к автоматизации, результатам сборки, развертываниям и последующим секретам.
Инструменты AI/файлы конфигурации
Каталоги проектов, локальные среды разработки
Может предоставлять ключи API, внутренние конечные точки, настройки модели и соответствующие учетные данные.
Bitwarden обслуживает более 50 000 компаний и 10 миллионов пользователей, а в ее собственной документации интерфейс командной строки описывается как «мощный, полнофункциональный» способ доступа к хранилищу и управления им, в том числе в автоматизированных рабочих процессах с аутентификацией с использованием переменных среды.
Bitwarden называет npm самым простым и предпочтительным методом установки для пользователей, уже знакомых с реестром. Такое сочетание использования автоматизации, установки на машину разработчика и официального распространения npm помещает CLI именно там, где обычно хранятся ценные инфраструктурные секреты.
Анализ JFrog показывает, что вредоносный пакет перенаправил как перехватчик preinstall, так и двоичную точку входа bw в загрузчик, который извлекал среду выполнения Bun и запускал запутанную полезную нагрузку. Компромисс запускается во время установки и во время выполнения.
Организация могла запустить закрытый интерфейс командной строки, не затрагивая сохраненные пароли, в то время как вредоносное ПО систематически собирало учетные данные, управляющие ее конвейерами CI, облачными учетными записями и автоматизацией развертывания.
Компания Socket, занимающаяся безопасностью, утверждает, что атака, судя по всему, использовала скомпрометированное действие GitHub в конвейере CI/CD Bitwarden, что соответствует схеме, которую отслеживают исследователи Checkmarx.
Bitwarden подтвердил, что инцидент связан с более широкой кампанией Checkmarx по цепочке поставок.
Узкое место доверия
Npm построила свою надежную модель публикации для устранения именно этого класса рисков.
Заменив долгоживущие токены публикации npm на аутентификацию CI/CD на основе OIDC, система удаляет один из наиболее распространенных путей, используемых злоумышленниками для взлома выпусков реестра, а npm рекомендует надежную публикацию и рассматривает ее как значимый шаг вперед.
Сложнее всего обстоит дело с самой логикой выпуска, например, с рабочими процессами и действиями, которые вызывают этап публикации. В собственной документации Npm рекомендуются средства контроля, выходящие за рамки OIDC, такие как среды развертывания с требованиями ручного утверждения, правила защиты тегов и ограничения ветвей.
Уровень в цепочке доверия
Что он должен гарантировать
Что еще может пойти не так
Исходный репозиторий
Предполагаемая кодовая база существует в ожидаемом репо.
Злоумышленникам, возможно, никогда не понадобится напрямую изменять основную кодовую базу.
Рабочий процесс CI/CD
Автоматизирует сборку и выпуск из репозитория.
В случае взлома он может создать и опубликовать вредоносный артефакт.
Действия GitHub/логика выпуска
Выполняет шаги по созданию и публикации программного обеспечения.
Отравленное действие или неправомерный рабочий процесс могут превратить законный путь выпуска в вредоносный.
Доверенное издательство OIDC
Заменяет долгоживущие токены реестра недолговечной аутентификацией на основе личности.
Это доказывает, что пакет был опубликован авторизованным рабочим процессом, а не тем, что сам рабочий процесс был безопасным.
Официальный маршрут пакета npm
Распространяет программное обеспечение под ожидаемым именем пакета.
Пользователи по-прежнему могут получать вредоносное ПО, если официальный путь публикации скомпрометирован.
Машина разработчика / CI-раннер
Потребляет официальный пакет
Вредоносное ПО во время установки или выполнения может собирать данные