
Serviço que compila repositórios open-source inscritos em VMs isoladas offline e os analisa em busca de vulnerabilidades de segurança, enviando por e-mail os resultados com reprodutores e patches propostos.
O OSS Scanner é um serviço da Anthropic para escanear repositórios open-source críticos em busca de vulnerabilidades de segurança. Saiba mais sobre o serviço em red.anthropic.com/oss-scanner.
Observe que o uso desta ferramenta está sujeito aos termos e condições descritos nos termos do OSS Scanner.
Inscreva um projeto open-source abrindo um pull request que adiciona um diretório:
projects/<name>
Nosso scanner de segurança compila seu projeto em uma VM isolada, depois o analisa sem acesso à Internet e envia por e-mail o que encontra para primary_contact (e quaisquer CCs), cada um com um reprodutor e um patch proposto quando disponível. Os relatórios são gerados por modelo e não são revisados por um humano. Por isso, não impomos um período de divulgação de 90 dias sobre essas descobertas e não as tornaremos públicas. Os proprietários do projeto devem fornecer project.yaml (para configurar o scanner), um Dockerfile (indicando como compilar o projeto) e, opcionalmente, um threat_model.md (fornecendo modelagem de ameaças específica do projeto).
Comece a partir de templates/project.yaml:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo e primary_contact são sempre obrigatórios. dockerfile é obrigatório, a menos que você mantenha seu Dockerfile ao lado de project.yaml (veja abaixo). Os demais são opcionais.
Os endereços de e-mail em project.yaml são públicos. Use endereços que você não se importe em ver publicados, como um alias de segurança.
Para receber relatórios criptografados, adicione sua chave pública OpenPGP em formato armored. Os relatórios então vão apenas para primary_contact; pgp não pode ser combinado com auto_ccs:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Você deve fornecer um Dockerfile, em exatamente um de dois lugares:
dockerfile: com seu caminho (sugerimos em algum local como .oss-scanner/Dockerfile). Esta é a opção preferida porque permite atualizar a compilação sem um pull request aqui; ou,project.yaml, como projects/<name>/Dockerfile, sem a chave Dockerfile: definida no project.yaml. Se você preferir não adicionar arquivos ao seu repositório, coloque-o aqui e o scanner o compilará exatamente como faria com uma cópia no repositório.(O modelo de ameaças funciona da mesma forma. Defina o campo threat_model para seu local no seu repositório, ou coloque-o aqui em projects/<name>/threat_model.md.)
O propósito do Dockerfile é configurar seu ambiente, instalar todas as dependências e compilar o projeto. A configuração inicial do projeto é executada com acesso à rede habilitado, mas a auditoria de segurança após isso é executada sem acesso à Internet. Qualquer coisa que a compilação ou os testes precisem deve ser obtida durante a configuração inicial do Dockerfile. Recomendamos verificar se seus testes passam dentro da imagem compilada.
O arquivo threat_model.md (opcional, mas fortemente recomendado) permite fornecer ao scanner documentação sobre seus objetivos de segurança pretendidos. Descobrimos que é mais útil fornecer orientações sobre como você classifica a gravidade dos relatórios (por exemplo, você considera SQLi pós-autenticação alta ou crítica? buffer overflows sem exploits demonstrados são limitados a alta? quando XSS armazenado é médio, alto e crítico?) Este arquivo também pode declarar o que o projeto faz, onde entradas não confiáveis entram, quais componentes importam e quais estão fora do escopo, como você gostaria que relatórios e patches se parecessem, ou qualquer outra coisa que você considere importante ou útil.
Sugerimos que você execute dois comandos antes de abrir um pull request:
tools/validate.py verifica projects/<name>/ em relação às regras acima.tools/check <name> compila seu projeto da forma como nosso scanner fará, e abre um shell na imagem finalizada sem rede. Se seus testes passarem neste contêiner, nosso scanner provavelmente funcionará com seu projeto. tools/check --qemu <name> faz o mesmo dentro de máquinas virtuais organizadas como as do scanner.Essas ferramentas exigem que seu host tenha git, Docker e Python 3 com PyYAML instalados (pip install pyyaml); --qemu requer Linux em x86-64 com QEMU em vez de Docker.
primary_contact com uma mensagem de erro.primary_contact e quaisquer CCs adicionais com etapas de reprodução e um patch proposto quando disponível.Você pode editar seu projeto a qualquer momento com um PR. Para cancelar a inscrição do seu projeto, defina o campo disabled como true para pausar os relatórios ou remova projects/\<name\>/ para retirar o projeto completamente.
tools/check executa o Dockerfile do seu projeto com acesso à rede, como docker build faria. Com --qemu a compilação é executada dentro de uma máquina virtual, o que a mantém longe dos seus arquivos, mas ela ainda pode alcançar serviços no seu computador e na sua rede local. Verifique apenas projetos em que você confia, ou use uma máquina sem nada a perder.tools/check instala o Claude Code na imagem que compila (como o scanner faz). O Claude Code é regido por seus próprios termos.Por favor, visite red.anthropic.com/oss-scanner.
Status de manutenção: este repositório é mantido ativamente pela Anthropic. Revisamos e fazemos merge apenas de pull requests de inscrição (alterações em projects/<name>/); não aceitamos outras contribuições, incluindo alterações em tools/ ou templates/. Consulte CONTRIBUTING.md para saber como se inscrever, SECURITY.md para relatar uma vulnerabilidade neste repositório, e CODE_OF_CONDUCT.md.