
プロジェクトの依存関係をスキャンして依存関係の混乱(dependency confusion)の脆弱性を検出し、複数のレジストリ(npm、PyPI など)にわたるパッケージ所有者メールの乗っ取りリスクをチェックします。
DepFuzzer は、依存関係の混乱(dependency confusion)や、所有者のメールアドレスが乗っ取られる可能性のあるプロジェクトを発見するためのツールです。
/!\ このツールには python >= 3.10 が必要です /!\
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip3 install -r requirements.txt
または、Docker イメージを使用することもできます:
$ docker build -t depfuzzer:latest .
$ docker run --rm -it -v "$PWD":/host depfuzzer
このツールは、依存関係が宣言されている特定のファイルを検索するためにフォルダをスキャンするために使用できます。例:
package.jsonrequirements.txtpython3 main.py --provider pypi --path ~/Documents/Projets/MyProject/
さらに、このツールは特定の依存関係を1つスキャンするためにも使用できます:
python3 main.py --provider pypi --dependency requests:0.1.0
このツールは deps.dev と呼ばれるサードパーティを使用していることに注意してください。これに到達するにはプロキシを指定する必要があるかもしれません。
______ ______
| _ \ | ___|
| | | |___ _ __ | |_ _ _ ___________ _ __
| | | / _ \ '_ \| _| | | |_ /_ / _ \ '__|
| |/ / __/ |_) | | | |_| |/ / / / __/ |
|___/ \___| .__/\_| \__,_/___/___\___|_|
| |
|_|
usage: main.py [-h]
--provider {npm,pypi,cargo,go,maven,gradle,rubygems,nuget,all}
(--path PATH | --dependency DEPENDENCY)
[--print-takeover]
[--output-file OUTPUT_FILE]
[--check-email]
Dependency checker
options:
-h, --help show this help message and exit
--provider {npm,pypi,cargo,go,maven,gradle,rubygems,all}
--path PATH Path to folder(s) to analyze
--dependency DEPENDENCY
Specify the name of one dependency to check. If you specify the version,
please use ':' to separate name and version.
--print-takeover Don't wait the end of the script to display takeoverable modules
--output-file OUTPUT_FILE
File where results will be stored
--check-email Check if the email's owner of the dependency exists. Might be longer to
analyze.
バグを発見した場合やアイデアがある場合は、このプロジェクトでイシューを開くことをためらわないでください!
このツールは、プロジェクト内のすべての依存関係の混乱を見つけることを目的としたものではありません。さらに、このツールは requirements ファイルのパースの複雑さにより、誤検知(false positives)を生成することが知られています。
行動を起こす前に、それが悪用可能かどうかを常に手動で確認してください。
実際にこの脆弱性を悪用すると、制御不能な副作用が生じる可能性があることに注意し、十分に注意してください。
このツールが悪意のある目的で使用された場合、Synacktiv は責任を負いかねます。これは教育目的のみを対象としています。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。