
Scanner de vulnerabilidades escrito em Go que usa os dados fornecidos por https://osv.dev
Use o OSV-Scanner para encontrar vulnerabilidades existentes que afetam as dependências do seu projeto. O OSV-Scanner fornece um frontend oficialmente suportado para o banco de dados OSV e uma interface CLI para o OSV-Scalibr, que conecta a lista de dependências de um projeto às vulnerabilidades que as afetam.
O OSV-Scanner suporta uma ampla variedade de tipos de projeto, gerenciadores de pacotes e recursos, incluindo, mas não se limitando a:
O OSV-Scanner usa a biblioteca extensível OSV-Scalibr internamente para fornecer essa funcionalidade. Se uma linguagem ou gerenciador de pacotes não for suportado atualmente, abra uma solicitação de recurso.
O banco de dados subjacente, OSV.dev, tem vários benefícios em comparação com bancos de dados de avisos e scanners de código fechado:
Tudo isso resulta em notificações de vulnerabilidade precisas e acionáveis, o que reduz o tempo necessário para resolvê-las. Confira o OSV.dev para mais detalhes!
Para instalar o OSV-Scanner, consulte a seção de instalação da nossa documentação. As versões do OSV-Scanner podem ser encontradas na página de releases do repositório do GitHub. O método recomendado é baixar um binário pré-compilado para sua plataforma. Como alternativa, você pode usar
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest para compilar a partir do código-fonte.
Para mais informações, leia nossa documentação detalhada para aprender como usar o OSV-Scanner. Para informações detalhadas sobre cada recurso, clique nos títulos deste README.
Observação: estas são as instruções para a versão beta mais recente do OSV-Scanner V2. Se você estiver usando a V1, confira o README e a documentação da V1.
$ osv-scanner scan source -r /path/to/your/dir
Este comando fará uma varredura recursiva no diretório especificado em busca de qualquer arquivo de pacote suportado, como package.json, go.mod, pom.xml, etc., e exibirá quaisquer vulnerabilidades encontradas.
O OSV-Scanner tem a opção de usar análise de chamadas para determinar se uma função vulnerável está sendo realmente usada no projeto, resultando em menos falsos positivos e alertas acionáveis.
O OSV-Scanner também pode detectar código C/C++ vendorizado para varredura de vulnerabilidades. Veja aqui para detalhes.
O OSV-Scanner suporta mais de 11 ecossistemas de linguagem e mais de 19 tipos de lockfile. Para verificar se seu ecossistema é coberto, consulte nossa documentação detalhada.
O OSV-Scanner também oferece suporte a varredura abrangente e com ciência de camadas para imagens de contêiner, a fim de detectar vulnerabilidades nos seguintes pacotes de sistema operacional e dependências específicas de linguagem.
| Suporte a Distros | Suporte a Artefatos de Linguagem |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
Consulte a documentação completa para detalhes sobre o suporte.
Uso:
$ osv-scanner scan image my-image-name:tag

Verifique as licenças das suas dependências usando dados do deps.dev. Para um resumo:
osv-scanner --licenses path/to/repository
Para verificar contra uma lista de licenças permitidas (formato SPDX):
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
Escanear seu projeto contra um banco de dados OSV local. Nenhuma conexão de rede é necessária após o download inicial do banco de dados. O banco de dados também pode ser baixado manualmente.
osv-scanner --offline --download-offline-databases ./path/to/your/dir
[!WARNING] A remediação guiada (o comando
fix) pode ser arriscada quando executada em projetos não confiáveis. Ela pode fazer com que o gerenciador de pacotes execute scripts ou siga registros externos especificados no projeto. Certifique-se de confiar no código-fonte e nos artefatos antes de prosseguir.
O OSV-Scanner oferece remediação guiada, um recurso que sugere atualizações de versão de pacotes com base em critérios como profundidade de dependência, severidade mínima, estratégia de correção e retorno sobre o investimento. Atualmente, oferecemos suporte à remediação de vulnerabilidades nos seguintes arquivos:
Isso está disponível como um comando CLI headless, bem como um modo interativo.
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
O OSV-Scanner se comunica com os seguintes serviços externos durante a operação:
A principal fonte de dados para informações de vulnerabilidade. O OSV-Scanner consulta esta API para verificar pacotes em busca de vulnerabilidades conhecidas e identificar dependências C/C++ vendorizadas. Os dados enviados incluem nomes de pacotes, versões, ecossistemas e hashes de arquivos. Use o modo --offline para desativar solicitações de rede e escanear contra um banco de dados local.
Usada para informações complementares de pacotes:
--licenses): Recupera informações de licença dos pacotesOs dados enviados incluem nomes de pacotes, versões e ecossistemas. Nenhum código-fonte é transmitido.
Ao usar o registro nativo para resolução de dependências (em vez de deps.dev), o OSV-Scanner pode consultar:
| Registro | URL | Usado Para |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 |
Se você tiver o que parece ser um bug, use o sistema de rastreamento de issues do GitHub. Antes de abrir uma issue, pesquise as issues existentes para ver se a sua já está coberta.
osv-scannerConsulte CONTRIBUTING.md para obter documentação sobre como contribuir com código.
| Ecossistema | Formato do Arquivo (Tipo) | Estratégias de Remediação Suportadas |
|---|
| npm | package-lock.json (lockfile) | in-place |
| npm | package.json (manifest) | relock |
| Maven | pom.xml (manifest) | override |
| Metadados de pacotes Maven e arquivos POM |
| npm Registry | registry.npmjs.org | Metadados de pacotes npm |
| PyPI | pypi.org | Metadados de pacotes Python |