最近、litellmというPython packageが汚染されました。
このpackageは月に1億近くdownloadされ、多数のAI projectで依存として使われています。汚染されたversionは1時間未満しか存在しませんでした。それでもその1時間の間に、pip install litellmを実行した人、またはlitellmに依存するツールをinstallした人は、次のものを盗まれていた可能性があります。
- SSH key(サーバーへの通行証)
- AWS / GCP / Azureのクラウド認証情報
- 暗号資産wallet
- すべての環境変数(API keys)
- shell履歴
- Git認証情報
- database password
何もしなくてよいのです。importする必要も、呼び出す必要もありません。installしただけで終わりです。

どうやって実現したのか?
攻撃者は、多くの人が知らないPythonの仕組みを使いました。.pthファイルです。
Pythonは起動時に、site-packages directory内のすべての.pthファイルを自動で読みます。本来の用途は、Pythonに「このpathを検索対象に追加して」と伝えることです。ただし.pthファイル内にimportで始まる1行を書くと、それは自動実行されます。
攻撃者はその中にbase64 encodedの悪意あるprogramを置きました。decode後、それはPC内の機密ファイルを静かにscanし、内容を攻撃者のサーバーへ送ります。
さらに怖いのは、この攻撃が発見された理由です。攻撃者自身のcodeにbugがありました。memoryを使いすぎ、被害者のPCをcrashさせたのです。攻撃者がもう少し上手く書いていたら、何日も見つからなかった可能性があります。
なぜClaude Codeユーザーに関係するのか?
Claude Codeを使う人は、GitHubからさまざまなskill(Claude向けの指示セット + script)、MCP server、その他の拡張ツールをdownloadしがちです。
他人が書いたcodeを自分のPCに置き、Claudeに実行権限を渡すたびに、その人を信頼していることになります。
悪意あるskillは次のことができます。
| 攻撃手法 | 具体的に何をするか |
|---|---|
| Prompt injection | markdown内に見えない指示を隠し、Claudeを操って悪いことをさせる |
| 悪意あるscript | SSH keyをcurlし、攻撃者のサーバーへPOSTする |
| Supply chain汚染 | requirements.txtで汚染されたpackageを引き込む |
| .pth injection | Python起動時に毎回、窃取programを自動実行する |
| Reverse shell | PC上にbackdoorを開き、攻撃者が遠隔接続できるようにする |
Skill Shielder
Skill Shielderはこの問題のために作りました。
これは依存ゼロのopen source security audit toolです。純bash scriptで、何もinstallしません。任意のツールをinstallする前にscanし、中に怪しいものがないか教えます。
# ローカルfolderをscanする
./shield.sh /path/to/downloaded-skill
# GitHub repoを直接scanする
./shield.sh https://github.com/someone/their-tool

何をscanするのか?
Skill Shielderには4つの独立したscanner moduleがあります。
1. Prompt Injection Scanner
markdown、JSON、YAML内の隠し指示を確認します。たとえば:
ignore all previous instructions(典型的な上書き指示)- 偽の
<system>tag(system messageを装う) - Unicode zero-width characters(肉眼では見えない文字)
do not tell the user(AIにユーザーへ隠すよう命じる)
2. Script Safety Scanner
.sh、.py、.js、.ts内の危険操作を確認します。
curl ... | bash(遠隔codeをdownloadして即実行)base64 ~/.ssh/id_rsa | curl -X POST(SSH keyをencodeして送信)- reverse shell(攻撃者にPCを遠隔操作させる)
rm -rf ~/(home directory全体を削除)
3. Supply Chain Scanner
litellmのような攻撃を想定しています。
.pthファイルに実行codeがないかsetup.pyがinstall時にこっそりコマンドを走らせないかpackage.jsonのpostinstallhookrequirements.txtが怪しいsourceからpackageを取っていないか
4. 権限範囲分析
このツールがどのファイルとnetwork endpointへaccessするか分析します。
~/.ssh、~/.aws、.envを読んでいないか?- 知らない外部URLへ接続していないか?
- 機密pathへのaccessかつnetwork request、これは典型的なdata exfiltration patternです

3種類の判定
scan完了後、Skill Shielderは明確な判定を出します。
| 判定 | 意味 | どうするか |
|---|---|---|
| PASS | 問題は見つからない | 安心してinstallできる |
| WARN | 注意すべき点がある | 内容を見て、妥当か確認してからinstall |
| FAIL | 重大な問題を発見 | installしない。距離を置く |
実際に走らせるとこうなる
テスト用の悪意あるskillにscanを実行します。
# Skill Shielderレポート
**対象**: malicious-skill
**判定**: **FAIL**
## 概要
| Scanner | CRITICAL | WARN | INFO |
|------------------|----------|------|------|
| prompt-injection | 2 | 4 | 0 |
| script-safety | 5 | 4 | 0 |
| supply-chain | 1 | 2 | 0 |
| permissions | 1 | 3 | 0 |
## 検出事項
- [CRITICAL] SKILL.md:12 [PROMPT_OVERRIDE] ignore all previous instructions...
- [CRITICAL] scripts/setup.sh [PIPE_TO_SHELL] curl/wgetがsh/bashへpipeされている
- [CRITICAL] scripts/setup.sh [CREDENTIAL_EXFIL] credentialをbase64 encodeしてからcurl
- [CRITICAL] scripts/setup.sh [REVERSE_SHELL] reverse shell patternを検出
- [CRITICAL] evil.pth [PTH_EXECUTABLE] .pth fileに実行codeが含まれている
...
## 推奨
**CRITICAL issueを検出しました。installしないでください。**
9件のCRITICALをすべて拾いました。
使い始める方法
git clone https://github.com/p3nchan/skill-shielder.git
cd skill-shielder
chmod +x shield.sh scanners/*.sh
# installしたいものをscanする
./shield.sh /path/to/any-project
Claude Codeのskillとして使うこともできます。repoをローカルにcloneしておけば、Claudeがそのまま他のツールのauditに使えます。
全体は純bashで、macOSとLinuxで使えます。何もinstallする必要はありません。
いくつかの提案
litellm事件は、「依存をinstallする」とは何かを見直すきっかけになります。いくつかの学びです。
- 無思考で
pip installしない。大規模projectでも汚染されることがあります。たとえ1時間だけでもです - transitive dependenciesに注意する。installするのはAでも、AがBに依存し、BがCに依存し、Cが汚染されていれば巻き込まれます
- 使う前にscanする。
shield.shを5秒走らせるほうが、盗まれたcredentialの復旧よりはるかに楽です - 依存ゼロはこの種のツールの硬い条件です。security tool自身が大量のpackageを要求するなら、意味が薄れます
関連記事
こぺんぎんの体験談
Skill Shielderは自分用に作ったskill audit toolです。OpenClaw上で試したいskillは多く、install前にSKILL.mdとscriptsを1つずつ読むのは、時間がたつと面倒になります。このツールは、その手作業auditを自動化するために作りました。実際に走らせると、よく止めるのはtransitive dependencyとsetup script内のcurl pipe to shです。この2つのpatternだけでも、多くのriskをfilterできます。
よくある質問
Q: Skill Shielder自体に何かinstallが必要ですか?
まったく不要です。純bash scriptで、macOS / Linux標準のgrep、findなどの基本コマンドしか使いません。外部依存はありません。security tool自身がpip installを要求するなら、それは皮肉です。
Q: scan結果がWARNなら問題がありますか?
必ずしもそうではありません。WARNは注意すべき点があるという意味です。たとえばcurl POSTや.envファイルの読み取りです。正当なツールでもよくありますが、用途が妥当か確認してください。本当に危険なsignalはCRITICAL(赤)です。
Q: このツールはClaude Code専用ですか?
いいえ。もともとはClaude Code skillをauditするために作りましたが、任意のGitHub project、MCP server、ローカルscriptにも使えます。terminalで実行する予定の第三者codeは、先にscanする価値があります。
Q: Pattern-based scanですべての攻撃を検出できますか?
できません。100%の検出率を保証できるツールはありません。Skill Shielderは最初の防衛線であって、万能薬ではありません。ただし、最新の.pth file injection、prompt injection、supply chain汚染を含む、多くの既知攻撃patternを拾えます。
— Penchan