
scanner de vulnerabilidades de dependências Python, escrito em Rust.
Pyscan é um scanner de vulnerabilidades altamente concorrente escrito em Rust. Ele percorre automaticamente seu projeto Python, extrai dependências em vários formatos de empacotamento e as cruza com o banco de dados Open Source Vulnerabilities (OSV) em uma única solicitação assíncrona em lote.
O Pyscan foi projetado para resolver os gargalos de desempenho e memória das ferramentas de segurança tradicionais baseadas em Python:
pip-audit e safety em conjuntos de dados médios a grandes. O tempo de execução do Pyscan opera em um modelo de complexidade de tempo $O(\text{vulns})$; o tempo de execução escala com o número de vulnerabilidades encontradas, não com o número de dependências que você possui.uv.lock, requirements.txt, pyproject.toml (Poetry, Hatch, PDM, Flit) ou dinamicamente analisando seu código-fonte .py bruto.Leia o mergulho profundo no Relatório de Benchmarks.
Você pode instalar o Pyscan via pipx, pip (wheel Python compilado) ou cargo (binário nativo Rust):
# via pipx (recomendado) (Observe o sufixo "-rs")
pipx install pyscan-rs
# via pip (Observe o sufixo "-rs")
pip install pyscan-rs
# via Cargo
cargo install pyscan
Basta executar pyscan no diretório raiz do seu projeto, ou apontá-lo para uma pasta de origem específica:
# Escaneie o diretório atual
pyscan
# Escaneie um diretório específico
pyscan -d path/to/src
Se vários arquivos de origem estiverem presentes, o Pyscan extrai dependências seguindo esta cadeia de prioridade:
bom.json, spdx.json)uv.lockrequirements.txtpyproject.toml.py)O Pyscan recorrerá à consulta do PyPI pela versão mais recente se uma dependência for encontrada sem uma versão estritamente fixada, embora seguir a sintaxe PEP-508 seja altamente recomendado.
O Pyscan requer um toolchain Rust >= v1.70 e utiliza rede assíncrona via reqwest e tokio para paralelizar consultas OSV e maximizar a taxa de transferência. Se você estiver interessado em como o analisador e o scanner são estruturados, confira a Visão Geral da Arquitetura.
O Pyscan é uma ferramenta altamente otimizada, mas ainda não foi testada em todos os casos extremos. Ela não garante que seu código esteja 100% seguro contra todos os vetores. Recomendo fortemente o uso de uma abordagem de segurança em camadas junto com ferramentas como Dependabot, pip-audit ou Trivy. PRs e issues são calorosamente bem-vindos!
Comecei este projeto quando era um estudante do ensino médio sem dinheiro, e agora sou um estudante universitário sem dinheiro. Se o Pyscan economizou algum tempo precioso e RAM em seus pipelines de CI/CD, considere me pagar um café: