Directorio automatizado de eventos de ciberseguridad — Chile, LATAM y el mundo | TTPSEC SpA
Análisis de debilidades comunes (Common Weakness Enumeration) relevantes al stack del proyecto.
Stack: Python CLI + Web Scraping (requests, BeautifulSoup, lxml) + GitHub Pages (static)
| CWE-ID | Nombre | Relevancia | MitigaciĂłn implementada | Estado |
|---|---|---|---|---|
| CWE-78 | OS Command Injection | Media — el scraper procesa texto de fuentes externas | Sin uso de os.system(), subprocess con input externo, ni eval()/exec(). Todo el procesamiento es con regex y BeautifulSoup |
âś… Mitigado |
| CWE-400 | Uncontrolled Resource Consumption | Media — scraping de 32 fuentes podrĂa causar timeouts | Timeout de 15s por request (TIMEOUT = 15). EjecuciĂłn limitada por cron (cada 3h) |
âś… Mitigado |
| CWE-918 | Server-Side Request Forgery (SSRF) | Baja — las URLs están hardcodeadas en FUENTES |
Lista de fuentes fija en cĂłdigo, no acepta URLs de input externo | âś… Mitigado |
| CWE-116 | Improper Encoding or Escaping of Output | Media — genera archivos Markdown con datos scrapeados | TĂtulos limpiados con regex (re.sub(r"\s+", " ", title).strip()), longitud validada (5-200 chars) |
âś… Mitigado |
| CWE-20 | Improper Input Validation | Media — fechas extraĂdas de HTML externo | ValidaciĂłn de rango de años (2024-2030), regex estrictos para formatos de fecha | âś… Mitigado |
| CWE-22 | Path Traversal | Baja — rutas de archivo construidas internamente | Rutas construidas con os.path.join() desde constantes (BASE_DIR, DATA_DIR, DOCS_DIR), sin input de usuario en paths |
âś… Mitigado |
| CWE-798 | Use of Hard-coded Credentials | N/A — no hay autenticación | Sin credenciales, tokens o API keys en el código | ✅ N/A |
| CWE-ID | Nombre | Relevancia | MitigaciĂłn implementada | Estado |
|---|---|---|---|---|
| CWE-79 | Cross-Site Scripting (XSS) | Baja — GitHub Pages sanitiza HTML en Markdown | Contenido generado es Markdown estático renderizado por Jekyll. Datos scrapeados se usan como texto plano en celdas de tabla | ✅ Mitigado |
| CWE-94 | Improper Control of Code Generation | Baja — genera archivos .md | Sin templates dinámicos. Markdown generado por concatenación de strings Python | ✅ Mitigado |
| CWE-ID | Nombre | Relevancia | MitigaciĂłn implementada | Estado |
|---|---|---|---|---|
| CWE-502 | Deserialization of Untrusted Data | Baja — JSON parseado con json.load() |
json.load() es seguro contra ejecuciĂłn de cĂłdigo (a diferencia de pickle). Solo deserializa tipos primitivos |
âś… Mitigado |
| CWE-311 | Missing Encryption of Sensitive Data | N/A — no hay datos sensibles | El JSON contiene solo datos públicos de eventos (nombres, fechas, URLs públicas) | ✅ N/A |
| CWE-ID | Nombre | Relevancia | MitigaciĂłn implementada | Estado |
|---|---|---|---|---|
| CWE-732 | Incorrect Permission Assignment | Media — workflow con permisos de escritura | Permisos limitados a contents: write. Sin secrets expuestos. Workflow ejecuta solo scripts del repo |
âś… Mitigado |
| CWE-829 | Inclusion of Functionality from Untrusted Control Sphere | Baja — usa actions oficiales | Solo actions/checkout@v4 y actions/setup-python@v5 (mantenidos por GitHub) |
âś… Mitigado |
| Severidad | Total | Mitigados | Pendientes |
|---|---|---|---|
| Alta | 0 | 0 | 0 |
| Media | 5 | 5 | 0 |
| Baja | 5 | 5 | 0 |
| N/A | 2 | 2 | 0 |
Análisis realizado por TTPSEC SpA — Última revisión: 2026-03-30