
Analizza le dipendenze del progetto per individuare vulnerabilità di dependency confusion e verifica i rischi di takeover dell'email del proprietario dei pacchetti su più registry (npm, PyPI, ecc.).
DepFuzzer è uno strumento utilizzato per individuare dependency confusion o progetti in cui l'email del proprietario può essere soggetta a takeover.
/!\ Questo strumento richiede python >= 3.10 /!\
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip3 install -r requirements.txt
Oppure puoi usare l'immagine docker :
$ docker build -t depfuzzer:latest .
$ docker run --rm -it -v "$PWD":/host depfuzzer
Lo strumento può essere utilizzato per scansionare cartelle alla ricerca di file specifici in cui sono dichiarate le dipendenze, per esempio :
package.jsonrequirements.txtpython3 main.py --provider pypi --path ~/Documents/Projets/MyProject/
Inoltre, questo strumento può essere utilizzato per scansionare una singola dipendenza :
python3 main.py --provider pypi --dependency requests:0.1.0
Si prega di notare che lo strumento utilizza un servizio di terze parti chiamato deps.dev; potrebbe essere necessario specificare un proxy per raggiungerlo.
______ ______
| _ \ | ___|
| | | |___ _ __ | |_ _ _ ___________ _ __
| | | / _ \ '_ \| _| | | |_ /_ / _ \ '__|
| |/ / __/ |_) | | | |_| |/ / / / __/ |
|___/ \___| .__/\_| \__,_/___/___\___|_|
| |
|_|
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.
Se hai trovato un bug o hai un'idea, non esitare ad aprire una issue su questo progetto !
Questo strumento non è pensato per individuare tutte le dependency confusion nei progetti. Inoltre, è noto che lo strumento produce falsi positivi a causa della complessità del parsing dei file requirements.
Verifica sempre manualmente se è sfruttabile prima di agire.
Tieni presente che sfruttare effettivamente questa vulnerabilità potrebbe avere effetti collaterali fuori controllo, quindi fai attenzione.
Synacktiv non può essere ritenuta responsabile se lo strumento viene utilizzato per scopi dannosi; è destinato esclusivamente a scopi educativi.
Questo progetto è concesso in licenza sotto la MIT License - consulta il file LICENSE per i dettagli.