概要
みなさんAIやIDEは使用していますか?そのライブラリなどで使用されるものからローカル内部の環境変数やファイルなどを抜き取って、情報を盗み出すハッカーがここ数ヶ月で多く発生しました。
今回記載する記憶に新しいTeamPCPによる攻撃は、従来のサイバー攻撃の常識を覆す「スピード」と「信頼の悪用」が特徴です。特に、汚染されたライブラリが公開されていた時間は極めて短く、従来のセキュリティスキャンでは防げない領域に達しています。
1. 「わずか3時間」の波状攻撃
特筆すべきは、マルウェアが混入されたLiteLLMのバージョン(1.82.7 / 1.82.8)がレジストリ(PyPI)に公開されていた時間です。
- 短時間の露出: 汚染パッケージは、公開からわずか3時間程度でコミュニティやメンテナーによって検知・削除されました。
- ターゲットの即時感染: しかし、この「3時間」の間に、自動更新設定を行っているCI/CDパイプラインや、最新ツールを求めるAIエージェント(Claude Codeなど)が次々と毒入りパッケージを吸い上げ、被害が瞬時に拡大しました。
- スキャンの空白期間: 多くの商用脆弱性スキャナがデータベースを更新する前に攻撃が終了していたため、後追いのチェックでは「異常なし」と判定されるケースがありました。
2. Cloudflareの盾に隠れたデータ窃取
攻撃者は、抜き取った .env ファイルやパスワードを、Cloudflareのネットワーク経由で送信していました。
- 信頼の隠れ蓑: 通信先が Cloudflare の正規インフラであったため、企業のファイアウォールやWAFはこれを「安全な通信」と誤認しました。
- SSL証明書の悪用: 正規の証明書で暗号化されていたため、パケットの中身を解析して「パスワードが含まれていること」を検知することも困難でした。
- インフラへの盲信: 私たちが「Cloudflare経由なら安心」と信じている心理的隙間を突いた、極めて悪質な手法です。
3. 開発者が直ちに行うべき「防御的新常識」
今回の事象から得られる教訓は、「Proxyで通信を絞る」だけでは不十分であり、ライブラリの採用プロセスそのものを変える必要があるということです。
ハッカー集団が実際に行った攻撃内容
TeamPCPによるLiteLLM攻撃(CVE-2026-33634)は、技術的にも非常に巧妙なものでした。実際にどのようなコードが仕込まれていたのか、主要なソースや技術解説サイトの情報をもとに、そのエッセンスを抜粋・解説します。
1. 悪意あるコードの混入箇所と手法
攻撃は2つのバージョンで異なる手法が使われました。
v1.82.7:インポート時の実行
litellm/proxy/proxy_server.py の中に、難読化(Base64エンコードの多重化)されたコードが埋め込まれました。
トリガー: ユーザーが import litellm またはプロキシサーバーを起動した瞬間に実行。
コードのイメージ:
実際にはもっと複雑に難読化されています
import base64, subprocess
exec(base64.b64decode("Y29tcHJvbWlzZWRfc2NyaXB0X2hlcmU..."))
v1.82.8:Python起動時に自動実行(より凶悪)
このバージョンでは、ライブラリをインポートしなくても、Pythonインタプリタを起動するだけで発動する litellm_init.pth というファイルが同梱されました。
仕組み: Pythonは起動時に site-packages 内の .pth ファイルを読み込みます。この一行目が import で始まると、Pythonはそれをコードとして実行してしまいます。
影響: pip list や pytest を実行しただけでも、バックグラウンドで情報窃取が始まります。
2. 情報を盗み出す「収集コード」の中身
解析レポート(CycodeやBitsightなど)によると、以下のような「指紋(挙動)」を持つコードが含まれていました。
ターゲットパスのスキャン
.env ファイルだけでなく、OS全体の機密ファイルをなめるようにスキャンします。
targets = [
"~/.ssh/id_rsa", "~/.aws/credentials", "~/.kube/config",
"~/.env", ".env", "../.env", "../../.env", # 階層を遡って探す
"~/.bash_history", "~/.zsh_history"
]
データの暗号化と送信
盗んだデータは tpcp.tar.gz(TeamPCPの略称)という名前でアーカイブされ、AES-256で暗号化された上で送信されました。
送信先: https://models.litellm.cloud/
巧妙な点: 本物のドメイン(litellm.ai など)に酷似しており、ネットワークログを見ても「AIモデルのロードかな?」と見逃されやすい名前になっていました。
ハッカー側によるパスワードの権限力チェック
TeamPCPは自身のサーバーに送付されたクラウドやSaaS系のパスワードの権限が有効化チェックします。
そこから有効なものをリストアップし、クラウド情報にアクセスし企業情報や、他のパスワードを抜き取り、これらを素早く繰り返します。
対策
① 「Dependency Cooldown(冷却期間)」の導入
「最新=最良」という考えを捨て、公開から一定期間が経過し、コミュニティによる検証が済んだバージョンのみを使用する設定を徹底してください。
- 設定例: npm や uv 等で「公開から3日以上経過したバージョンのみ許可」するフラグを有効にする。これにより、今回のような「3時間の隙」を突く攻撃を100%回避できます。
■ npm の設定 (.npmrc に追記)
min-release-age = 3d
グローバル設定
PC上のすべてのプロジェクトに適用する場合、ターミナルで実行します。
npm config set min-release-age 3d
■ uv (Python) の実行コマンド
uv pip install --exclude-newer '3 days ago' <package>
■ Yarn (v4以降) の設定 (.yarnrc.yml)
npmMinimalAgeGate: "3d"
4. ローカル環境を守る「ゼロトラスト」運用
② AIツールの実行権限を物理的に分離する
Claude Code や Cursor などのAIツールに、ローカルマシンの生環境(Bare Metal)を触らせないでください。
- 対策: AIエージェントによるコマンド実行は、必ず Docker コンテナ内や、専用のサンドボックス環境に限定する。
- 秘匿情報の隔離: ローカルの .env を直接読み取らせるのではなく、必要な環境変数だけを個別に注入する。
③ ネットワークプロキシの「ホワイトリスト化」
Cloudflare 全体を許可するのではなく、業務に必要な特定のドメインのみを許可する、より厳格なプロキシ運用を検討してください。
近年発生したサプライチェーン攻撃リスト
■ 2024年3月:XZ Utils バックドア事件 (CVE-2024-3094)
- 概要: Linuxの圧縮ライブラリ「xz」に、SSH認証を回避してリモートからコード実行を可能にするバックドアが仕込まれました。
- 特徴: 「Jia Tan」と名乗る人物が数年にわたりメンテナーとして信頼を勝ち取った末に実行した、長期潜伏型の攻撃です。
- 影響: 世界中の主要なLinuxディストリビューション(Fedora, Debian, Arch等)のテスト版に混入しましたが、マイクロソフトのエンジニアが偶然パフォーマンスの低下に気づき、発覚しました。
■ 2024年6月:Polyfill.io ドメイン侵害事件
- 概要: 10万以上のウェブサイトで利用されていたJSライブラリ「Polyfill.io」のドメインが中国企業に買収され、その後、マルウェアを含むスクリプトを配信するように書き換えられました。
- 特徴: 買収によって「正当な所有権」を得た後に悪意あるコードを流す手法。
- 影響: ユーザーをギャンブルサイトへリダイレクトしたり、モバイル端末から情報を盗む挙動が確認されました。Googleはこれを使用しているサイトに警告を表示する対応をとりました。
■ 2025年9月:npm大規模フィッシング攻撃
-
概要:
debugやchalkなど、毎週数十億回ダウンロードされる超人気npmパッケージ18個が、メンテナーのアカウント乗っ取りにより汚染されました。 - 特徴: npmサポートを装ったフィッシングにより2段階認証(2FA)を突破。
- 影響: 仮想通貨ウォレットの情報を盗む「クリプトスティーラー」が混入されました。公開時間はわずか2時間程度でしたが、その間に自動ビルドシステム等を通じて世界中に拡散しました。
■ 2026年3月:TeamPCPによる一連の攻撃(LiteLLM / Axios等)
- 概要: ハッカー集団「TeamPCP」が、セキュリティスキャナ「Trivy」の脆弱性を踏み台にして、AIライブラリ「LiteLLM」や通信ライブラリ「Axios」を汚染しました。
まとめ
TeamPCPの攻撃は、AIによって加速した開発スピードを逆手に取ったものです。開発ツールが「親切に」最新版をインストールしようとするその瞬間に、最大の危機が潜んでいます。「最新を疑うこと」と「不要なプラグインなどの削除、整備」こそが、現代の開発者に求められる最強の盾です。