Як codexui-android та Android-додатки викрадали токени OpenAI Codex

Photo of author

CyberSecureFox Editorial Team

Дослідники з Aikido Security виявили зловмисну кампанію, націлену на розробників, які використовують OpenAI Codex. Npm-пакет codexui-android, представлений як віддалений вебінтерфейс для OpenAI Codex і такий, що набирав понад 29 000 завантажень на тиждень, протягом приблизно місяця приховано зчитував токени автентифікації й надсилав їх на сервер, підконтрольний зловмисникам. Окрім npm-пакета, та сама схема ексфільтрації була виявлена в Android-додатках у Google Play із загальною кількістю більш ніж 60 000 встановлень. Усі, хто використовував цей пакет або пов’язані додатки, мають негайно відкликати свої токени OpenAI.

Механізм атаки: довіра як зброя

Ключова особливість цієї кампанії — вона не спирається на типосквотинг або одноразові пакети-пастки. За даними дослідників, codexui-android був повноцінним робочим пакетом, який активно розроблявся, із «чистим» репозиторієм на GitHub. Шкідливий код було впроваджено приблизно через місяць після першої публікації пакета в реєстрі npm — імовірно, щоб спочатку сформувати довіру користувачів і розширити охоплення.

Починаючи з версії 0.1.82, пакет містив код, який зчитував вміст файла ~/.codex/auth.json і надсилав його на віддалений сервер sentry.anyclaw[.]store/startlog, замаскований під легітимну платформу моніторингу Sentry. Серед викрадених даних:

  • access_token
  • refresh_token
  • id_token
  • ідентифікатор облікового запису (account ID)

Як попереджає OpenAI у своїй документації, при використанні файлового сховища файл ~/.codex/auth.json містить токени доступу у відкритому вигляді й має оброблятися як пароль. Кожного разу, коли користувач входить у застосунок Codex, CLI або розширення IDE через ChatGPT чи API-ключ, облікові дані кешуються локально в цьому файлі.

Дослідник Aikido Чарлі Еріксен наголосив, що викрадений refresh_token, за його оцінкою, не має строку дії, що потенційно надає зловмиснику безстроковий доступ до всіх можливостей скомпрометованого облікового запису. Варто зауважити, що це твердження не підтверджене офіційною документацією OpenAI.

Вектор через Android-додатки

Npm-пакет виявився не єдиним каналом доставки. За даними Aikido, Android-додаток OpenClaw Codex Claude AI Agent (ім’я пакета: gptos.intelligence.assistant), опублікований розробником під іменем BrutalStrike, запускав npm-пакет усередині «пісочниці» PRoot і надсилав облікові дані Codex на той самий ендпоінт.

Технічно додаток розміром близько 26 МБ під час першого запуску розгортав користувацьке середовище Linux на основі Termux у приватне сховище й запускав Node.js через PRoot. Версія npm-пакета не була зафіксована — додаток завантажував актуальну опубліковану версію, що автоматично підтягував шкідливий код після його впровадження у версії 0.1.82.

За даними дослідників, цей додаток набрав понад 50 000 встановлень. Аналогічний ланцюжок ексфільтрації було виявлено в другому додатку того самого розробника — Codex (ім’я пакета: codex.app) — із більш ніж 10 000 завантажень. Решта трьох додатків BrutalStrike, за повідомленнями, не містили шкідливої функціональності.

Реакція автора та цифровий слід

Під час звернення до автора пакета через GitHub його поведінка викликала додаткові запитання. Спочатку він заявив про втрату доступу до npm-акаунта, потім відредагував відповідь, повідомивши, що «проводить внутрішнє розслідування» і «почав видаляти задіяну функціональність і пов’язані дані». Автор стверджував, що облікові дані не передавалися третім сторонам, однак не пояснив, навіщо код для доступу до токенів Codex був впроваджений виключно в npm-збірку пакета.

Показово, що профіль автора в соціальній мережі X містить домен anyclaw[.]store — той самий, на який надсилалися викрадені дані. Згідно із записами WHOIS, домен було зареєстровано лише через два дні після публікації першої версії npm-пакета (0.1.72), що вказує на завчасне планування інфраструктури.

Індикатори компрометації

  • Домен ексфільтрації: sentry.anyclaw[.]store
  • Ендпоінт: sentry.anyclaw[.]store/startlog
  • Домен інфраструктури: anyclaw[.]store
  • Уражений npm-пакет: codexui-android (починаючи з версії 0.1.82)
  • Уражені Android-додатки: gptos.intelligence.assistant, codex.app

Рекомендації

  1. Негайно видаліть пакет codexui-android з усіх проєктів і перевірте залежності на його наявність.
  2. Відкличте та перевипустіть усі токени OpenAI. Видаліть файл ~/.codex/auth.json і повторно автентифікуйтеся після очищення.
  3. Перевірте мережеві журнали на наявність звернень до доменів anyclaw.store і sentry.anyclaw.store.
  4. Видаліть Android-додатки OpenClaw Codex Claude AI Agent і Codex від розробника BrutalStrike, якщо вони були встановлені.
  5. Проведіть аудит активності облікових записів OpenAI щодо несанкціонованих дій за останній місяць.
  6. Розгляньте перехід на зберігання облікових даних Codex у системному сховищі ключів ОС замість файлового зберігання у відкритому вигляді.

Цей інцидент демонструє зрілу тактику атаки на ланцюг постачання: повнофункціональний пакет, період накопичення довіри, шкідливе впровадження лише в npm-збірку за «чистого» репозиторію на GitHub, а також паралельне поширення через мобільні додатки. Розробникам, які використовують інструменти на базі ШІ, варто застосовувати до них ті самі принципи мінімальної довіри, що й до будь-якого стороннього коду: фіксувати версії залежностей, перевіряти відмінності між вихідним кодом у репозиторії та опублікованим пакетом, а також зберігати токени автентифікації виключно в захищених сховищах операційної системи.


CyberSecureFox Editorial Team

Редакція CyberSecureFox висвітлює новини кібербезпеки, уразливості, malware-кампанії, ransomware-активність, AI security, cloud security та security advisories вендорів. Матеріали готуються на основі official advisories, даних CVE/NVD, сповіщень CISA, публікацій вендорів і відкритих звітів дослідників. Статті перевіряються перед публікацією та оновлюються за появи нових даних.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.