Hard2bit
← Volver al glosario Estándares y marcos

CWE

Qué es CWE

CWE (Common Weakness Enumeration) es una categorización estandarizada de los tipos de fallos de seguridad en software. Ejemplos: CWE-89 es SQL Injection, CWE-79 es Cross-Site Scripting (XSS), CWE-20 es Improper Input Validation. Un CVE (vulnerabilidad específica) corresponde a una o más categorías CWE. Ejemplo: CVE-2021-44228 (Log4Shell) es categorizado como CWE-502 (Deserialization of Untrusted Data). CWE ayuda a entender la naturaleza técnica del problema: no es solo 'hay una vulnerabilidad', sino 'hay una vulnerabilidad porque hay deserialization insegura'. CWE es útil para remediación: si entiendes es CWE-502, sabes cómo evitarlo en futuro (no deserializar datos untrusted).

Por qué importa

Para un CISO o developer, CWE es educativo y preventivo. CVE te dice 'tienes este problema específico'. CWE te dice 'tienes esta *clase* de problema, típica en aplicaciones que hacen X'. Si despliegas múltiples aplicaciones, todas CWE-79 (XSS), sabes que tienen vulnerabilidades de tipo similar y requieren similar fix (validación de input, encoding de output). CWE también es estratégico: si analizas tus últimos 5 años de vulnerabilidades y ves que 50% son CWE-79 (XSS), significa que tu proceso de revisión de código no está detectando XSS. Puedes invertir en SAST (static analysis) que detecta XSS específicamente. CWE transforma un problema específico en patrón identificable, permitiendo prevención sistemática.

Puntos clave

Cada CVE corresponde a una o más CWEs. Una CVE puede ser resultado de múltiples tipos de fallo: CWE-200 (información exposure) puede ser causa-raíz, CWE-269 (improper access control) puede ser contribuyente. Entender todas las CWEs de un CVE te da contexto completo.

Las CWEs más comunes son las que aparecen en la mayoría de brechas: CWE-79 (XSS), CWE-89 (SQL Injection), CWE-20 (Improper Input Validation), CWE-200 (Exposure of Sensitive Info). Si entrenamientos, código review y SAST se enfocan en prevenir estas, reduces significativamente riesgo.

CWE es jerárquico: hay CWEs generales (CWE-693 'Protection Mechanism Failure') y específicas (CWE-79 'XSS'). Para remediación, necesitas la específica. Para estrategia de defensa en profundidad, entiendes la general.

CWE es más accesible que CVE para developers. Un developer no usa CVE numbers diarios, pero prevenir CWE-79 en su código sí. CWE es el puente entre seguridad abstracta y código concreto.

Ejemplo: remediación basada en CWE

Un CISO analiza últimas 20 vulnerabilidades en su aplicación web. Encuentra: 8 son CWE-79 (XSS), 7 son CWE-89 (SQL Injection), 5 son CWE-20 (Improper Input Validation). Patrón claro: falta de input validation. Implementa: (1) Framework de validación centralizadora: input whitelist, output encoding automático. (2) SAST que detecta específicamente CWE-79 y CWE-89. (3) Entrenamientos a developers en CWE-79 y CWE-89. (6 meses después, de 15 nuevas vulnerabilidades, solo 1 es CWE-79. La mayoría ahora son CWE-434 (insecure file upload) que el equipo no había visto antes. Mismo enfoque: detecta el patrón, entrena, implementa control preventivo. Sin CWE, sería 'hemos arreglado problemas', sin entender qué tipo de problemas son. Con CWE, es 'hemos arreglado validación de input, siguiente paso es seguridad de upload'.

Errores habituales

  • Confundir CVE y CWE. CVE es vulnerabilidad específica en versión específica de software. CWE es tipo general de fallo. Una CVE puede existir en varias aplicaciones porque todas comparten misma CWE. No son intercambiables.
  • No analizar patrón de CWEs en tus vulnerabilidades. Si todas son CWE-79, problema no es que tengas uno, es que el proceso no detecta CWE-79. Invertir en prevención de CWE-79 (SAST, code review, encoding) es más efectivo que pachar cada instancia.
  • Ignorar CWE en remediación y solo pachar 'el bug específico'. Si remienda solo el CVE-2023-XXXXX sin entender su CWE, similar fallo está probablemente en otra parte del código. Remediación por CWE es más efectiva.
  • No usar CWE para entrenamientos a developers. Enseñar 'evitar XSS' es abstracto. Enseñar 'CWE-79 ocurre cuando no validas input, usa htmlspecialchars()' es concreto y actionable.

Términos relacionados

Servicios relacionados

Este concepto puede tener relación con servicios como:

Preguntas frecuentes

¿Cómo se relacionan CVE, CWE y CVSS?

CVE identifica vulnerabilidad específica (ej: Log4Shell). CWE categoriza el tipo de fallo (ej: Deserialization). CVSS puntúa severidad técnica (ej: 10/10). Un CVE tiene una puntuación CVSS y corresponde a una o más categorías CWE.

¿Cuáles son las CWEs más comunes?

Según OWASP Top 10 y datos históricos: CWE-79 (XSS), CWE-89 (SQL Injection), CWE-20 (Improper Input Validation), CWE-200 (Exposure of Sensitive Info), CWE-434 (Unrestricted File Upload). Prevenir estas cubre mayoría de vulnerabilidades web.

¿Cómo uso CWE para mejorar seguridad en desarrollo?

Analiza últimas vulnerabilidades en tu código, categoriza por CWE, identifica patrones. Si 50% son CWE-79, enfócate en XSS prevention (SAST rules, code review, output encoding). Entrena al equipo específicamente en esa CWE. Repite cada trimestre.

¿CWE es solo para software o también para infraestructura?

CWE es principalmente para fallos lógicos en software (input validation, autenticación, autorización). Fallos de infraestructura (misconfiguration, weak encryption) tienen categoría CWE pero menos usadas. Para infraestructura, CSPM y auditorías son más útiles.