TGViewer
CTT Report Hub CTT Report Hub @aptreports · 3.52K subscribers
Post #32005 27
CTT Report Hub #ParsedReport #CompletenessLow 28-08-2026 OpenAPI React Query Codegen Compromised in Mini Shai-Hulud npm Supply Chain Attack https://socket.dev/blog/openapi-react-query-codegen-npm-compromise Report completeness: Low Actors/Campaigns: Mini_shai-hulud …
#ParsedReport #ChatGPT #Translated
Autotext: (TI Report Analyser + ChatGPT + Auto Translate)

------
Десять вредоносных версий пакета `@7nohe/openapi-react-query-codegen` были опубликованы через скомпрометированный рабочий процесс GitHub Actions, несмотря на наличие действительных свидетельств происхождения npm. Пакеты выполняют обфусцированные полезную нагрузку во время установки для расшифровки и запуска кода, нацеленного на учетные данные облачных сервисов, реестров, GitHub и ИИ-агентов, при этом возможности распространения связаны с кампанией Mini Shai-Hulud.
-----

28 августа 2026 года были опубликованы десять вредоносных версий пакета npm `@7nohe/openapi-react-query-codegen` двумя волнами с интервалом примерно в 20 минут. Выпуски затронули все поддерживаемые линейки версий, остаются доступными для установки и включали вредоносную последнюю версию `3.0.4`. Скомпрометированные версии выполняют код, контролируемый злоумышленником, в процессе установки и могут повлиять на системы разработчиков и CI-раннеры.

Основная полезная нагрузка представляет собой упакованный загрузчик на JavaScript с именем `3FWCvzduYZg.js`. Его размер составляет приблизительно 5,7 МБ, а защита реализована с помощью однобайтового XOR-обфускации. Во время выполнения загрузчик расшифровывает встроенную полезную нагрузку AES-128-GCM, записывает расшифрованное содержимое в файл со случайным именем в системной временной директории, выполняет его с помощью `child_process.execSync`, а затем удаляет временный файл. Полезная нагрузка второго этапа нацелена на облачные учетные данные, учетные данные реестров пакетов npm и других, секреты GitHub Actions и конфигурацию ИИ-агентов. Она также включает функции самораспространения, связанные с кампанией Mini Shai-Hulud. Дополнительные механизмы закрепления и функциональность полезной нагрузки остаются под исследованием.

Выпуски первого поколения инициируют выполнение через `binding.gyp`, который использует обфусцированное выражение на Python для вызова `os.system` и запуска вредоносного JavaScript во время обработки `node-gyp`. Связанный предварительный выпуск использует сценарий `preinstall` для загрузки и выполнения установщика Bun перед запуском `is_it_this_simple.js` с параметрами рабочего процесса, репозитория и целевого пакета.

Все десять выпусков содержат действительные утверждения о происхождении npm, сгенерированные через механизм доверенной публикации GitHub Actions. Утверждения идентифицируют легитимный рабочий процесс выпуска и чистый коммит репозитория, что демонстрирует: подписи происхождения не предотвратили компрометацию. Расследователи установили, что рабочий процесс публикации, запускаемый по комментарию, мог быть вызван недоверенным аккаунтом GitHub, что позволяло публиковать код из форка pull-request под доверенной идентичностью репозитория. Злоумышленник использовал форк `p00paboot/openapi-react-query-codegen` и несколько вредоносных коммитов для подготовки кода.
More from @aptreports
  1. Oct 14, 2026#ParsedReport #ChatGPT #Translated Autotext: (TI Report Analyser + ChatGPT + Auto Translat…
  2. Oct 14, 2026#ParsedReport #GeneratedSchema Generated with GPT-4
  3. Oct 14, 2026#ParsedReport #CompletenessHigh 13-10-2026 MALFEX Moves Its npm Loader into a Native Windo…
  4. Oct 14, 2026#ParsedReport #ChatGPT #Translated Autotext: (TI Report Analyser + ChatGPT + Auto Translat…
  5. Oct 14, 2026#ParsedReport #GeneratedSchema Generated with GPT-4
  6. Oct 14, 2026#ParsedReport #CompletenessLow 13-10-2026 RSVP to Disaster: How One Click Installs a RAT h…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →