Pipeline CI Sin Escaneo de Seguridad
Un pipeline CI/CD que solo ejecuta tests y linting sin ningun SAST, DAST, escaneo de dependencias o deteccion de secretos significa que las vulnerabilidades solo se encuentran despues del despliegue -- si es que se encuentran.
Cómo Funciona
La mayoria de los pipelines CI incluyen pasos para construir, testear y hacer lint del codigo, pero omiten por completo las verificaciones especificas de seguridad. Sin SAST (Static Application Security Testing), patrones de codigo vulnerable como inyeccion SQL o XSS pasan desapercibidos. Sin escaneo de dependencias, los CVEs conocidos en paquetes de terceros no se detectan. Sin deteccion de secretos, API keys y contrasenas commiteadas al repositorio no se atrapan. Sin DAST (Dynamic Application Security Testing), las vulnerabilidades en tiempo de ejecucion en aplicaciones desplegadas se pierden. Para cuando estos problemas se descubren (si es que se descubren), pueden haber estado en produccion por meses, afectando usuarios reales y datos.
# BAD: CI pipeline with no security scanning steps
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
# No SAST, no dependency audit, no secret scanning
# Vulnerabilities ship to production undetected# GOOD: CI pipeline with security scanning gates
name: CI
on: [push, pull_request]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm run lint
- run: npm test
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Secret scanning
uses: trufflesecurity/trufflehog@main
- name: Dependency audit
run: npm audit --audit-level=high
- name: SAST scan
uses: returntocorp/semgrep-action@v1
with:
config: p/security-auditEjemplo Real
La vulnerabilidad Log4Shell de 2021 (CVE-2021-44228) demostro el costo de no tener escaneo de dependencias en CI. Las organizaciones que tenian escaneo automatizado de dependencias en sus pipelines fueron alertadas en horas y pudieron parchear inmediatamente. Las organizaciones sin el pasaron dias o semanas auditando manualmente que servicios estaban afectados. De manera similar, el ataque a la cadena de suministro de ua-parser-js en 2021 paso desapercibido en pipelines que carecian de escaneo de dependencias.
Cómo Prevenirlo
- Agrega un paso SAST usando Semgrep, CodeQL o SonarQube para detectar patrones de codigo vulnerable antes de que lleguen a produccion
- Incluye npm audit, pip-audit o Snyk para escanear dependencias buscando CVEs conocidos y fallar el build en hallazgos de alta severidad
- Agrega deteccion de secretos con trufflehog o gitleaks para prevenir commits accidentales de credenciales
- Configura el escaneo de seguridad como un status check requerido en la proteccion de rama para que los PRs no puedan mergearse con hallazgos de alta severidad sin arreglar
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
GitHub Actions Sin Fijar a SHA
highUsar GitHub Actions referenciados por tags mutables como @main o @v3 en lugar de SHAs de commit completos significa que una action comprometida o secuestrada puede inyectar codigo malicioso en tu pipeline CI sin ningun cambio en tu archivo workflow.
Inyeccion de Script en GitHub Actions
criticalUsar datos de eventos no confiables como github.event.issue.title directamente dentro de bloques run: permite a los atacantes inyectar comandos shell arbitrarios en tu pipeline CI creando titulos de issues, cuerpos de PR o mensajes de commit maliciosos.
Secretos Filtrados en Logs de CI
highImprimir o hacer echo de variables de entorno que contienen secretos en scripts de CI los expone en los logs de build, que frecuentemente son accesibles para todos los colaboradores del repositorio y a veces visibles publicamente en proyectos open-source.
Riesgos de Runners Self-Hosted
highUsar runners self-hosted de GitHub Actions con pull_request_target o workflows de forks publicos permite que codigo no confiable de contribuidores externos se ejecute en tu infraestructura con acceso a secrets, estado persistido y la red del host.