
сканер уязвимостей зависимостей Python, написанный на Rust.
Pyscan — это высококонкурентный сканер уязвимостей, написанный на Rust. Он автоматически обходит ваш Python-проект, извлекает зависимости в различных форматах упаковки и сверяет их с базой данных Open Source Vulnerabilities (OSV) в одном асинхронном пакетном запросе.
Pyscan был создан для устранения узких мест по производительности и памяти традиционных инструментов безопасности на Python:
pip-audit и safety, на наборах данных среднего и большого размера. Время выполнения Pyscan соответствует модели сложности $O(\text{vulns})$: оно масштабируется от количества найденных уязвимостей, а не от количества ваших зависимостей.uv.lock, requirements.txt, pyproject.toml (Poetry, Hatch, PDM, Flit) или динамически анализируя ваш исходный код .py.Подробный разбор читайте в отчёте о бенчмарках.
Вы можете установить Pyscan через pipx, pip (скомпилированный Python-wheel) или cargo (нативный Rust-бинарник):
# via pipx (recommended) (Note the "-rs" suffix)
pipx install pyscan-rs
# via pip (Note the "-rs" suffix)
pip install pyscan-rs
# via Cargo
cargo install pyscan
Просто запустите pyscan в корневом каталоге вашего проекта или укажите конкретную папку с исходниками:
# Scan the current directory
pyscan
# Scan a specific directory
pyscan -d path/to/src
Если присутствует несколько исходных файлов, Pyscan извлекает зависимости в следующем порядке приоритета:
bom.json, spdx.json)uv.lockrequirements.txtpyproject.toml.py)Если зависимость найдена без строго зафиксированной версии, Pyscan вернётся к запросу последней версии через PyPI, хотя настоятельно рекомендуется придерживаться синтаксиса PEP-508.
Pyscan требует Rust-тулчейн >= v1.70 и использует асинхронные сетевые взаимодействия через reqwest и tokio для параллелизации OSV-запросов и максимальной пропускной способности. Если вам интересно, как устроены парсер и сканер, загляните в обзор архитектуры.
Pyscan — это высокооптимизированный инструмент, но он ещё не проверен в бою на всех граничных случаях. Он не гарантирует, что ваш код на 100% защищён от всех векторов атак. Я настоятельно рекомендую использовать многоуровневый подход к безопасности вместе с такими инструментами, как Dependabot, pip-audit или Trivy. Пул-реквесты и issue приветствуются!
Я начал этот проект, когда был нищим школьником, а теперь я нищий студент. Если Pyscan сэкономил вашим CI/CD-конвейерам драгоценное время и память, подумайте о том, чтобы купить мне кофе: