TrapDoor атакує npm, PyPI і Crates.io через AI-конфіги

TrapDoor поширює шкідливі пакети через npm, PyPI і Crates.io, краде developer secrets та ховає інструкції у CLAUDE.md і .cursorrules.

TrapDoor пакети тягнуть ключі і токени у відкритий trapdoor

TrapDoor — це не класична вразливість із CVE, а активна supply-chain кампанія, у якій шкідливі пакети для npm, PyPI і Crates.io крадуть секрети розробників та намагаються впливати на AI coding assistants через файли CLAUDE.md і .cursorrules. За відкритими звітами, кампанія охопила понад 34 пакети і 384 версії, а підтверджені артефакти датуються 19 травня 2026 року [1].

Практичний ризик простий: один встановлений пакет може запускатися під час npm install, імпорту Python-модуля або cargo build, після чого шукає SSH-ключі, GitHub-токени, AWS credentials, змінні середовища, browser data та crypto wallet keystores. Якщо така залежність потрапила на робочу станцію або у CI, потрібно розглядати машину як потенційно скомпрометовану.

Що відрізняє TrapDoor

Звичайні malicious-package кампанії зазвичай крадуть дані одразу після запуску install hook. TrapDoor додає ще один шар: payload може створювати або змінювати CLAUDE.md і .cursorrules, вставляючи приховані інструкції через zero-width Unicode символи [2]. У редакторі такі символи можуть виглядати порожнім або нешкідливим текстом, але AI assistant читає повний Unicode-потік і може прийняти інструкцію як довірений контекст проєкту.

Це особливо небезпечно для команд, які активно використовують Cursor, Claude Code або схожі інструменти у репозиторіях із зовнішніми PR, fork-based workflow чи швидким dependency testing.

Хто має перевірити середовище

СценарійЩо перевіритиЧому це важливо
npm-проєктиpackage.json, lockfiles, install logsnpm payload запускається через postinstall і шукає секрети на workstation або runner.
Python-проєктиrequirements.txt, lockfiles, importsPyPI-пакети можуть виконувати віддалений JavaScript через node -e.
Rust/Sui/Move toolingCargo.toml, Cargo.lock, build.rsCrates.io payload запускається під час build і може шукати wallet keystores.
AI-assisted developmentCLAUDE.md, .cursorrules, PR branchesПриховані Unicode-інструкції можуть потрапити у контекст AI assistant.

Що зробити зараз

  1. Звірте dependency files з IOC-списками. Перевірте package names і версії з Phoenix/CSA/THN-звітів, особливо crypto, DeFi, Solana, Sui, Move та AI tooling packages.
  2. Пошукайте zero-width Unicode. Для CLAUDE.md і .cursorrules використайте grep або скрипт, який шукає U+200B, U+200C, U+200D і U+FEFF.
  3. Не довіряйте “порожнім” AI-конфігам. Якщо файл з’явився після install/build/import або прийшов із стороннього PR, видаліть його та перевірте git history.
  4. Ротуйте секрети після встановлення підозрілого пакета. Міняйте GitHub PAT, SSH keys, cloud access keys, API keys, registry tokens і wallet-related secrets.
  5. Перевірте workstation на malware persistence. Якщо install/build запускався локально, зробіть повну перевірку системи. Для Windows-робочих станцій можна використати Gridinsoft Anti-Malware як другий погляд після видалення підозрілих залежностей.
  6. Перегляньте CI logs. Шукайте AWS STS, GitHub API calls, outbound traffic до attacker-controlled GitHub Pages/Gists, а також запуск скриптів із install/build кроків.

Чому CVE-сканер може нічого не показати

TrapDoor не є “вразливою версією” легітимної бібліотеки. Шкідливим є сам пакет. Тому CVSS/CVE-only процеси можуть показати нуль знахідок, навіть коли lockfile містить malicious dependency. Для таких кампаній потрібні malicious-package feeds, allowlisting, dependency review, install-script restrictions і перевірка поведінки package scripts.

Як зменшити ризик повторення

  • Вимикайте install scripts у CI там, де це реально протестовано: наприклад, npm config set ignore-scripts true може ламати легітимні пакети, тому його треба впроваджувати контрольовано.
  • Додавайте CLAUDE.md, .cursorrules та аналоги до code-review policy. Це не просто documentation files, а поведінкові інструкції для інструментів.
  • Не відкривайте pull request branches від невідомих авторів у робочому середовищі з реальними секретами.
  • Виносьте cloud keys, registry tokens і wallet secrets з developer machines, де це можливо.

Суміжний ризик для репозиторіїв: командам із self-hosted Git варто перевірити кроки зменшення ризику Gogs RCE, особливо відкриту реєстрацію та створення репозиторіїв.

Окремий випадок із легітимним пакетом: офіційний Jscrambler CLI пізніше скомпрометували у п’яти npm-релізах. Перевірка версій Jscrambler і хоста пояснює, чому для 8.18.0 та 8.20.0 потрібно аналізувати також runtime history, а не лише install scripts.

FAQ

TrapDoor має CVE?

Ні. Це malicious-package кампанія, а не одна патчена вразливість. Потрібно перевіряти IOC-пакети, lockfiles і поведінку install/build scripts.

Чи достатньо видалити пакет?

Ні, якщо пакет вже запускався. Після виконання install/import/build потрібно ротувати доступні секрети та перевірити persistence artifacts.

Чому важливі CLAUDE.md і .cursorrules?

AI coding tools можуть читати ці файли як інструкції проєкту. Якщо у них є приховані Unicode-команди, assistant може виконувати небажані дії без очевидного видимого тексту.

References

  1. Phoenix Security Research. “TrapDoor Supply Chain Campaign: Cross-Ecosystem Credential Theft and AI Assistant Poisoning via npm, PyPI, and Crates.io.” Phoenix Security, May 2026, accessed May 27, 2026. https://phoenix.security/trapdoor-supply-chain-ai-poisoning-npm-pypi-crates/
  2. Cloud Security Alliance. “TrapDoor: Supply Chain Attack Poisons AI Coding Assistants.” CSA Lab Space, May 2026, accessed May 27, 2026. https://labs.cloudsecurityalliance.org/research/csa-research-note-trapdoor-multi-ecosystem-supply-chain-ai-t/
  3. The Hacker News Staff. “TrapDoor Supply Chain Attack Spreads Credential-Stealing Malware via npm, PyPI, and CratesIO.” The Hacker News, May 25, 2026, accessed May 27, 2026. https://thehackernews.com/2026/05/trapdoor-supply-chain-attack-spreads.html

Пишу про те, як зробити життя онлайн комфортним і безпечним. Вірю, що сучасний цифровий світ вартий того, щоб бути його частиною.