Saltar al contenido

Guía

Comparativa de herramientas SAST: qué encuentran y qué se les escapa

Qué hacen las herramientas SAST, en qué se diferencian ocho de las más usadas en enfoque, lenguajes y licencia, y qué se le escapa al análisis estático en código de IA.

· 9 min de lectura · Por el equipo de vetkit

Un desarrollador desliza un escáner a lo largo de un largo pergamino de código desenrollado, cuyo haz ilumina marcas de advertencia, mientras un robot sujeta el extremo del pergamino.Un desarrollador desliza un escáner a lo largo de un largo pergamino de código desenrollado, cuyo haz ilumina marcas de advertencia, mientras un robot sujeta el extremo del pergamino.

Qué es una herramienta SAST

Una herramienta SAST (static application security testing, pruebas estáticas de seguridad de aplicaciones) lee tu código fuente sin ejecutarlo e informa del código que parece vulnerable: datos de una petición que llegan a una consulta SQL, un comando de shell construido a partir de la entrada del usuario, una verificación de certificados desactivada, un hash débil usado para contraseñas. Como solo necesita el código fuente, puede ejecutarse en cada commit, mucho antes de que la aplicación se despliegue.

El SAST es uno de varios tipos de pruebas de seguridad. El SCA (software composition analysis, análisis de composición del software) revisa tus dependencias en busca de vulnerabilidades conocidas, el secret scanning busca credenciales commiteadas y el DAST (pruebas dinámicas) sondea una aplicación en ejecución. Una herramienta SAST no hace nada de eso, así que la mayoría de los equipos la combinan al menos con el escaneo de dependencias y de secretos.

En qué se diferencian las herramientas SAST

Cuatro diferencias explican la mayor parte de lo que notarás al probar dos herramientas sobre el mismo código.

  • Qué profundidad tiene el análisis. El pattern matching encuentra código que se parece a una forma incorrecta conocida. El análisis de taint o de flujo de datos sigue un valor desde donde entra (una petición) hasta donde se usa (una consulta). Seguir los valores entre funciones y archivos encuentra más problemas reales, y suele ser donde las ediciones comerciales se diferencian de las gratuitas.
  • Un lenguaje o muchos. Las herramientas de un solo lenguaje conocen bien su ecosistema. Las multilenguaje dan un único informe para un código con varios lenguajes.
  • Dónde se ejecuta. Algunas son un comando que ejecutas en local o en CI. Otras son plataformas alojadas que se conectan a tu control de versiones y añaden dashboards, comentarios en las pull requests y políticas.
  • Si puedes escribir tus propias reglas. Los formatos de reglas legibles hacen que sea viable codificar las convenciones de tu equipo.

Ocho herramientas SAST, una al lado de otra

Son herramientas muy usadas, ordenadas alfabéticamente dentro de cada grupo. La tabla recoge lo que dice la propia documentación de cada proyecto; no es un ranking y no las hemos sometido a benchmarks entre sí.

Comparativa de herramientas SAST
HerramientaEnfoque, según su documentaciónLenguajesLicenciaSalida SARIF
CodeQL (GitHub code scanning)Construye una base de datos a partir del código y ejecuta consultas semánticas sobre ellaC/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Rust, Swift y workflows de GitHub ActionsCLI de uso gratuito en repositorios públicos; los repositorios privados requieren una licencia de GitHub Code SecuritySí
Checkmarx One SASTConstruye un grafo de elementos del código y flujos de datos y ejecuta consultas; admite consultas personalizadasMultilenguaje, incluidos Java, C#, C/C++, PHP, JavaScript/TypeScript, Python y GoComercialSí
OpengrepReglas de patrones con análisis de taint; compatible con las reglas de SemgrepMás de 30 lenguajesOpen source, LGPL 2.1Sí
SemgrepReglas de patrones que se parecen al código que detectan. Community Edition analiza dentro de una sola función o archivo; el comercial Semgrep Code añade análisis entre archivos y funcionesMás de 30 lenguajesMotor open source, LGPL 2.1; AppSec Platform es propietariaSí
Snyk CodeMotor de análisis semántico con análisis de flujo de datos y de taintMultilenguaje, incluidos Java/Kotlin, JavaScript/TypeScript, Python, Go, C#, PHP, Ruby y SwiftServicio alojado comercial con plan gratuitoSí
SonarQubeReglas de calidad del código y de seguridad; el análisis de taint para las reglas de inyección está disponible en SonarQube Server y CloudMás de 40 lenguajes y frameworks entre todas las edicionesCommunity Build es open source, LGPL 3.0; Server y Cloud son comercialesImporta SARIF de otras herramientas
BanditConstruye un árbol sintáctico de cada archivo y ejecuta plugins sobre élSolo PythonOpen source, Apache 2.0Sí, con un extra opcional
gosecReglas sobre el árbol sintáctico, analizadores basados en SSA y análisis de taintSolo GoOpen source, Apache 2.0Sí

Brakeman es otra conocida herramienta para un único framework, Ruby on Rails. Su repositorio la describe como gratuita para uso no comercial bajo su propia licencia de uso público, así que revisa los términos antes de integrarla en un servicio comercial.

Varias de ellas ofrecen ahora correcciones o triaje asistidos por IA con nombres propios, por ejemplo Copilot Autofix para las alertas de CodeQL, Semgrep Multimodal, Snyk Agent Fix y SonarQube AI CodeFix. Los nombres, las ediciones y los precios cambian a menudo en este terreno, así que lee la página actual de cada fabricante antes de decidir.

Cómo elegir

  • Un solo lenguaje, equipo pequeño. Empieza con la herramienta específica para tu stack (Bandit para Python, gosec para Go). Son gratuitas, rápidas de ejecutar y fáciles de añadir a CI.
  • Código con varios lenguajes y preferencia por el open source. Un motor multilenguaje basado en reglas, como Opengrep o Semgrep Community Edition, cubre muchos lenguajes con reglas que puedes leer y ampliar.
  • Todo está en GitHub. CodeQL a través de GitHub code scanning muestra las alertas en las pull requests sin ningún servicio adicional. Consulta GitHub Advanced Security vs vetkit.
  • Necesitas un análisis más profundo entre archivos, dashboards y políticas. Eso es lo que venden las plataformas comerciales. Compáralas con tu propio código, no con listas de funcionalidades. Consulta Semgrep vs vetkit y Snyk vs vetkit.

Elijas la que elijas, quédate con una herramienta que genere SARIF. Es el formato común que te permite enviar los hallazgos a GitHub code scanning o a otro dashboard, y cambiar de herramienta más adelante. La guía de SARIF explica cómo.

Qué se le escapa al SAST

El SAST encuentra patrones de código inseguro. Mucho de lo que sale mal en el software, sobre todo en el software escrito deprisa con un asistente de IA, no es un patrón dentro de un archivo.

ProblemaPor qué el SAST por sí solo no lo detectaQué lo detecta
Un paquete que no existe o que se registró la semana pasadaLa sentencia import es código válidoComprobaciones de dependencias contra los registros públicos
Credenciales commiteadasLa mayoría de las reglas SAST miran el comportamiento del código, no los formatos de secretosSecret scanning
Vulnerabilidades conocidas en dependenciasEl código vulnerable no está en tu repositorioAnálisis de composición del software
Falta de autorización entre usuariosEl código es sintácticamente correcto; la regla que falta forma parte del diseño de tu productoRevisión y una prueba con dos cuentas
Implementaciones a medio terminar o de rellenoNo es un patrón de seguridadChecks de calidad del código y de riesgos de IA, y revisión
Sin timeouts, consultas dentro de bucles, sin reporte de erroresSon problemas de fiabilidad, fuera de la mayoría de los conjuntos de reglas de seguridadChecks de preparación para producción
Hosting o permisos de base de datos mal configuradosEl ajuste está en una consola, no en el código fuenteRevisar el entorno desplegado

Por eso un informe SAST limpio no equivale a código listo para publicar. La guía sobre qué sale mal con el vibe coding y la guía sobre paquetes inventados repasan los casos que más importan en el código escrito con ayuda de IA.

Dónde encaja vetkit

vetkit no es un motor SAST propio. Es una auditoría de repositorios que ejecuta análisis estático como una parte de un informe más amplio. Para la seguridad del código usa Opengrep con 663 reglas propias, listadas en el catálogo público de checks, y añade Bandit para Python y gosec para Go cuando se seleccionan esos checks. Alrededor de eso ejecuta secret scanning, checks de vulnerabilidades en dependencias y de existencia de paquetes, checks de calidad del código, de riesgos del código generado por IA y de preparación para producción, y convierte los hallazgos en trabajo con seguimiento. Los hallazgos se pueden exportar como SARIF.

Si ya usas una de las herramientas de arriba y estás contento con ella, mantenla. vetkit resulta útil para las filas de la segunda tabla, y está en acceso anticipado con un Security Quick Scan gratuito que cubre secretos, vulnerabilidades conocidas en dependencias y la configuración de seguridad básica.

Fuentes

Leímos las afirmaciones sobre otras herramientas en su propia documentación o en sus repositorios el . Los productos cambian rápido, así que considera las páginas de cada proyecto como la referencia definitiva:

Los nombres de productos son marcas comerciales de sus respectivos propietarios. vetkit no está afiliado a ellos ni cuenta con su respaldo o patrocinio; los nombres se usan solo para identificar las herramientas. ¿Has visto algo desactualizado? Escribe a contact@vetkit.dev y lo corregiremos.

Solicita acceso anticipado

Cuéntanos un poco sobre tu equipo y los repositorios que quieres auditar. Incorporamos equipos en pequeños grupos y te responderemos por correo electrónico.

Solo usamos estos datos para responder a tu solicitud. Política de privacidad