34個の悪性パッケージTrapDoor、AIコーディング設定も攻撃経路に

開発者の端末が、また供給網攻撃の中心になった。Socketが公開したTrapDoorキャンペーンは、2026年5月22日20:20:18 UTC以降、npm、PyPI、Crates.ioに34個を超える悪性パッケージと384以上のバージョンを投入した。狙われたのはcrypto、DeFi、Solana、Sui、Move、AIツールを扱う開発環境で、walletファイル、SSHキー、cloud credential、GitHub tokenが同じ作業端末に置かれやすい領域だ。

Socketの分析によると、npmの21パッケージはpostinstall hookでtrap-core.jsを実行した。このpayloadはローカルのsecretを探し、AWSとGitHub APIで盗んだtokenが有効かどうかを確認したうえで送信を準備する。PyPIの7パッケージはimportだけで攻撃者のGitHub PagesドメインからJavaScriptを取得し、node -eで実行した。Crates.ioの6パッケージはRustのbuild.rsを使い、ビルド時に暗号資産のkeystoreを探した。

今回の特徴は、registryごとに異なる実行経路を用意した点にある。JavaScriptではinstall時、Pythonではimport時、Rustではcompile時に動く。単一のscannerで見つけにくい形に分散しつつ、背後では同じJavaScript系の基盤に寄せている。攻撃者はパッケージ名も慎重に選び、llm-context-compressor、model-switch-router、prompt-engineering-toolkit、mnemonic-safety-check、eth-security-auditorのように、AI開発者やwallet利用者が警戒しにくい名前を使った。

さらに重いのはAIコーディング支援ツールを直接狙ったことだ。TrapDoorは.cursorrulesやCLAUDE.mdに隠れた指示を置き、AI assistantに「security scan」のように見える作業としてsecret探索と持ち出しを行わせようとした。SocketはLangChain、Langflow、LLaMA Index、MetaGPT、OpenHands、browser-useなどへのpull requestで、hidden Unicodeを含む.cursorrulesが投入されていたことも確認している。

これは、実行ファイルだけを危険視する防御では足りないことを示している。AI agentはrepository内の近いファイルを読み、project ruleを解釈し、作業計画を立てる。攻撃者が信頼されたrepositoryにinstructionファイルを置ければ、ただのテキストが権限ある操作への入口になる。人間が怪しいコマンドを明示的に実行しなくても、agentがローカルルールに従う形で危険な探索を進めてしまう。

影響を受けた可能性があるチームは、lock fileと最近のinstall履歴をまず確認すべきだ。対象パッケージが入っていた場合、SSHキー、GitHub token、cloud credential、npm publish token、wallet関連ファイルは露出済みとして扱うのが現実的だ。~/.gitconfig、.git/hooks、shell起動ファイル、cron、systemd unit、予期しない.cursorrulesやCLAUDE.mdも確認対象になる。

TrapDoorが示した本質は、AI時代の供給網防御がregistry別のauditだけでは閉じないということだ。npm auditはRustのbuild.rsを見ない。pip-auditはNodeのpostinstallを見ない。AI coding workflowを使う組織では、コード、install時の挙動、assistantが読むinstructionファイルを同じ防御面として扱う必要がある。