Pular para o conteúdo
>_ITDITDPlataforma de Segurança Web

Guias de Segurança

Instalando e usando o osv-scanner: encontre CVEs nas suas dependências

O osv-scanner é uma ferramenta gratuita que lê seus lockfiles e verifica as dependências em busca de CVEs conhecidas. Como instalar, escanear lockfiles ou containers, integrar ao CI e quando usá-lo vs. npm/pnpm audit e Dependabot.

Publicado 2026-06-11 Atualizado 2026-06-11 7 min de leitura

Para: qualquer pessoa que queira verificar se as dependências do seu app escondem vulnerabilidades conhecidas (CVEs), especialmente quem "construiu com a ajuda de IA, sem certeza sobre a segurança das dependências." Nenhum passo de ataque aqui — só defesa: inspecionar o seu próprio terreno (os seus próprios lockfiles).

A visão deste site: a ferramenta certa é decidida pela SUA configuração

Honestamente, este site mesmo usa o pnpm audit, não o osv-scanner (este site não mantém repositório no GitHub e sua árvore é um único npm, então o audit embutido basta). O osv-scanner passa a ser a escolha certa quando você tem ① múltiplos ecossistemas (npm + PyPI + Go…) ② necessidade de um scan independente sem dependência do GitHub ③ imagens de container para inspecionar. Escolha-o porque se encaixa na sua configuração — não porque é popular.

1. O que é o osv-scanner

Um scanner de código aberto feito pelo Google, escrito em Go. Seus dados de vulnerabilidade vêm do OSV.dev, um banco de dados aberto de vulnerabilidades entre linguagens. A diferença-chave em relação a uma ferramenta específica de linguagem como o npm audit é a abrangência: ele lê lockfiles de npm, PyPI (Python), Go, Rust, Maven (Java) e mais.

Grátis
licença / fonte de dados
Multi
npm/PyPI/Go/Rust +
OSV.dev
dados de vulnerabilidade
Minutos
tempo para instalar

O mecanismo é simples: ele lista as versões realmente resolvidas no seu lockfile, cruza cada pacote+versão com o OSV e retorna os CVEs relevantes e as versões corrigidas. O fato de ler o lockfile, não o manifesto (o piso ^ do package.json) importa — isso se alinha ao princípio de julgar pela versão em execução.

2. Instale

Escolha o que se encaixa no seu SO e gosto — todos são oficialmente suportados.

Homebrew (macOS / Linux)

brew install osv-scanner

Scoop (Windows)

scoop install osv-scanner

Go

go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest

Binário / Docker

baixe das releases, ou ghcr.io/google/osv-scanner
A instalação é uma linha — escolha uma. O go install precisa de Go 1.26+.

Se você preferir não instalar nada e usá-lo só no CI, rode-o direto da imagem Docker.

# confirme que está instalado
osv-scanner --version

3. Rode

Você vai, na maioria das vezes, "escanear recursivamente um diretório inteiro" ou "nomear um lockfile".

# escaneia o projeto inteiro recursivamente (autodetecta lockfiles)
osv-scanner scan -r ./
 
# nomeia um lockfile (npm / pnpm / yarn etc.)
osv-scanner scan -L pnpm-lock.yaml
 
# emite JSON (para alimentar o CI ou outra ferramenta)
osv-scanner scan -L package-lock.json --format json
 
# inspeciona uma imagem de container
osv-scanner scan image my-app:latest

Rodando via Docker (sem instalação):

docker run --rm -v "$(pwd):/src" ghcr.io/google/osv-scanner:latest scan -r /src

Lendo a saída

Para cada ocorrência você recebe o nome do pacote, a versão atual, o ID do CVE/Advisory e a versão corrigida. Há um único trabalho: subir para a versão corrigida ou acima, atualizar o lockfile e rodar de novo para confirmar que sumiu. Para se aprofundar em um CVE (severidade, status de exploração), cole o ID na busca de CVE/KEV para ver o CVSS e se está sendo ativamente explorado (KEV) em uma só tela.

Você não precisa corrigir tudo de uma vez

Uma lista grande não significa largar tudo. Priorize por "está sendo ativamente explorado (KEV)" vezes "quão alto é o CVSS". Uma pontuação média sob exploração ativa supera uma pontuação alta em um caminho que você nunca alcança. A abordagem completa de correção está descrita em higiene de CVE no Next.js.

4. Torne-o contínuo (integre ao CI / cron)

Rodá-lo uma vez na mão não serve para nada. Funciona quando roda antes de cada build ou diariamente via cron. O osv-scanner sai com código diferente de zero quando encontra uma vulnerabilidade, então colocá-lo em um passo do CI interrompe o build no momento em que uma dependência perigosa entra.

1

Adicione como um passo do CI

Adicione osv-scanner scan -r ./ perto dos seus testes. Uma saída diferente de zero falha o pipeline — dependências perigosas são barradas antes do merge.
2

No GitHub, a Action oficial também funciona

Se seu repositório está no GitHub, a google/osv-scanner-action é uma opção. Mas a execução independente, sem GitHub, é justamente a vantagem do osv-scanner.
3

Sem GitHub? Use cron

Rode-o diariamente no seu servidor de deploy ou no cron local e envie as ocorrências para um log ou e-mail. Este site roda sua auditoria de dependências antes de cada deploy mais um cron diário (abaixo).

5. Escolhendo entre as ferramentas

O movimento certo não é "sempre osv-scanner" — é o que for mais natural para a sua configuração.

O osv-scanner se encaixa quando

  • você mistura mais que npm (PyPI / Go / Rust / Java, multilíngue)
  • você quer um scan independente sem GitHub (cron, qualquer CI)
  • você quer inspecionar uma imagem de container
  • você quer continuar gratuito, sobre uma fonte de dados aberta (OSV.dev)

Você não precisa forçar

  • projeto único npm/pnpm → o npm audit / pnpm audit embutido costuma bastar
  • trabalho centrado no GitHub → o Dependabot até abre os PRs para você
  • "porque é popular" → isso não é motivo de escolha

Em resumo, osv-scanner, pnpm audit e Dependabot não são concorrentes — são papéis diferentes. Precisa de abrangência entre linguagens e sem dependência do GitHub? osv-scanner. Um único npm? o audit embutido. Centrado no GitHub? Dependabot — e dá para empilhá-los. O que importa é "sempre rodar pelo menos um deles, automaticamente". Contra envenenamento da cadeia de suprimentos (como a brecha do Codecov ou o backdoor do xz-utils), verificações contínuas de dependências são a primeira linha de defesa.

O que este site faz por conta própria

Este site roda a autoauditoria de dependências via pnpm audit antes de cada deploy mais um cron diário (high/critical falha o build e dispara um e-mail). Não escolhemos o osv-scanner porque este site não mantém repositório no GitHub e sua árvore é um único npm — "gratuito, sem binário extra, sem dependência do GitHub" já é atendido pelo pnpm audit. Esse é o padrão que escrevemos aplicado a nós mesmos, e faz parte da credibilidade do produto. E se você quer só experimentar uma vez, agora, sem instalar, também oferecemos um scanner de vulnerabilidades de dependências que roda só no navegador (cole um lockfile, nada sai da página).

Leia a seguir

FAQ

QO que o osv-scanner faz?
A

Ele lê os lockfiles do seu projeto (package-lock.json / pnpm-lock.yaml etc.) e então verifica as versões resolvidas das dependências contra o banco de dados OSV.dev do Google em busca de vulnerabilidades conhecidas (CVEs). Não é uma ferramenta de ataque — inspeciona o seu próprio terreno, de forma defensiva.

QQual a diferença para o Dependabot?
A

O Dependabot é um recurso exclusivo do GitHub que pressupõe que seu repositório fica lá e abre PRs para CVEs correspondentes. O osv-scanner é um binário independente, sem dependência do GitHub — rode-o localmente, em qualquer CI ou via cron. Ele se encaixa em configurações sem GitHub e em árvores multilíngues.

QO npm audit / pnpm audit não basta?
A

Para um único projeto npm/pnpm, o audit embutido costuma bastar. O osv-scanner brilha quando você mistura npm, PyPI, Go, Rust etc., ou quer um scan independente sem ferramentas extras e sem dependência do GitHub. Sua fonte de dados (OSV.dev) também é gratuita.