Популярный пакет Codex npm крал токены разработчиков в течение месяца
TL;DRA популярный npm пакет для OpenAI Codex с 29,000 загрузками в неделю на протяжении месяца крал токены аутентификации разработчиков. Та же цепочка кражи учетных данных также проходила через два Android-приложения с более чем 60,000 общими загрузками.
npm пакет выглядел легитимным. У него был активный репозиторий на GitHub, стабильная история разработки и примерно 29,000 загрузок в неделю. Для разработчиков, использующих OpenAI Codex, он предлагал именно то, что рекламировал: удаленный веб-интерфейс для инструмента AI-кодирования.
Но в течение последнего месяца каждое вызов codexui-android также безмолвно считывал содержимое файла аутентификации Codex пользователя и отправлял его на сервер, контролируемый злоумышленником. Украденные данные включают токены доступа, токены обновления, ID токены и ID аккаунтов, все необходимое для бесконечного выдачи себя за разработчика.
«Токен обновления не истекает», — написал исследователь Aikido Security Чарли Эриксен. «Злоумышленник, обладающий им, может бесконечно выдавать себя за вас».
Как это работало
Атака была необычно сложной для компрометации цепочки поставок npm. В отличие от типичных атак цепочки поставок, которые полагаются на опечатки или одноразовые пакеты, codexui-android был функциональным инструментом под активной разработкой. Его репозиторий на GitHub оставался чистым. Зловредный код существовал только в сборке npm.
Пакет извлекает содержимое файла Codex ~/.codex/auth.json, текстового кэша учетных данных, создаваемого каждый раз, когда пользователь входит в систему через приложение Codex, CLI или расширение IDE. Затем он отправляет эти учетные данные на sentry.anyclaw[.]store, имя сервера, выбранное для имитации Sentry, легитимной платформы отслеживания ошибок.
Зловредная функциональность была введена примерно через месяц после первой публикации пакета, что является распространенной тактикой для создания доверия пользователей перед развертыванием полезной нагрузки. Записи WHOIS показывают, что домен эксфильтрации был зарегистрирован 12 апреля 2026 года, всего через два дня после загрузки первой версии пакета (0.1.72) на npm. Зловредный код появился с версии 0.1.82 и далее.
Та же атака из Play Store
npm пакет не был единственным вектором доставки. Aikido обнаружил, что Android-приложение под названием OpenClaw Codex Claude AI Agent, опубликованное разработчиком по имени BrutalStrike, запускало тот же npm пакет внутри песочницы PRoot на устройствах пользователей. Приложение накопило более 50,000 загрузок на Google Play.
Второе приложение BrutalStrike, просто названное Codex, имело более 10,000 загрузок и содержало ту же цепочку эксфильтрации. Поскольку ни одно из приложений не фиксировало конкретную версию npm пакета, они автоматически загружали все, что было в данный момент опубликовано, что означало, что зловредный код доставлялся мобильным пользователям в момент его публикации.
Общая поверхность атаки, примерно 29,000 еженедельных загрузок npm плюс более 60,000 мобильных установок, делает эту кампанию одной из наиболее значительных по кражам учетных данных, нацеленных на экосистему инструментов для разработчиков AI.
Меняющаяся история автора
npm аккаунт, стоящий за пакетом, принадлежит «friuns», идентифицированному Aikido как Игорь Левочкин. Когда его спросили на GitHub, автор изначально заявил, что потерял доступ к аккаунту npm, затем изменил ответ, чтобы сказать, что они «в настоящее время расследуют эту проблему внутренне».
Левочкин сказал, что никакие данные учетных записей не были переданы третьим лицам, но не объяснил, почему код эксфильтрации был вставлен только в сборку npm, или почему доступ к токенам Codex пользователей был необходим в первую очередь. Профиль X, связанный с аккаунтом, включает домен anyclaw[.]store, тот же домен, на который были отправлены украденные токены.
Растущий паттерн
Атака происходит в период нарастающих угроз для инструментов разработки AI. В прошлом месяце отравленное расширение VS Code нарушило внутренние репозитории GitHub, эксфильтруя 3,800 репозиториев после того, как сотрудник установил зловредный пакет. Эта атака, приписываемая группе TeamPCP, собрала учетные данные из хранилищ 1Password, конфигураций Claude Code и AWS.
Урок из обоих инцидентов один и тот же. Поскольку инструменты AI-кодирования становятся необходимой инфраструктурой, токены аутентификации, которые они генерируют и часто хранят в открытом виде, становятся высокоценными целями. Документация OpenAI сама предупреждает разработчиков относиться к ~/.codex/auth.json как к паролю. Кампания codexui-android является демонстрацией того, что происходит, когда этот совет игнорируется, и когда инструменты, которым доверяют разработчики, созданы для эксплуатации этого доверия.
Aikido также отдельно сообщил, что удаленные ключи API Google остаются активными до 23 минут после отзыва, окно, которое злоумышленники могут использовать для доступа к данным пользователей и разговорам Gemini. Google с тех пор классифицировал проблему как ошибку P0. Это открытие подчеркивает более широкую проблему: отзыв учетных данных в облачных средах редко происходит так быстро, как предполагают защитники.
Другие статьи
Популярный пакет Codex npm крал токены разработчиков в течение месяца
Пакет codexui-android npm без уведомления эксфильтровал токены аутентификации OpenAI Codex на сервер злоумышленника в течение месяца, затронув 29,000 загрузок в неделю.
