6 herramientas SAST para analizar código y detectar vulnerabilidades
Estimados amigos de Inseguros !!!
Tu aplicación puede funcionar perfectamente.
Puede superar todas las pruebas, desplegarse sin errores y llevar varios meses en producción sin que nadie haya comunicado ningún problema.
Y, aun así, puede contener una vulnerabilidad crítica.
Un fallo en la validación de una entrada, una consulta construida incorrectamente, una credencial escrita directamente en el código o una función insegura pueden terminar convirtiéndose en el punto de entrada de un atacante.
Por eso, si tu código tiene una vulnerabilidad, es mejor encontrarla tú antes de esperar a que la encuentre otra persona.
Aquí es donde aparecen las herramientas SAST.
En este artículo vamos a explicar qué es el análisis SAST, qué vulnerabilidades puede detectar y cuáles son algunas de las mejores herramientas de análisis estático de código que deberían conocer desarrolladores, pentesters y profesionales de ciberseguridad.
¿Qué es SAST?
SAST significa Static Application Security Testing, es decir, pruebas estáticas de seguridad de aplicaciones.
Una herramienta SAST analiza el código de una aplicación sin necesidad de ejecutarla. Su objetivo es identificar patrones, funciones, flujos de datos o prácticas de programación que podrían introducir vulnerabilidades.
Este tipo de análisis puede realizarse sobre:
- El código fuente.
- Determinados artefactos compilados.
- Un repositorio completo.
- Una rama de desarrollo.
- Una pull request.
- Un pipeline de integración y despliegue continuo.
- El propio entorno de desarrollo del programador.
La principal ventaja del análisis estático de código es que permite detectar problemas de seguridad durante las primeras fases del desarrollo.
Es lo que habitualmente se conoce como shift left security: mover determinadas comprobaciones de seguridad hacia el inicio del ciclo de vida del software.
En lugar de esperar a que la aplicación esté terminada para realizar una auditoría de seguridad, se revisa el código continuamente mientras se desarrolla.
Pero cuidado.
Instalar una herramienta no convierte automáticamente a una empresa en DevSecOps. Igual que ejecutar un escáner no convierte una revisión técnica en una auditoría profesional.
Para aprender a diferenciar entre ejecutar herramientas y realizar un trabajo técnico completo, en SeguridadSi tienes el Curso Profesional de Auditoría de Ciberseguridad, donde se trabaja el proceso de alcance, pruebas, evidencias, priorización y presentación de resultados en entornos internos, externos y cloud.
¿Qué vulnerabilidades puede detectar una herramienta SAST?
Dependiendo de la herramienta, del lenguaje utilizado y de las reglas configuradas, un análisis SAST puede ayudar a localizar problemas como:
- Inyecciones SQL.
- Cross-Site Scripting o XSS.
- Uso inseguro de funciones.
- Validaciones de entrada incorrectas.
- Credenciales o secretos incluidos en el código.
- Problemas criptográficos.
- Deserialización insegura.
- Path traversal.
- Comandos construidos con datos controlados por el usuario.
- Errores en los controles de autorización.
- Configuraciones inseguras.
- Fugas de información.
- Incumplimiento de normas internas de programación segura.
Esto no significa que una herramienta SAST encuentre todas las vulnerabilidades.
Tampoco significa que todos sus resultados sean vulnerabilidades reales.
Una de las tareas más importantes en seguridad de aplicaciones es precisamente revisar, validar y priorizar los hallazgos generados por las herramientas automáticas.
Instalar una herramienta y obtener un informe con 4.000 resultados no es hacer AppSec.
Es generar un problema nuevo.
Este mismo principio se aplica al análisis de infraestructura. Un escáner puede localizar versiones, configuraciones y vulnerabilidades conocidas, pero alguien debe eliminar falsos positivos, interpretar el riesgo y decidir qué corregir primero. Ese proceso se trabaja específicamente en el Curso Especialista en Análisis de Vulnerabilidades con OpenVAS.
SAST, DAST y SCA no son lo mismo
Antes de ver las herramientas, conviene evitar una confusión bastante habitual.
SAST, DAST y SCA forman parte de la seguridad de aplicaciones, pero no analizan exactamente lo mismo.
SAST
Analiza el código de la aplicación sin ejecutarlo.
Busca errores introducidos durante el desarrollo y patrones potencialmente vulnerables.
DAST
DAST significa Dynamic Application Security Testing.
Analiza la aplicación mientras está funcionando y se comporta, desde cierto punto de vista, como lo haría un atacante externo.
Envía peticiones, modifica parámetros, estudia respuestas y trata de localizar comportamientos inseguros en la aplicación desplegada.
SCA
SCA significa Software Composition Analysis.
Su objetivo principal es analizar las dependencias, bibliotecas y componentes de terceros utilizados en el proyecto.
Por ejemplo, SAST podría detectar una consulta SQL construida de forma insegura en nuestro código, mientras que SCA podría avisarnos de que estamos utilizando una biblioteca con una vulnerabilidad conocida.
No se trata de elegir entre SAST, DAST o SCA.
Una estrategia seria de seguridad de aplicaciones debe combinar distintas técnicas, herramientas y revisiones manuales.
Y aquí es donde el conocimiento de hacking ético y pentesting resulta especialmente útil. Comprender cómo piensa un atacante ayuda a interpretar por qué un error aparentemente pequeño puede acabar formando parte de una cadena de ataque mucho más grave.
1. SonarQube
SonarQube es probablemente una de las herramientas de análisis de código más conocidas.
Se utiliza tanto para controlar la calidad del código como para detectar determinados problemas de seguridad, errores y malas prácticas.
Una de sus ventajas es que puede integrarse dentro del flujo habitual de desarrollo. Los equipos pueden analizar ramas, repositorios y pull requests, además de establecer controles de calidad antes de aceptar un cambio.
SonarQube ofrece soporte para numerosos lenguajes y tecnologías, aunque las capacidades disponibles dependen de la edición utilizada.
También permite utilizar los conocidos Quality Gates.
Un Quality Gate establece las condiciones mínimas que debe cumplir el código para considerarse aceptable. Por ejemplo:
- No introducir vulnerabilidades críticas.
- Mantener una cobertura mínima.
- No superar un porcentaje determinado de código duplicado.
- No incorporar nuevos problemas de seguridad.
- No permitir determinados patrones de programación inseguros.
SonarQube puede ser una buena opción para organizaciones que quieran introducir controles de calidad y seguridad dentro del ciclo de desarrollo.
Pero hay que configurarlo.
Dejar todas las reglas activadas, ignorar los resultados y permitir que el pipeline continúe siempre no mejora la seguridad de ninguna aplicación.
Solo genera un panel muy bonito que nadie mira.
Puedes consultar los lenguajes y capacidades actuales directamente en la documentación oficial de SonarQube.
2. Semgrep
Semgrep es una herramienta especialmente interesante para desarrolladores, equipos de seguridad y profesionales que realizan auditorías de código.
Es rápida, flexible y permite buscar patrones dentro del código utilizando reglas relativamente sencillas.
Su edición comunitaria proporciona un motor de análisis estático de código abierto, mientras que su plataforma comercial incorpora capacidades adicionales para entornos empresariales.
Una de sus grandes ventajas es la posibilidad de crear reglas propias.
Imagina que una organización dispone de una función interna que nunca debería recibir directamente datos proporcionados por un usuario.
Podemos crear una regla para detectar cada vez que un desarrollador utiliza esa función de forma insegura.
Semgrep también puede integrarse en pipelines CI/CD para analizar automáticamente los cambios realizados en el repositorio.
Es una herramienta muy útil para:
- Realizar una primera revisión de un código desconocido.
- Detectar patrones concretos.
- Crear controles adaptados a una organización.
- Analizar pull requests.
- Introducir reglas de desarrollo seguro.
- Automatizar comprobaciones de seguridad.
Eso sí, escribir reglas eficaces también requiere conocimientos.
Una regla demasiado genérica producirá cientos de falsos positivos.
Una regla demasiado específica puede dejar escapar la vulnerabilidad que realmente queríamos encontrar.
Si quieres probar este tipo de tecnologías, también puedes consultar los proyectos públicos de SeguridadSi en GitHub y utilizarlos como punto de partida para practicar con repositorios reales.
La integración en CI está explicada en la documentación oficial de Semgrep.
3. CodeQL
CodeQL es el motor de análisis semántico de código desarrollado por GitHub.
Su planteamiento es especialmente interesante: permite tratar el código como si fuera una base de datos sobre la que pueden realizarse consultas.
En lugar de buscar únicamente cadenas de texto, CodeQL construye una representación del código y permite analizar relaciones, llamadas, flujos de datos y comportamientos potencialmente peligrosos.
Con CodeQL es posible buscar, por ejemplo:
- Entradas controladas por el usuario.
- Recorridos de datos desde una fuente hasta una función peligrosa.
- Validaciones insuficientes.
- Variantes de una misma vulnerabilidad.
- Patrones de programación inseguros.
Además, puede integrarse con GitHub Actions y con las funciones de análisis de código de GitHub.
CodeQL resulta especialmente interesante para proyectos alojados en GitHub, proyectos de código abierto, equipos de seguridad de producto e investigadores de vulnerabilidades.
Su curva de aprendizaje puede ser mayor que la de otras herramientas.
Pero también ofrece posibilidades muy potentes cuando necesitamos investigar vulnerabilidades complejas y analizar cómo circulan los datos dentro de una aplicación.
Puedes ampliar información en la web oficial de CodeQL.
4. Checkmarx
Checkmarx es una plataforma de seguridad de aplicaciones muy conocida en entornos empresariales.
No se limita únicamente al análisis SAST. Su plataforma reúne diferentes capacidades relacionadas con la seguridad del ciclo de desarrollo, las dependencias, los contenedores y la priorización de riesgos.
Suele utilizarse en organizaciones que necesitan:
- Analizar grandes cantidades de código.
- Gestionar varios equipos de desarrollo.
- Centralizar hallazgos.
- Establecer políticas corporativas.
- Integrar seguridad en pipelines CI/CD.
- Obtener métricas y trazabilidad.
- Gestionar requisitos de cumplimiento.
Una de las diferencias entre utilizar una herramienta individual y desplegar una plataforma de AppSec empresarial está en la gestión.
No basta con detectar una vulnerabilidad.
También necesitamos saber:
- Quién es responsable de corregirla.
- En qué aplicación aparece.
- Qué nivel de riesgo tiene.
- Cuánto tiempo lleva abierta.
- Si existe en otras ramas.
- Si ha llegado a producción.
- Si vuelve a introducirse después de corregirla.
Checkmarx está orientado a este tipo de escenarios, aunque su implantación puede requerir tiempo, presupuesto, ajuste de reglas y personal especializado.
En una empresa, además, este conocimiento no debería quedarse exclusivamente en el equipo de seguridad. Desarrollo, sistemas, cloud y responsables técnicos necesitan compartir un lenguaje común.
Si tu organización quiere mejorar las capacidades de su equipo, puede acceder a la formación de ciberseguridad bonificable mediante FUNDAE. SeguridadSi ofrece formación para empresas en hacking ético, defensa, auditoría, Microsoft, Azure, SOC y gestión de vulnerabilidades.
5. Veracode
Veracode es otra de las grandes plataformas de seguridad de aplicaciones.
Ofrece capacidades SAST orientadas a identificar vulnerabilidades en el código e integrarlas dentro de un programa más amplio de gestión de la seguridad del software.
Al funcionar como plataforma cloud, puede resultar interesante para organizaciones que quieren centralizar el análisis y reducir parte de la infraestructura necesaria para operar este tipo de soluciones.
Veracode suele aparecer en entornos donde son importantes:
- La gestión centralizada del riesgo.
- El cumplimiento normativo.
- Los informes corporativos.
- La integración con equipos de desarrollo.
- La supervisión de múltiples aplicaciones.
- La formación y corrección de vulnerabilidades.
- La trazabilidad de los hallazgos.
Como ocurre con otras plataformas empresariales, el reto no consiste solamente en ejecutar el análisis.
El verdadero trabajo está en conseguir que desarrollo, seguridad y negocio utilicen los resultados para tomar decisiones.
Un informe con cientos de vulnerabilidades críticas que nadie corrige no sirve de nada.
Este es uno de los motivos por los que en el curso de análisis y gestión de vulnerabilidades no nos limitamos a explicar cómo lanzar un escáner. El objetivo es aprender a detectar, validar, priorizar, mitigar y comprobar que el riesgo se ha reducido realmente.
6. OpenText Fortify
Fortify es una de las soluciones más veteranas del mercado de análisis estático de código.
Actualmente forma parte de OpenText y continúa siendo habitual en organizaciones grandes y sectores regulados.
Fortify puede utilizarse en escenarios donde se necesita:
- Un análisis profundo del código.
- Soporte para aplicaciones grandes o antiguas.
- Integración con procesos corporativos.
- Gestión centralizada de vulnerabilidades.
- Cumplimiento de políticas internas.
- Informes destinados a auditoría.
- Integración con programas DevSecOps.
También es una herramienta que necesita conocimientos y ajuste.
Los falsos positivos, la priorización y la adaptación al contexto de cada aplicación siguen siendo tareas fundamentales.
No existe un botón llamado «hacer segura mi aplicación».
¿Cuál es la mejor herramienta SAST?
La respuesta profesional es la de siempre:
Depende.
Depende del lenguaje, del tamaño del proyecto, del presupuesto, del equipo, del pipeline, de los requisitos regulatorios y del nivel de madurez de la organización.
Para un pequeño proyecto o una primera aproximación, Semgrep puede ser una alternativa muy interesante.
Para proyectos alojados en GitHub, CodeQL puede integrarse de manera natural dentro del repositorio.
Para controlar calidad y seguridad en muchos lenguajes, SonarQube es una opción ampliamente utilizada.
Para grandes organizaciones que necesitan gobierno, métricas y gestión centralizada, plataformas como Checkmarx, Veracode o Fortify pueden encajar mejor.
La pregunta no debería ser solamente:
¿Qué herramienta SAST compramos?
Debería ser:
¿Qué vamos a hacer con las vulnerabilidades que encuentre?
Porque instalar una herramienta es fácil.
Crear un proceso para revisar los resultados, eliminar falsos positivos, priorizar riesgos, asignar responsables, corregir vulnerabilidades y evitar que vuelvan a aparecer es bastante más complicado.
Si estás intentando aprender estas materias, pero saltas continuamente de un vídeo, herramienta o tutorial a otro, la membresía de SeguridadSi está pensada precisamente para avanzar con una ruta, cursos completos, comunidad, sesiones de soporte y contenido nuevo cada mes.
Cómo introducir SAST en un pipeline CI/CD
Una implantación básica podría seguir este proceso:
- El desarrollador modifica el código.
- Crea una rama o una pull request.
- El pipeline ejecuta el análisis SAST.
- La herramienta genera los hallazgos.
- Las vulnerabilidades graves bloquean la integración.
- El equipo revisa los resultados.
- El desarrollador corrige el problema.
- El código vuelve a analizarse.
- La modificación se aprueba cuando cumple la política establecida.
Esto permite detectar muchos errores antes de que el código llegue a producción.
Pero conviene empezar poco a poco.
Si activamos miles de reglas y bloqueamos el pipeline por cualquier hallazgo, los desarrolladores terminarán percibiendo la seguridad como un obstáculo.
Es mejor comenzar con un conjunto reducido de vulnerabilidades importantes, revisar los resultados y aumentar progresivamente la cobertura.
Un ejemplo de implantación progresiva
Una organización podría comenzar aplicando SAST únicamente sobre las pull requests de un proyecto piloto.
Durante las primeras semanas, los resultados se mostrarían sin bloquear el despliegue. El equipo de seguridad revisaría los hallazgos, identificaría las reglas que producen más ruido y definiría cuáles representan un riesgo real para la organización.
Después podrían bloquearse únicamente vulnerabilidades nuevas de gravedad crítica o alta.
Cuando el equipo adquiriese más experiencia, la política se ampliaría progresivamente a otros proyectos, lenguajes y tipos de vulnerabilidad.
Esto es DevSecOps de verdad.
No comprar una herramienta y poner su logotipo en una presentación.
Los límites del análisis SAST
Un SAST no comprende completamente el negocio, el contexto ni el objetivo de una aplicación.
Puede detectar que un parámetro llega hasta una función peligrosa, pero no siempre entenderá si existe un control externo que limita el riesgo.
También puede ocurrir lo contrario.
La herramienta puede considerar seguro un fragmento de código que, combinado con una configuración, una vulnerabilidad lógica o un error de autorización, permita comprometer la aplicación.
Por eso, el análisis SAST no sustituye:
- Una revisión manual de código.
- Un pentest.
- Un análisis DAST.
- Un análisis de dependencias.
- Un ejercicio de threat modeling.
- Una auditoría de arquitectura.
- Una revisión de configuración.
- El conocimiento de un profesional de seguridad.
Las herramientas automáticas ayudan.
Los profesionales interpretan.
Por eso el Curso de Hacking Ético y Ciberseguridad de Cero a Profesional no consiste únicamente en aprender nombres de herramientas. Incluye fundamentos, reconocimiento, redes, hacking web, Burp Suite, SQL Injection, Bash, Python, PowerShell, cracking y laboratorios donde hay que comprender qué se está haciendo.
SAST, hacking ético y formación en ciberseguridad
Aprender a utilizar herramientas SAST es útil para desarrolladores, pero también para perfiles de hacking ético y pentesting.
Un auditor de seguridad que sabe revisar código puede identificar vulnerabilidades que resultan difíciles de encontrar utilizando únicamente pruebas dinámicas.
Además, comprender cómo se introduce una vulnerabilidad dentro del código ayuda a mejorar tanto la parte ofensiva como la defensiva de la ciberseguridad.
No se trata solo de ejecutar herramientas.
Hay que entender:
- Cómo se origina una vulnerabilidad.
- Cómo puede explotarla un atacante.
- Qué impacto tendría.
- Cómo debe corregirse.
- Cómo comprobar que la corrección es efectiva.
- Cómo evitar que vuelva a introducirse.
Si todavía estás empezando, puedes entrar primero en el curso gratuito de introducción al hacking ético y la ciberseguridad. Incluye fundamentos de OSINT, hacking web, entornos Microsoft, redes, Bash, Python y PowerShell.
También tienes una selección de cursos y recursos gratuitos de ciberseguridad, con laboratorios, ebooks, proyectos y contenidos para empezar a practicar sin comprar nada.
¿Membresía o acceso completo de por vida?
Si después de probar los contenidos gratuitos quieres continuar, en SeguridadSi tienes dos formas principales de avanzar.
La membresía de ciberseguridad está pensada para avanzar poco a poco, con cursos, rutas, comunidad, actividades, soporte y nuevos contenidos.
Es una buena opción si tienes poco tiempo, quieres seguir un ritmo progresivo y prefieres no enfrentarte de golpe a un catálogo enorme.
En cambio, el Programa SeguridadSi+ con acceso de por vida desbloquea todos los cursos actuales, los futuros, las actualizaciones, la comunidad y el soporte sin cuotas posteriores.
El programa completo puede adquirirse también mediante empresa y es bonificable mediante FUNDAE en España.
No todo el mundo necesita comprarlo todo.
Por eso puedes consultar el catálogo completo de cursos de ciberseguridad y elegir entre formación en hacking ético, auditoría, vulnerabilidades, Active Directory, Azure, Microsoft Sentinel, SOC, Red Team, MITRE ATT&CK, cracking o honeypots.
Conclusión
Las herramientas SAST permiten analizar el código y detectar determinados problemas de seguridad antes de que una aplicación llegue a producción.
SonarQube, Semgrep, CodeQL, Checkmarx, Veracode y OpenText Fortify son seis soluciones que conviene conocer, aunque están orientadas a necesidades y tipos de organizaciones diferentes.
Ninguna herramienta sustituye una estrategia completa de seguridad de aplicaciones.
La seguridad del software necesita herramientas, procesos, formación y profesionales capaces de interpretar el riesgo.
Si desarrollas aplicaciones, empieza analizando una parte pequeña de tu código.
Revisa los resultados.
Comprueba qué vulnerabilidades detecta.
Configura las reglas.
Integra progresivamente el análisis dentro de tu pipeline.
Y, sobre todo, no esperes a que sea otra persona quien encuentre el error.
Gracias por leerme !!!
Preguntas frecuentes sobre herramientas SAST
¿Qué significa SAST en ciberseguridad?
SAST significa Static Application Security Testing. Es una técnica que analiza el código de una aplicación sin ejecutarlo para detectar posibles vulnerabilidades, errores y prácticas de programación inseguras.
¿Una herramienta SAST puede detectar todas las vulnerabilidades?
No. Puede detectar muchos patrones inseguros, pero también puede generar falsos positivos o no identificar vulnerabilidades relacionadas con la lógica de negocio, la configuración o el funcionamiento real de la aplicación.
¿Cuál es la mejor herramienta SAST gratuita?
Semgrep Community Edition y CodeQL son dos alternativas muy interesantes. SonarQube también dispone de una edición Community, aunque las capacidades concretas de seguridad y los lenguajes disponibles dependen de la edición.
¿Cuál es la diferencia entre SAST y DAST?
SAST analiza el código sin ejecutar la aplicación. DAST analiza una aplicación en funcionamiento enviando peticiones y observando su comportamiento.
¿Cuál es la diferencia entre SAST y SCA?
SAST busca vulnerabilidades y errores en el código desarrollado por la organización. SCA analiza principalmente las bibliotecas, dependencias y componentes de terceros utilizados en el proyecto.
¿SAST sustituye a un pentest?
No. SAST es una fuente adicional de información. Un pentest permite analizar la aplicación en funcionamiento, comprobar vulnerabilidades y evaluar posibles cadenas de ataque que una herramienta estática podría no detectar.
¿Dónde puedo aprender hacking ético y análisis de vulnerabilidades?
En SeguridadSi puedes comenzar con el curso gratuito de hacking ético y ciberseguridad o acceder al catálogo de cursos profesionales, que incluye formación en hacking ético, pentesting, auditoría, vulnerabilidades, Microsoft, Azure, SOC y Red Team.