
osv-scanner v2.5.0
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:
- Linguagens: C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.
- Gerenciadores de pacotes: npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget e outros.
- Sistemas operacionais: Detecta vulnerabilidades em pacotes de SO em sistemas Linux.
- Contêineres: Examina imagens de contêiner em busca de vulnerabilidades em suas imagens base e pacotes incluídos.
- Remediação guiada: Fornece recomendações para 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.
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.
Banco de dados subjacente
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:
- Cobrindo a maioria dos ecossistemas de linguagens de código aberto e sistemas operacionais (incluindo Git), é abrangente.
- Cada aviso vem de uma fonte aberta e autoritativa (ex.: GitHub Security Advisories, RustSec Advisory Database, avisos de segurança do Ubuntu)
- Qualquer pessoa pode sugerir melhorias aos avisos, resultando em um banco de dados de altíssima qualidade.
- O formato OSV armazena de forma inequívoca informações sobre versões afetadas em um formato legível por máquina que mapeia com precisão a lista de pacotes de um desenvolvedor.
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!
Instalação básica
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.
Principais recursos
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.
Varredura de um diretório de código-fonte
$ 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.
Lockfiles suportados
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.
Varredura de contêineres
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

Varredura de licenças
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
Varredura offline
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
Remediação guiada (Experimental)
[!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:
| 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 |
Isso está disponível como um comando CLI headless, bem como um modo interativo.
Exemplo (para npm)
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
Modo interativo (para npm)
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
Fontes de dados e privacidade
O OSV-Scanner se comunica com os seguintes serviços externos durante a operação:
OSV.dev API
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.
deps.dev API
Usada para informações complementares de pacotes:
- Resolução de dependências: Resolve grafos de dependência para varredura e remediação de vulnerabilidades
- Varredura de imagens de contêiner: Consulta metadados de imagens de contêiner para detecção de vulnerabilidades
- Varredura de licenças (flag
--licenses): Recupera informações de licença dos pacotes - Deprecação de pacotes: Verifica se os pacotes estão obsoletos
Os dados enviados incluem nomes de pacotes, versões e ecossistemas. Nenhum código-fonte é transmitido.
Registros de pacotes
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 | Metadados de pacotes Maven e arquivos POM |
| npm Registry | registry.npmjs.org | Metadados de pacotes npm |
| PyPI | pypi.org | Metadados de pacotes Python |
Contribua
Relatar problemas
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.
Contribuindo com código para osv-scanner
Consulte CONTRIBUTING.md para obter documentação sobre como contribuir com código.