
Сканирует зависимости проекта на предмет уязвимостей dependency confusion и проверяет риски захвата email владельца пакета в нескольких реестрах (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/
Кроме того, инструмент можно использовать для проверки одной конкретной зависимости:
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.
Если вы нашли ошибку или у вас есть идея, не стесняйтесь открыть issue в этом проекте!
Этот инструмент не предназначен для поиска всех случаев dependency confusion в проектах. Кроме того, известно, что инструмент может давать ложные срабатывания из-за сложности разбора файлов с зависимостями.
Всегда проверяйте вручную, можно ли эксплуатировать уязвимость, прежде чем предпринимать какие-либо действия.
Обратите внимание, что фактическая эксплуатация этой уязвимости может привести к неконтролируемым побочным эффектам, поэтому будьте осторожны.
Synacktiv не несёт ответственности, если инструмент используется в злонамеренных целях; инструмент предназначен только для образовательных целей.
Этот проект лицензирован в соответствии с MIT License — подробности см. в файле LICENSE.