Coding Agentの依存関係のハルシネーション/Slopsquatting防御
記事状態: 公開 · 最終確認: 2026-10-04
要点
AIが生成した依存パッケージ名は導入候補として扱います。存在確認、正常なhash、出典・来歴、既知脆弱性scanのいずれも単独では安全性を保証しません。導入前の承認主体の識別と、実際に取得する成果物の主体の識別・bytesを結び付けて確認する運用が必要です。この運用は設計上の提案であり、特定製品の防御率を実証したものではありません。
現在の判断
USENIX Security 2025の研究は調査対象LLMのpackage hallucinationと同一名の再推薦を報告しています。測定率を現行全モデルへ適用しません。[S1]
どこまで当てはまるか
Coding Agentの依存関係のハルシネーション/Slopsquatting防御
詳しく理解する
分析と推論
導入許可はreviewed registry/name/バージョン/publisher/出典/digestへ限定し、取得bytesとの一致を確認します。未承認名、主体の識別変更、bytes変更、承認期限切れは再reviewへ返します。allowlistの信頼基点が侵害されれば、この設計だけでは防げません。
実装・運用
資料照合とoffline synthetic policy fixtureのみです。9ケースの期待結果が一致しました。registry、install、暗号署名、malware判定、LLM API、組織mirrorは試験していません。fixtureのALLOW_FIXTURE_ONLYを本番環境の導入許可と扱いません。
利用できる条件
パッケージマネージャーのバージョン、レジストリ/ミラー、ロックファイルとすべての依存関係、成果物のダイジェスト、承認済みの所有者/有効期限、スクリプトと実行時の制約、外部への送信(egress)、例外の監査、および機密情報を含むマニフェストの送信先を確認します。
出典
- S1: Spracklenほか、USENIX Security 2025、§5.3 — https://www.usenix.org/system/files/usenixsecurity25-spracklen.pdf
- S3: Churilov, 2026 プレプリント v3(要旨確認のみ)— https://arxiv.org/abs/2605.17062v3
- S4: pip Secure installs v26.2.1 — https://pip.pypa.io/en/stable/topics/secure-installs/
- S5: pip install / パッケージの検索 — https://pip.pypa.io/en/stable/cli/pip_install/
- S6: npm / 出典・来歴 限界 — https://docs.npmjs.com/generating-provenance-statements/
- S7: npm-audit v11 docs — https://docs.npmjs.com/cli/v11/commands/npm-audit/
- T1: EA-685_Evidence_Packet.md / fixtures/dependency_gate.py / results/EA-685.json(監査bundle内の再現資料)
確認できていること
USENIX Security 2025の研究は調査対象LLMのpackage hallucinationと同一名の再推薦を報告しています。測定率を現行全モデルへ適用しません。[S1]
pip v26.2.1のハッシュチェックは、すべての要求および依存関係のピン留めとローカルハッシュを要求します。インデックスから提供されるハッシュと、別途承認されたハッシュでは、信頼の起点(全体の起点 of trust)が異なります。複数のインデックスを使用する場合、単純にプライベートなソースが優先されるわけではなく、extra-index-urlには依存関係の混入(dependency confusion)に関する警告があります。[S4, S5]
npm 出典・来歴は生成・構築出所への検証可能な接続であり、悪意あるコードの不在を保証しません。npm 監査の既知脆弱性照合と監査 signaturesの署名確認を区別します。ignore-scriptsでもexplicit npm 実行/test等の意図されたscriptまで無効にはなりません。[S6, S7]
失敗条件・反証
新しく登録された名前、既存publisher侵害、transitive依存、platform別成果物、確認後の再解決、例外導入、install後のimport/実行/生成・構築を別々に確認します。正しいhashでも元のコードが悪意ある場合は通過し得ます。script抑制、SBOM、署名、sandboxは個別の防御層であり相互の代替にはなりません。
存在、ピン留め、ハッシュ、来歴、および監査(監査)の合格(PASS)を、「安全である」「スロップ・スクワッティング(slopsquatting)対策済みである」「幻覚がゼロである」と読み替えないでください。ステージング候補は、未監査かつ未公開の状態です。
実務での使い方
導入許可はreviewed registry/name/バージョン/publisher/出典/digestへ限定し、取得bytesとの一致を確認します。未承認名、主体の識別変更、bytes変更、承認期限切れは再reviewへ返します。allowlistの信頼基点が侵害されれば、この設計だけでは防げません。
資料照合とoffline synthetic policy fixtureのみです。9ケースの期待結果が一致しました。registry、install、暗号署名、malware判定、LLM API、組織mirrorは試験していません。fixtureのALLOW_FIXTURE_ONLYを本番環境の導入許可と扱いません。
パッケージマネージャーのバージョン、レジストリ/ミラー、ロックファイルとすべての依存関係、成果物のダイジェスト、承認済みの所有者/有効期限、スクリプトと実行時の制約、外部への送信(egress)、例外の監査、および機密情報を含むマニフェストの送信先を確認します。
まだ確認できていないこと
- EA-685-UNKNOWN-01
現行のすべてのLLMにおける幻覚率、対象組織の信頼の起点(trust 全体の起点)、実際の解決者(resolver)/署名の挙動、ミラーの侵害、サンドボックス、SBOMの漏れ、および2026再評価プレプリントの加工せず中継するプロキシ(raw)による再現は、未確認です。
根拠資料
- 研究資料研究資料
S1: Spracklen et al., USENIX Security 2025, §5.3 —
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
S3: Churilov, 2026 プレプリント v3(要旨確認のみ)—
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
S4: pip Secure installs v26.2.1 —
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
S5: pip install / Finding Packages —
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
S6: npm / 出典・来歴 限界 —
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
S7: npm-audit v11 docs —
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
更新履歴
EA-685-FIRST-WORK-20261004: 正式な 監査/publication 対応付け
出典ID・検証情報・機械可読データ
根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。
- 記事ID
- EA-685
- 最終確認日
- 2026-10-04
- 提供元・モデル・プラン・利用環境
- —
- 対象地域
- —
元資料の全文と収録照合記録
PUBLIC_CLAIM
AIが生成した依存パッケージ名は導入候補として扱います。存在確認、正常なhash、provenance、既知脆弱性scanのいずれも単独では安全性を保証しません。導入前の承認identityと、実際に取得するartifactのidentity・bytesを結び付けて確認する運用が必要です。この運用は設計上の提案であり、特定製品の防御率を実証したものではありません。
ESTABLISHED
USENIX Security 2025の研究は調査対象LLMのpackage hallucinationと同一名の再推薦を報告しています。測定率を現行全モデルへ適用しません。[S1]
pip v26.2.1のhash-checkingは全要求・依存のpinとlocal hashを要求します。index提供hashと独立の承認hashは信頼基点が異なります。複数indexは単純な私有元優先ではなく、extra-index-urlにはdependency confusion警告があります。[S4, S5]
npm provenanceはbuild出所への検証可能な接続であり、悪意あるコードの不在を保証しません。npm auditの既知脆弱性照合とaudit signaturesの署名確認を区別します。ignore-scriptsでもexplicit npm run/test等の意図されたscriptまで無効にはなりません。[S6, S7]
INFERENCE
導入許可はreviewed registry/name/version/publisher/source/digestへ限定し、取得bytesとの一致を確認します。未承認名、identity変更、bytes変更、承認期限切れは再reviewへ返します。allowlistの信頼基点が侵害されれば、この設計だけでは防げません。
FAILURE_ENVELOPE
新しく登録された名前、既存publisher侵害、transitive依存、platform別artifact、確認後の再解決、例外導入、install後のimport/run/buildを別々に確認します。正しいhashでも元のコードが悪意ある場合は通過し得ます。script抑制、SBOM、署名、sandboxは個別の防御層であり相互の代替にはなりません。
IMPLEMENTATION_STATE
資料照合とoffline synthetic policy fixtureのみです。9ケースの期待結果が一致しました。registry、install、暗号署名、malware判定、LLM API、組織mirrorは試験していません。fixtureのALLOW_FIXTURE_ONLYをproductionの導入許可と扱いません。
AVAILABILITY_GATES
package manager version、registry/mirror、lockと全依存、artifact digest、承認owner/expiry、scriptとruntime制約、egress、例外監査、秘密情報を含むmanifestの送信先を確認します。
UNKNOWN
現行全LLMの幻覚率、対象組織のtrust root、実resolver/署名挙動、mirror侵害、sandbox、SBOM漏れ、2026再評価preprintのraw再現は未確認です。
STOP_CONDITION
存在・pin・hash・provenance・audit PASSを「安全」「slopsquatting防御済」「幻覚ゼロ」と読み替えないでください。staging candidateは未監査・未公開です。
SOURCES
- S1: Spracklen et al., USENIX Security 2025, §5.3 — https://www.usenix.org/system/files/usenixsecurity25-spracklen.pdf
- S3: Churilov, 2026 preprint v3(要旨確認のみ)— https://arxiv.org/abs/2605.17062v3
- S4: pip Secure installs v26.2.1 — https://pip.pypa.io/en/stable/topics/secure-installs/
- S5: pip install / Finding Packages — https://pip.pypa.io/en/stable/cli/pip_install/
- S6: npm / Provenance limitations — https://docs.npmjs.com/generating-provenance-statements/
- S7: npm-audit v11 docs — https://docs.npmjs.com/cli/v11/commands/npm-audit/
- T1: EA-685_Evidence_Packet.md / fixtures/dependency_gate.py / results/EA-685.json(監査bundle内の再現資料)
EVD-EA-685-URL-8E1C83EAF1DC研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCES1: Spracklen et al., USENIX Security 2025, §5.3 —
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-8E1C83EAF1DC
- 検証箇所
- SOURCES · S1 · - S1: Spracklen et al., USENIX Security 2025, §5.3 — https://www.usenix.org/system/files/usenixsecurity25-spracklen.pdf
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-685-URL-4693A7218558研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCES3: Churilov, 2026 preprint v3(要旨確認のみ)—
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-4693A7218558
- 検証箇所
- SOURCES · S3 · - S3: Churilov, 2026 preprint v3(要旨確認のみ)— https://arxiv.org/abs/2605.17062v3
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-685-URL-AE875C4A049E研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCES4: pip Secure installs v26.2.1 —
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-AE875C4A049E
- 検証箇所
- SOURCES · S4 · - S4: pip Secure installs v26.2.1 — https://pip.pypa.io/en/stable/topics/secure-installs/
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-685-URL-B533BC778486研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCES5: pip install / Finding Packages —
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-B533BC778486
- 検証箇所
- SOURCES · S5 · - S5: pip install / Finding Packages — https://pip.pypa.io/en/stable/cli/pip_install/
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-685-URL-0869A4CCDB56研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCES6: npm / Provenance limitations —
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-0869A4CCDB56
- 検証箇所
- SOURCES · S6 · - S6: npm / Provenance limitations — https://docs.npmjs.com/generating-provenance-statements/
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-685-URL-A7A8FFF2D41F研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-685-URL-A7A8FFF2D41F
- 検証箇所
- SOURCES · S7 · - S7: npm-audit v11 docs — https://docs.npmjs.com/cli/v11/commands/npm-audit/
- 適用範囲
- SOURCES
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EA-685-R11-RESEARCH研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKETEA-685 監査済みresearch / canonical revision binding
- 裏付ける内容
- USENIX Security 2025の研究は調査対象LLMのpackage hallucinationと同一名の再推薦を報告しています。測定率を現行全モデルへ適用しません。[S1]
- 確認日
- 2026-10-04
- 出典・実験ID
- EA-685-FIRST-WORK-20261004
- 検証箇所
- EA-685-FIRST-WORK-20261004 · content/staging/EA-685.md
- 適用範囲
- 監査済みEA本文・canonical revision・既存Source Graph relationの範囲。欠損currentnessは推測で閉じない。
- 出典・来歴
- AUDIT_PASS_CANONICAL_BINDING
- 限界
- canonical監査・revision bindingの存在を示す。外部ソースcurrentnessが本文またはcontrol-planeで確定していない場合は、currentnessをUNKNOWNのまま保持する。
EA-685-R11-WEB-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACKEA-685 Web body identity / canonical readback
- 裏付ける内容
- canonical staging bodyのSHA-256一致とR9 canonical ledger readbackをProduction projectionの入力として検証する。
- 確認日
- 2026-10-04
- 出典・実験ID
- WEBBODY-EA0685-R8-3AD4C31F
- 検証箇所
- WEBBODY-EA0685-R8-3AD4C31F · content/staging/EA-685.md · EA-685-FIRST-WORK-20261004
- 適用範囲
- R9/R10 canonical readback後のProduction生成時body identity。
- 出典・来歴
- CANONICAL_READBACK_BODY_HASH_MATCH
- 限界
- body identity/readbackは本文claim自体の真偽や外部ソースの最新性を追加保証しない。
- 出典ID
- EA-685-FIRST-WORK-20261004, SRC-EA-685-URL-8E1C83EAF1DC, SRC-EA-685-URL-4693A7218558, SRC-EA-685-URL-AE875C4A049E, SRC-EA-685-URL-B533BC778486, SRC-EA-685-URL-0869A4CCDB56, SRC-EA-685-URL-A7A8FFF2D41F, WEBBODY-EA0685-R8-3AD4C31F
- 追跡中のUNKNOWN ID
- EA-685-UNKNOWN-01
- 再確認のきっかけ
- 正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合
機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。
同じ記事IDの機械可読データです。