dependency-confusion は何をしますか?
パッケージマネージャーの依存関係混乱によるサプライチェーン脆弱性テスト:内部パッケージ名が攻撃者制御の公開レジストリに解決され、悪意のあるインストールやスクリプト実行を引き起こす問題を検出します。npm、pip、gem、Maven、Composer、Dockerマニフェストのレビューや、許可されたレッドチームによるサプライチェーン演習に使用します。
概要
依存関係混乱(Dependency Confusion)は、ソフトウェアサプライチェーン攻撃の一種で、組織が内部でのみ使用しているプライベートパッケージ名が、公開レジストリ(npm, PyPI, RubyGems, Maven Central, Packagist, Docker Hubなど)に存在する場合に発生します。パッケージマネージャーが内部レジストリよりも公開レジストリを優先すると、攻撃者は同じ名前の悪意あるパッケージを公開し、開発環境やビルド環境にインストールさせることが可能になります。
このスキルは、以下の機能を提供します:
- 各種パッケージマニフェストの解析
- 依存関係名と公開レジストリ上のパッケージの照合
- 潜在的な依存関係混乱脆弱性の報告
- 許可された環境でのサプライチェーン攻撃シミュレーション
対応パッケージマネージャー
| マネージャー | マニフェストファイル | 公開レジストリ |
|---|---|---|
| npm | package.json | https://registry.npmjs.org |
| pip | requirements.txt, Pipfile, setup.py, pyproject.toml | https://pypi.org |
| gem | Gemfile, *.gemspec | https://rubygems.org |
| Maven | pom.xml | https://repo.maven.apache.org/maven2 |
| Composer | composer.json | https://packagist.org |
| Docker | Dockerfile, docker-compose.yml | Docker Hub |
使用方法
マニフェストのスキャン
yak scan dependency-confusion --manifest package.json --manager npm
ディレクトリ全体の再帰的スキャン
yak scan dependency-confusion --dir ./project --recursive
レッドチーム演習モード(許可が必要)
yak scan dependency-confusion --redteam --registry https://evil-registry.example.com
注意: レッドチーム演習は、明示的な許可を得た環境でのみ実施してください。
出力例
{
"vulnerabilities": [
{
"package": "internal-lib",
"manager": "npm",
"status": "VULNERABLE",
"public_version": "1.0.0",
"registry_url": "https://registry.npmjs.org/internal-lib"
}
],
"safe_packages": [
{
"package": "@internal/private-lib",
"manager": "npm",
"status": "SCOPE_PROTECTED"
}
]
}
環境変数
YAK_DC_REGISTRY_URL: カスタムレジストリURLを指定します。YAK_DC_TIMEOUT: レジストリクエストのタイムアウト(秒)を設定します(デフォルト: 10)。YAK_DC_THREADS: スキャンの並列スレッド数を指定します(デフォルト: 5)。
制限事項
- このスキルは教育目的および許可されたセキュリティテストのためにのみ使用してください。
- スコープ付きパッケージ(例:
@scope/package)は通常、公開レジストリでは衝突が発生しないとみなされます。 - 実際の攻撃実行は、法律および契約に従い、適切な許可を得た場合にのみ行ってください。