Directorio automatizado de eventos de ciberseguridad — Chile, LATAM y el mundo | TTPSEC SpA
Evaluación del proyecto contra OWASP Top 10:2021 y controles relevantes.
Contexto: Este proyecto es un CLI de scraping + generador de sitio estático (GitHub Pages). No es una aplicación web con autenticación, base de datos SQL ni API dinámica. Muchas categorías OWASP tienen aplicabilidad limitada.
| ID | Categoría | Aplica | Controles implementados | Pendiente |
|---|---|---|---|---|
| A01 | Broken Access Control | ⚪ Baja | No hay sistema de autenticación ni roles. El repo es público. GitHub Actions usa permisos mínimos (contents: write) |
— |
| A02 | Cryptographic Failures | ⚪ Baja | No se almacenan datos sensibles. Sin credenciales, tokens ni PII. JSON contiene solo datos públicos de eventos | — |
| A03 | Injection | 🟡 Media | Sin SQL (JSON file-based). Sin eval()/exec(). Sin os.system() con input externo. Datos scrapeados se tratan como texto plano. Regex con validación de longitud (5-200 chars) y rango de fechas (2024-2030) |
Considerar sanitización adicional de títulos scrapeados para edge cases de Markdown injection |
| A04 | Insecure Design | ⚪ Baja | Arquitectura simple: scrape → JSON → Markdown → GitHub Pages. Sin lógica de negocio compleja. Deduplicación por hash MD5 | — |
| A05 | Security Misconfiguration | 🟡 Media | GitHub Actions con permisos restringidos. Sin secrets expuestos. .gitignore excluye archivos sensibles. Dependencies pinned con versiones mínimas en requirements.txt |
Considerar pinear versiones exactas en requirements.txt |
| A06 | Vulnerable and Outdated Components | 🟡 Media | 3 dependencias directas: requests>=2.31.0, beautifulsoup4>=4.12.0, lxml>=5.1.0. Todas mantenidas activamente |
Implementar Dependabot o renovate para actualizaciones automáticas |
| A07 | Identification and Authentication Failures | ⚪ N/A | No hay autenticación. Proyecto es público y de solo lectura para usuarios finales | — |
| A08 | Software and Data Integrity Failures | 🟡 Media | GitHub Actions usa acciones oficiales con tags versionados (@v4, @v5). Sin ejecución de código de fuentes externas |
Considerar usar hashes SHA en lugar de tags para actions |
| A09 | Security Logging and Monitoring Failures | ⚪ Baja | Logging a stdout con emojis para cada fuente scrapeada. Errores capturados y reportados. GitHub Actions mantiene logs de cada ejecución | — |
| A10 | Server-Side Request Forgery (SSRF) | ⚪ Baja | URLs de scraping están hardcodeadas en FUENTES[]. No se aceptan URLs de input externo. Timeout de 15s por request |
— |
| Nivel | Categorías | Descripción |
|---|---|---|
| 🟡 Media | A03, A05, A06, A08 | Controles implementados, mejoras recomendadas |
| ⚪ Baja/N/A | A01, A02, A04, A07, A09, A10 | No aplica o riesgo mínimo por arquitectura |
| 🔴 Alta | — | Ninguna |
==) en lugar de mínimas (>=)main (require PR, no force push)Si el proyecto evoluciona hacia una API o aplicación web:
bleach)bandit para Python)Análisis realizado por TTPSEC SpA — Última revisión: 2026-03-30