Ir al contenido
ES EN

SAST y SCA: cobertura completa, sin puntos ciegos

Por Equipo Gerion 4 min de lectura

SAST y SCA no compiten entre sí — se complementan. Cada uno cubre exactamente lo que el otro no puede ver: tu código, por un lado; las dependencias de terceros que lo rodean, por el otro. Implementar solo uno es como instalar una alarma en la puerta principal y dejar las ventanas abiertas.

Qué es SAST

Static Application Security Testing analiza el código fuente de tu aplicación sin ejecutarlo. Busca patrones que indiquen vulnerabilidades:

  • Inyecciones SQL (query = "SELECT * FROM users WHERE id = " + userId)
  • XSS en plantillas de frontend
  • Deserialización insegura
  • Credenciales hardcodeadas
  • Flujos de datos peligrosos (taint analysis)

El escáner de Gerion usa Opengrep, el fork mantenido por la comunidad de Semgrep. Opengrep tiene reglas para Python, JavaScript, TypeScript, Go, Java, Ruby y más de 20 lenguajes adicionales. Al ser completamente open source, puedes auditar las reglas que ejecuta y añadir reglas propias para los estándares de codificación internos de tu equipo.

La ventaja del SAST es que encuentra problemas en tu código — errores que tú o tu equipo habéis introducido, a menudo ligados a lógica de negocio específica que ninguna base de datos de CVEs podría anticipar.

Qué es SCA

Software Composition Analysis analiza las dependencias de terceros que usa tu proyecto — todo lo que está en tu package.json, requirements.txt, go.mod o pom.xml.

Busca:

  • Dependencias con CVEs conocidos
  • Licencias incompatibles con tu modelo de negocio
  • Dependencias sin mantenimiento activo
  • Versiones desactualizadas con vulnerabilidades conocidas

Gerion usa OSV-Scanner, el escáner de Google que consulta la base de datos OSV (Open Source Vulnerabilities) — la más completa y actualizada del ecosistema, con cobertura para paquetes de npm, PyPI, Go, Maven, Cargo y muchos más.

La ventaja del SCA es que el 80% del código de una aplicación moderna es código de terceros. Si no lo estás analizando, tienes un punto ciego enorme — y ese punto ciego está activamente mantenido por atacantes que monitorizan las bases de datos de CVEs en tiempo real.

La cobertura que se necesitan mutuamente

Ni SAST ni SCA cubre el territorio del otro:

SASTSCA
Tu código
Dependencias
CVEs conocidosParcial
Lógica insegura
Licencias

Un ejemplo concreto: tienes una función de autenticación con un bug de inyección SQL (SAST lo detecta) y también usas una versión de jsonwebtoken con un CVE de verificación de firma (SCA lo detecta). Cada herramienta encuentra lo que la otra no puede. Ejecutar ambas sin unificar los resultados, sin embargo, crea un problema diferente.

El problema de la fatiga de hallazgos

El mayor riesgo al combinar SAST y SCA no es técnico — es organizativo. Más hallazgos, más ruido, más cosas que ignorar.

Gerion resuelve esto de dos formas:

Priorización por rama: los hallazgos en main, master o ramas de release tienen un multiplicador financiero de 10×. Un CVE medio en una dependencia de producción tiene más impacto real que un CVE crítico en una rama de feature que nunca se desplegará. Priorizar por coste en lugar de por puntuación CVSS cambia qué hallazgos se corrigen primero.

Normalización: SAST y SCA producen hallazgos en formatos completamente distintos. Gerion los normaliza en un modelo unificado con campos comunes (severidad, ubicación, remediación sugerida, impacto financiero estimado), lo que permite priorizarlos juntos en el mismo dashboard y exportarlos en un formato consistente.

Cómo implementarlo en tu pipeline

# GitHub Actions — ejemplo con Gerion CLI
- name: Gerion Security Scan
run: |
docker run --rm -v "$PWD:/code" \
-e GERION_API_URL=${{ secrets.GERION_API_URL }} \
-e GERION_API_KEY=${{ secrets.GERION_API_KEY }} \
ghcr.io/gerion-appsec/gerion-cli:latest scan-all /code

Con un solo comando obtienes SAST (Opengrep) y SCA (OSV-Scanner) — más Secrets (Gitleaks) e IaC (KICS) — en análisis secuencial, normalizados y con impacto financiero calculado. La CLI se ejecuta dentro de tu runner de CI. Tu código fuente nunca sale de tu infraestructura.

Leyendo los resultados en Gerion

Una vez que la CLI envía los hallazgos a la plataforma, el dashboard de Seguridad muestra todos los hallazgos unificados y filtrables: por tipo de escáner, severidad, rama, repositorio y estado de mitigación. El dashboard Ejecutivo traduce los mismos datos en una cifra de Deuda Técnica, un gráfico de Ahorro Realizado y un Security Health Grade.

El resultado práctico: un hallazgo SAST de inyección SQL en main/src/api/usuarios.py (línea 47) y un hallazgo SCA del CVE-2024-45490 en libexpat 2.5.0 aparecen en la misma lista, ambos con un coste estimado de remediación, ambos ordenados por impacto financiero. Tu próximo sprint de seguridad prácticamente se escribe solo.