
dep-scan v6.3.0
Escáner de vulnerabilidades de dependencias de última generación con análisis de alcanzabilidad, generación de SBOM, auditoría de licencias y escaneo de imágenes de contenedores para integración CI/CD.
Introducción
OWASP dep-scan es una herramienta de auditoría de seguridad y riesgos de nueva generación basada en vulnerabilidades conocidas, avisos y limitaciones de licencia para las dependencias del proyecto. Se admiten tanto repositorios locales como imágenes de contenedor como entrada, y la herramienta es ideal para la integración con plataformas ASPM/VM y en entornos de CI.
Contenido
- Características
- Flujos de datos alcanzables precisos
- Matriz de alcanzabilidad
- Alcanzabilidad en Rust (mediante rusi)
- Alcanzabilidad en Go (mediante golem)
- Alcanzabilidad en .NET (mediante dosai)
- Alcanzabilidad en JVM, JavaScript, Python y PHP (mediante atom)
- Fuentes de datos de vulnerabilidades
- Distribuciones de Linux
- Inicio rápido
- Desarrollo local
- Documentación (depscan.readthedocs.io)
- Licencia
Características
- Escanee la mayor parte del código de la aplicación (repositorios locales, imágenes de contenedor Linux, manifiestos de Kubernetes y el sistema operativo) para identificar CVE conocidos con priorización
- Realice análisis avanzados de alcanzabilidad para múltiples lenguajes (consulte la matriz de alcanzabilidad a continuación)
- El escaneo de vulnerabilidades de paquetes se realiza localmente y es bastante rápido. No se utiliza ningún servidor
- Genere una Lista de Materiales de Software (SBOM) con información del Informe de Divulgación de Vulnerabilidades (VDR)
- Genere un documento VEX de Common Security Advisory Framework (CSAF) 2.0/2.1 (consulte el CSAF Readme)
- Realice auditorías profundas de riesgos de paquetes para ataques de confusión de dependencias y riesgos de mantenimiento (consulte la documentación de auditoría de riesgos)
Flujos de datos alcanzables precisos
Flujos de datos detallados para identificar tanto las rutas alcanzables como las no alcanzables en su aplicación según el contexto completo.

Matriz de alcanzabilidad
dep-scan calcula la alcanzabilidad para siete ecosistemas de lenguajes mediante cuatro slicers. Un paquete vulnerable cuyo código está realmente en una ruta ejecutada se marca como Reachable (Alcanzable), mientras que un paquete que simplemente está declarado en el BOM pero nunca se invoca no lo está. Cada slicer alimenta el mismo motor de alcanzabilidad compartido, indexado por purl, por lo que el comportamiento es uniforme entre lenguajes. La alcanzabilidad está activada por defecto (--reachability-analyzer FrameworkReachability); SemanticReachability además atribuye servicios alcanzados, endpoints y alcanzabilidad posterior a la compilación (binaria/contenedor).
| Lenguaje / ecosistema | Motor de alcanzabilidad | Analizador predeterminado |
|---|---|---|
| Java / JVM (Groovy, Kotlin, Scala) | atom | FrameworkReachability |
| JavaScript / TypeScript | atom | FrameworkReachability |
| Python | atom | FrameworkReachability |
| PHP | atom | FrameworkReachability |
| Rust | rusi | FrameworkReachability |
| Go | golem | FrameworkReachability |
| .NET (C#, VB, F#, R) | dosai | FrameworkReachability |
Para conocer los conceptos detrás de la alcanzabilidad y la priorización, lea los capítulos sobre el modelo de alcanzabilidad y la priorización. Para ver ejemplos prácticos por lenguaje, consulte las Guías de lenguajes. Para conocer el aspecto de cumplimiento (VDR y CSAF VEX), consulte la guía de VDR y la guía de CSAF VEX.
La alcanzabilidad está activada de forma predeterminada con --profile research, que es el perfil que utiliza dep-scan cuando la alcanzabilidad está activada. Los comandos a continuación son suficientes para comenzar; las guías por lenguaje cubren la resolución de binarios, la seguridad de backend y de red, los requisitos de restauración y ejemplos prácticos sobre los fixtures incluidos en el repositorio.
Rust (rusi). cdxgen ejecuta rusi y conserva su informe, que dep-scan convierte en el pipeline compartido, de modo que un crate que realmente se invoca (por ejemplo, time::now() para RUSTSEC-2020-0071) es Alcanzable, mientras que uno que simplemente está presente no lo es. Consulte la guía de alcanzabilidad para Rust.
depscan -i ./my-rust-app -o ./reports --profile research
Go (golem). dep-scan invoca golem directamente para proyectos Go (requiere go en PATH), marcando un módulo como Reachable cuando sus funciones están en una ruta rastreada. Use --go-analyzer-network offline para repositorios no confiables con una caché de módulos precalentada. Consulte la guía de alcanzabilidad de Go.
depscan -i ./my-go-app -o ./reports -t go
.NET (dosai). cdxgen ejecuta dosai, que emite un veredicto explícito de alcanzabilidad por paquete (PackageReachability con ReachabilityKind y Confidence) que dep-scan trata como autoritativo, por lo que un paquete NuGet realmente invocado (por ejemplo, JsonConvert.DeserializeObject sobre una entrada controlada) es Reachable. Escanea un árbol restaurado en busca de purls versionados. Consulta la guía de alcanzabilidad de .NET.