
Servicio que compila repositorios de código abierto registrados en VM aisladas sin conexión y los escanea en busca de vulnerabilidades de seguridad, enviando por correo electrónico los hallazgos con reproductores y parches propuestos.
OSS Scanner es un servicio de Anthropic para escanear repositorios de código abierto críticos en busca de vulnerabilidades de seguridad. Obtén más información sobre el servicio en red.anthropic.com/oss-scanner.
Ten en cuenta que el uso de esta herramienta está sujeto a los términos y condiciones descritos en los términos de OSS Scanner.
Inscribe un proyecto de código abierto abriendo un pull request que añada un directorio:
projects/<name>
Nuestro escáner de seguridad compila tu proyecto en una VM aislada y luego lo analiza sin acceso a Internet, y envía por correo lo que encuentra a primary_contact (y a cualquier CC), cada uno con un reproductor y un parche propuesto cuando esté disponible. Los informes son generados por un modelo y no son revisados por una persona. Por este motivo, no aplicamos un período de divulgación de 90 días a estos hallazgos y no los haremos públicos. Los propietarios de proyectos deben proporcionar project.yaml (para configurar el escáner), un Dockerfile (que indique cómo compilar el proyecto) y, opcionalmente, un threat_model.md (que proporcione un modelado de amenazas específico del proyecto).
Comienza desde 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 y primary_contact siempre son obligatorios. dockerfile es obligatorio a menos que mantengas tu Dockerfile junto a project.yaml (ver más abajo). Los demás son opcionales.
Las direcciones de correo electrónico en project.yaml son públicas. Usa direcciones que no te importe que se publiquen, como un alias de seguridad.
Para recibir informes cifrados, añade tu clave pública OpenPGP en formato armored. Los informes entonces se envían solo a primary_contact; pgp no se puede combinar con auto_ccs:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
Debes proporcionar un Dockerfile, en exactamente uno de dos lugares:
dockerfile: con su ruta (sugerimos una ubicación como .oss-scanner/Dockerfile). Esta es la opción preferida porque te permite actualizar la compilación sin un pull request aquí; o,project.yaml, como projects/<name>/Dockerfile, sin establecer la clave Dockerfile: en el project.yaml. Si prefieres no añadir archivos a tu repositorio, colócalo aquí y el escáner lo compilará exactamente como lo haría con una copia dentro del repositorio.(El modelo de amenazas funciona de la misma manera. Establece el campo threat_model con su ubicación en tu repositorio, o colócalo aquí en projects/<name>/threat_model.md.)
El propósito del Dockerfile es configurar tu entorno, instalar todas las dependencias y compilar el proyecto. La configuración inicial del proyecto se ejecuta con acceso a la red habilitado, pero la auditoría de seguridad posterior se ejecuta sin acceso a Internet. Todo lo que la compilación o las pruebas necesiten debe obtenerse durante la configuración inicial del Dockerfile. Recomendamos verificar que tus pruebas pasen dentro de la imagen compilada.
El archivo threat_model.md (opcional pero muy recomendado) te permite proporcionar al escáner documentación sobre tus objetivos de seguridad previstos. Hemos comprobado que es más útil proporcionar orientación sobre cómo calificas la severidad de los informes (por ejemplo, ¿consideras una SQLi post-autenticación alta o crítica? ¿los desbordamientos de búfer sin exploits demostrados se limitan a alta? ¿cuándo es un XSS almacenado medio, alto y crítico?). Este archivo también puede indicar qué hace el proyecto, dónde entra la entrada no confiable, qué componentes importan y cuáles están fuera del alcance, cómo te gustaría que se vieran los informes y los parches, o cualquier otra cosa que consideres importante o útil.
Sugerimos ejecutar dos comandos antes de abrir un pull request:
tools/validate.py verifica projects/<name>/ según las reglas anteriores.tools/check <name> compila tu proyecto tal como lo hará nuestro escáner y abre un shell en la imagen final sin red. Si tus pruebas pasan en este contenedor, es probable que nuestro escáner funcione con tu proyecto. tools/check --qemu <name> hace lo mismo dentro de máquinas virtuales configuradas como las del escáner.Estas herramientas requieren que tu host tenga instalados git, Docker y Python 3 con PyYAML (pip install pyyaml); --qemu necesita Linux en x86-64 con QEMU en lugar de Docker.
primary_contact con un mensaje de error.primary_contact y a cualquier CC adicional con pasos de reproducción y un parche propuesto cuando esté disponible.Puedes editar tu proyecto en cualquier momento con un PR. Para desinscribir tu proyecto, establece el campo disabled en true para pausar los informes o elimina projects/\<name\>/ para retirar el proyecto por completo.
tools/check ejecuta el Dockerfile de tu proyecto con acceso a la red, como lo haría docker build. Con --qemu la compilación se ejecuta dentro de una máquina virtual, lo que la mantiene alejada de tus archivos, pero aún puede alcanzar servicios en tu computadora y tu red local. Solo verifica proyectos en los que confíes, o usa una máquina donde no tengas nada que perder.tools/check instala Claude Code en la imagen que compila (como lo hace el escáner). Claude Code está cubierto por sus propios términos.Visita red.anthropic.com/oss-scanner.
Estado de mantenimiento: este repositorio es mantenido activamente por Anthropic. Solo revisamos y fusionamos pull requests de inscripción (cambios bajo projects/<name>/); no aceptamos otras contribuciones, incluidos cambios en tools/ o templates/. Consulta CONTRIBUTING.md para saber cómo inscribirte, SECURITY.md para reportar una vulnerabilidad en este repositorio, y CODE_OF_CONDUCT.md.