Saltar al contenido
Lectura5 minPreview

Bienvenida al curso

Bienvenido a OWASP A06: componentes vulnerables y desactualizados. En diciembre de 2021 se publicó CVE-2021-44228, Log4Shell, una falla en la librería de registro log4j de Java con la nota máxima de CVSS, 10.0. Parchearla era sencillo. Lo difícil, en muchos equipos, fue contestar la pregunta del lunes siguiente: "¿usamos log4j, y dónde?". Casi nadie la había puesto en su lista de dependencias; llegaba escondida dentro de otra librería, dentro de un producto comprado, dentro de una imagen de contenedor. Quien tenía un inventario contestó en una hora. Quien no, pasó la semana buscando.

Este curso trata de ese inventario y de todo lo que se hace con él: el código que su aplicación no escribió, pero ejecuta igual.

Qué va a lograr

  • Explicar qué es un componente vulnerable, por qué aparece y cómo llegó al OWASP Top 10.
  • Distinguir dependencias directas y transitivas y responder "¿por qué está esto aquí?" con pipdeptree y npm explain.
  • Generar un SBOM en CycloneDX y auditar un proyecto con pip-audit y npm audit.
  • Fijar versiones con lockfiles y hashes, y automatizar actualizaciones con Dependabot y una auditoría en CI.
  • Planificar el fin de vida de runtimes y reemplazar componentes abandonados.
  • Priorizar hallazgos con CVSS, EPSS y KEV, detectar intentos de explotación y redactar un reporte.

Para quién es y qué necesita

Para quien desarrolla, para analistas de seguridad de aplicaciones y para operaciones, que es quien suele heredar el servidor con Python 3.8 que "nadie se atreve a tocar". Conviene haber hecho Seguridad web con OWASP Top 10; si la terminal le es nueva, antes haga Linux básico: 15 comandos para empezar. Necesita Python 3.11 o superior, una terminal y conexión a internet, porque las auditorías consultan bases de avisos en vivo. Node.js es opcional, solo para la comparación con npm.

Cómo está organizado

MóduloQué aprendeLaboratorio
1. Qué son los componentes vulnerables y por qué aparecenQué es A06, dependencias directas y transitivas, pip, pipdeptree, CVE y avisosInventario de dependencias de su app Flask
2. Cómo se ve en el código y cómo se revisaSBOM con cyclonedx-py, versiones, npm ci, pip-compile, pip-audit, npm audit y uso seguro de APIsSBOM y auditoría de una versión heredada
3. Cómo se previene y se corrigePolítica de actualización con ASVS, Dependabot, pytest, fin de vida y parcheo virtualCorregir dependencias y probarlo
4. Detectar, monitorear y reportarCVSS, EPSS, KEV, búsqueda en logs, reglas de WAF y la conclusiónPriorizar hallazgos y redactar el reporte
Evaluación6 preguntas sobre todo el cursoAprueba con 70 %

Cómo aprovecharlo

Sus resultados no van a coincidir con los del texto, y eso es correcto: las bases de avisos cambian a diario, así que un pip-audit de hoy puede listar un aviso que no existía cuando se escribió la lección. Lea su salida, no la del ejemplo.

El laboratorio del módulo 2 es el que más enseña. Usted audita un requirements heredado con un requests de 2018 y pip-audit le marca avisos de urllib3, un paquete que nadie pidió. Ese momento explica las dependencias transitivas mejor que cualquier diagrama. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.

Tiempo estimado

Unas 4 horas y media, casi 5. Los laboratorios encadenan la misma API Flask, mercadito-api: hágalos en orden y no borre la carpeta entre uno y otro.