DEVSECOPS OPERACIÓN PIPELINE
← Volver al Índice de Herramientas
Análisis Estático de Código (SAST)
ETAPA 03 · SAST

¿QUÉ ES Y POR QUÉ ES CRUCIAL?

SAST (Static Application Security Testing) inspecciona el código fuente en reposo (sin ejecutarlo) analizando el flujo de datos (Taint Analysis) de extremo a extremo: desde una fuente no confiable (ej. un parámetro HTTP) hasta un sumidero peligroso (ej. una query SQL). Permite identificar fallas lógicas, inyecciones y malas prácticas durante la fase de desarrollo, directamente en el IDE o en cada Pull Request.

⚠️ RIESGOS Y AMENAZAS EN ESTA ETAPA:

  • Inyecciones SQL por concatenación directa de entradas de usuario en consultas.
  • Cross-Site Scripting (XSS) y fallas en la desinfección de HTML/JS.
  • Uso de funciones criptográficas obsoletas o algoritmos débiles (ej. MD5 o SHA-1 para almacenar contraseñas).

🧰 CATÁLOGO DE HERRAMIENTAS DESTACADAS

SonarQube

Open Source (LGPL-3.0, Community Edition) / Enterprise
Mantenido por: SonarSource

Plataforma líder para la inspección continua de la calidad y seguridad del código en más de 30 lenguajes, con Quality Gates configurables que bloquean el pipeline si no se cumplen umbrales de seguridad.

$ sonar-scanner
🔗 VER REPOSITORIO OFICIAL

Semgrep

Open Source (LGPL-2.1) / Cloud
Mantenido por: Semgrep Inc. (ex Return To Corp)

Motor de análisis estático ultra veloz basado en reglas semánticas (pattern matching sobre el AST) muy sencillas de escribir y personalizar para cualquier lenguaje, sin necesidad de entender compiladores.

$ semgrep --config p/security-audit
🔗 VER REPOSITORIO OFICIAL

CodeQL

Gratuito en repos públicos / GitHub Advanced Security en privados
Mantenido por: GitHub (Microsoft)

Motor de análisis estático desarrollado por GitHub (adquirió Semmle) que trata el código fuente como una base de datos relacional consultable con su propio lenguaje de queries (QL), permitiendo detectar patrones de vulnerabilidad muy complejos entre archivos.

$ codeql database analyze db --format=sarif-latest
🔗 VER REPOSITORIO OFICIAL

Bandit

Open Source (Apache-2.0)
Mantenido por: Python Code Quality Authority (PyCQA)

Herramienta especializada en encontrar problemas de seguridad comunes en código fuente Python (ej. uso de eval, subprocess con shell=True, contraseñas hardcodeadas) construyendo y recorriendo el AST del código.

$ bandit -r .
🔗 VER REPOSITORIO OFICIAL

🔧 INTEGRACIÓN EN PIPELINES DE CI/CD

Ejemplos listos para copiar y adaptar. El objetivo es que el job falle (exit code ≠ 0) y bloquee el merge/deploy cuando aparece un hallazgo de severidad alta -- ese es el "gate" real de DevSecOps.

🐙 GITHUB ACTIONS
.github/workflows/*.yml
name: sast-semgrep
on: [push, pull_request]

jobs:
  semgrep:
    runs-on: ubuntu-latest
    container:
      image: semgrep/semgrep  # imagen oficial, evita el semgrep-action deprecado
    steps:
      - uses: actions/checkout@v4
      - name: Semgrep CI (reglas OWASP + p/security-audit)
        run: semgrep ci --config p/security-audit --config p/owasp-top-ten
        env:
          SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}  # opcional, sólo si usás Semgrep Cloud

  # Nota: para repos en GitHub también se recomienda habilitar CodeQL vía
  # Settings > Code security > Code scanning (github/codeql-action), gratuito en repos públicos.
🔷 AZURE DEVOPS
azure-pipelines.yml
trigger:
  - main
pr:
  - main

pool:
  vmImage: 'ubuntu-latest'

container: semgrep/semgrep

steps:
  - checkout: self

  - script: |
      semgrep ci --config p/security-audit --config p/owasp-top-ten --sarif --output semgrep.sarif
    displayName: 'Semgrep - SAST scan'
    env:
      SEMGREP_APP_TOKEN: $(SEMGREP_APP_TOKEN)  # definido como variable secreta del pipeline

  - publish: semgrep.sarif
    artifact: semgrep-results
    displayName: 'Publicar resultados SARIF'
💡 BUENAS PRÁCTICAS PARA INTEGRACIÓN EN CI/CD
  • Correr SAST en cada Pull Request / Merge Request como Quality Gate, no sólo en un job nocturno.
  • Establecer una política de remediación priorizando Inyecciones y RCE por sobre hallazgos de estilo.
  • Capacitar a los desarrolladores en codificación segura (OWASP Top 10 / OWASP ASVS) para reducir falsos positivos recurrentes.