
Servizio che compila repository open-source registrati in VM offline isolate e li analizza alla ricerca di vulnerabilità di sicurezza, inviando via email i risultati con reproducer e patch proposte.
OSS Scanner è un servizio di Anthropic per scansionare repository open-source critici alla ricerca di vulnerabilità di sicurezza. Scopri di più sul servizio su red.anthropic.com/oss-scanner.
Nota: l'uso di questo strumento è soggetto ai termini e alle condizioni descritti nei termini di OSS Scanner.
Iscrivi un progetto open-source aprendo una pull request che aggiunge una directory:
projects/<name>
Il nostro scanner di sicurezza compila il tuo progetto in una VM isolata, poi lo analizza senza accesso a Internet e invia via email ciò che trova a primary_contact (e a eventuali CC), ciascuno con un reproducer e una patch proposta, ove disponibile. I report sono generati da un modello e non vengono revisionati da una persona. Per questo motivo non applichiamo un periodo di divulgazione di 90 giorni a queste segnalazioni e non le renderemo pubbliche. I proprietari dei progetti dovrebbero fornire project.yaml (per configurare lo scanner), un Dockerfile (che indichi come compilare il progetto) e, facoltativamente, un threat_model.md (che fornisca una modellazione delle minacce specifica per il progetto).
Parti da 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 sono sempre obbligatori. dockerfile è obbligatorio a meno che tu non tenga il tuo Dockerfile accanto a project.yaml (vedi sotto). Gli altri sono facoltativi.
Gli indirizzi email in project.yaml sono pubblici. Usa indirizzi che sei felice di vedere pubblicati, come un alias di sicurezza.
Per ricevere i report via email in forma crittografata, aggiungi la tua chiave pubblica OpenPGP in formato armored. Questi verranno quindi inviati solo a primary_contact; pgp non può essere combinato con auto_ccs:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Per scegliere dove vanno i report, imposta la severità minima che ogni canale riceve: low, medium, high, critical, oppure none per disattivare il canale. Un canale che ometti usa il valore predefinito mostrato qui, e un report pari o superiore a entrambi i minimi viene inviato a entrambi i canali. pgp si applica solo all'email, quindi i report GitHub non vengono cifrati con la tua chiave:
output_format:
email:
min_severity: low
github_security_advisory: # GitHub private vulnerability reporting
min_severity: none
Devi fornire un Dockerfile, esattamente in uno di due luoghi:
dockerfile: al suo percorso (suggeriamo una posizione come .oss-scanner/Dockerfile). Questa è l'opzione preferita perché ti consente di aggiornare la build senza una pull request qui; oppure,project.yaml, come projects/<name>/Dockerfile, senza alcuna chiave Dockerfile: impostata nel project.yaml. Se preferisci non aggiungere file al tuo repository, inseriscilo qui e lo scanner lo costruirà esattamente come farebbe con una copia nel repository.(Il threat model funziona allo stesso modo. Imposta il campo threat_model per la sua posizione nel tuo repository, oppure inseriscilo qui in projects/<name>/threat_model.md.)
Lo scopo del Dockerfile è configurare il tuo ambiente, installare ogni dipendenza e compilare il progetto. La configurazione iniziale del progetto viene eseguita con accesso alla rete abilitato, ma il controllo di sicurezza successivo viene eseguito senza accesso a Internet. Tutto ciò di cui la build o i test hanno bisogno deve essere recuperato durante la configurazione iniziale del Dockerfile. Ti consigliamo di verificare che i tuoi test passino all'interno dell'immagine compilata.
Il file threat_model.md (opzionale ma fortemente raccomandato) ti consente di fornire allo scanner la documentazione sui tuoi obiettivi di sicurezza previsti. Abbiamo riscontrato che è molto utile fornire indicazioni su come valuti la gravità dei report (ad esempio, consideri una SQLi post-autenticazione alta o critica? i buffer overflow senza exploit dimostrati sono limitati ad alta? quando una XSS memorizzata è media, alta e critica?). Questo file può anche indicare cosa fa il progetto, dove entra l'input non attendibile, quali componenti contano e quali sono fuori ambito, come vorresti che apparissero i report e le patch, o qualsiasi altra cosa tu ritenga importante o utile.
Ti suggeriamo di eseguire due comandi prima di aprire una pull request:
tools/validate.py verifica projects/<name>/ rispetto alle regole sopra.tools/check <name> compila il tuo progetto come farà il nostro scanner e apre una shell nell'immagine finita senza rete. Se i tuoi test passano in questo container, è probabile che il nostro scanner funzioni con il tuo progetto. tools/check --qemu <name> fa lo stesso all'interno di macchine virtuali configurate come quelle dello scanner.Questi strumenti richiedono che il tuo host abbia installato git, Docker e Python 3 con PyYAML (pip install pyyaml); --qemu richiede Linux su x86-64 con QEMU invece di Docker.
primary_contact con un messaggio di errore.primary_contact e a eventuali CC aggiuntivi con i passaggi di riproduzione e una patch proposta, ove disponibile.Puoi modificare il tuo progetto in qualsiasi momento con una PR. Per annullare l'iscrizione del tuo progetto, imposta il campo disabled su true per sospendere i report oppure rimuovi projects/\<name\>/ per ritirare completamente il progetto.
tools/check esegue il Dockerfile del tuo progetto con accesso alla rete, come farebbe docker build. Con --qemu la build viene eseguita all'interno di una macchina virtuale, che la tiene lontana dai tuoi file, ma può comunque raggiungere servizi sul tuo computer e sulla tua rete locale. Verifica solo progetti di cui ti fidi, oppure usa una macchina su cui non hai nulla da perdere.tools/check installa Claude Code nell'immagine che compila (come fa lo scanner). Claude Code è coperto dai propri termini.Visita red.anthropic.com/oss-scanner.
Stato di manutenzione: questo repository è attivamente mantenuto da Anthropic. Esaminiamo e uniamo solo le pull request di iscrizione (modifiche sotto projects/<name>/); non accettiamo altri contributi, incluse modifiche a tools/ o templates/. Consulta CONTRIBUTING.md per come iscriverti, SECURITY.md per segnalare una vulnerabilità in questo repository e CODE_OF_CONDUCT.md.