Estandar de Seguridad CWE

Primero vamos a analizar una serie de conceptos necesarios para conocer lo que es CWE.

¿Qué es CWE?

CWE (Common Weakness Enumeration) es un estándar que proporciona una lista de debilidades de software comunes que pueden ocurrir durante el desarrollo de software. CWE es un proyecto de la comunidad que se enfoca en la identificación y mitigación de estas debilidades, las cuales pueden ser explotadas por atacantes.

¿Cómo se utiliza?

CWE se utiliza para identificar y mitigar debilidades de software comunes durante el desarrollo de software. Proporciona una lista exhaustiva de debilidades que pueden ocurrir, lo que ayuda a los desarrolladores a tomar medidas preventivas para evitar que estas debilidades sean explotadas por atacantes.

¿Por qué es importante?

Es importante utilizar CWE porque ayuda a identificar y mitigar debilidades de software comunes que pueden ser explotadas por atacantes. Al tener una lista de debilidades conocidas, los desarrolladores pueden tomar medidas proactivas para fortalecer la seguridad de su software y protegerlo contra posibles ataques.

¿Cómo se utiliza en la gestión de vulnerabilidades?

CWE se utiliza en la gestión de vulnerabilidades para identificar y mitigar debilidades de software comunes. Al conocer las debilidades específicas que pueden ocurrir, los equipos de seguridad pueden priorizar y abordar estas vulnerabilidades de manera efectiva, reduciendo así el riesgo de ataques exitosos.

¿Qué es un CWE ID?

Un CWE ID es un identificador único utilizado para identificar una debilidad de software común en la base de datos de CWE. Cada debilidad de software común tiene un CWE ID asociado, lo que facilita la referencia y el seguimiento de estas debilidades en la comunidad de seguridad.

¿Qué es una CWE Weakness?

Una CWE Weakness es una debilidad de software común que puede ocurrir durante el desarrollo de software. Estas debilidades son conocidas y documentadas en la base de datos de CWE, lo que permite a los desarrolladores y equipos de seguridad comprender y abordar estas vulnerabilidades de manera efectiva.

¿Qué es una CWE Category?

Una CWE Category es una categoría de debilidades de software comunes que pueden ocurrir durante el desarrollo de software. Estas categorías agrupan debilidades similares y ayudan a los desarrolladores y equipos de seguridad a comprender y abordar las debilidades de manera más eficiente.

¿Qué es una CWE View?

Una CWE View es una vista de la base de datos de CWE que proporciona una lista de debilidades de software comunes que pueden ocurrir durante el desarrollo de software. Estas vistas ayudan a los desarrolladores y equipos de seguridad a explorar y comprender las debilidades específicas que pueden afectar a su software.

¿Qué es una CWE Entry?

Una CWE Entry es una entrada en la base de datos de CWE que describe una debilidad de software común. Cada entrada de CWE proporciona información detallada sobre la debilidad, incluyendo una descripción, impacto potencial, mitigaciones recomendadas y referencias adicionales.

¿Qué es una CWE Relationship?

Una CWE Relationship es una relación entre dos debilidades de software comunes en la base de datos de CWE. Estas relaciones pueden ser de varios tipos, como “ChildOf” o “ParentOf”, y ayudan a los desarrolladores y equipos de seguridad a comprender cómo las debilidades están relacionadas entre sí.

¿Qué es una CWE Mapping?

Una CWE Mapping es una asignación de una debilidad de software común a un estándar o marco de seguridad específico. Estas asignaciones ayudan a los desarrolladores y equipos de seguridad a comprender cómo las debilidades de software comunes se relacionan con los estándares y marcos de seguridad existentes.

¿Qué es una CWE Group?

Una CWE Group es un grupo de debilidades de software comunes que comparten características similares. Estos grupos ayudan a los desarrolladores y equipos de seguridad a comprender y abordar las debilidades de software comunes de manera más eficiente.

Lo más importante de CWE es que proporciona una lista de debilidades de software comunes que pueden ocurrir durante el desarrollo de software. Al identificar y mitigar estas debilidades, los desarrolladores y equipos de seguridad pueden fortalecer la seguridad de su software y protegerlo contra posibles ataques.

Top 25 de las debilidades de software más peligrosas.

Antes de conocer el Top 25 de las debilidades de software más peligrosas, es importante tener en cuenta que CWE clasifica las debilidades de software en diferentes categorías y subcategorías.

¿Cómo se clasifican las debilidades de software en CWE?

CWE clasifica las debilidades de software en diferentes categorías y subcategorías para facilitar su identificación y mitigación. Algunas de las categorías y subcategorías más comunes son:

  • CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer significa que una aplicación no restringe adecuadamente las operaciones dentro de los límites de un búfer de memoria, lo que puede permitir a un atacante sobrescribir la memoria y ejecutar código malicioso.

  • CWE-200: Information Exposure significa que una aplicación expone información sensible a un atacante, lo que puede comprometer la seguridad de la aplicación.

  • CWE-400: Uncontrolled Resource Consumption significa que una aplicación consume recursos de manera incontrolada, lo que puede provocar una denegación de servicio.

  • CWE-600: Failure to Constrain Operations within the Bounds of a Memory Buffer significa que una aplicación no restringe adecuadamente las operaciones dentro de los límites de un búfer de memoria, lo que puede permitir a un atacante sobrescribir la memoria y ejecutar código malicioso.

  • CWE-800: Control of Execution Context significa que una aplicación no controla adecuadamente el contexto de ejecución, lo que puede permitir a un atacante modificar el comportamiento de la aplicación.

  • CWE-1000: Behavior significa que una aplicación tiene un comportamiento inesperado, lo que puede comprometer la seguridad de la aplicación.

  • CWE-1200: Security Features significa que una aplicación no implementa adecuadamente las características de seguridad, lo que puede permitir a un atacante comprometer la seguridad de la aplicación.

  • CWE-1400: Quality significa que una aplicación tiene problemas de calidad, lo que puede afectar su seguridad y confiabilidad.

  • CWE-1600: Environment significa que una aplicación no controla adecuadamente el entorno en el que se ejecuta, lo que puede comprometer su seguridad.

  • CWE-1800: Time and State significa que una aplicación no controla adecuadamente el tiempo y el estado, lo que puede permitir a un atacante realizar ataques temporales y de estado.

  • CWE-2000: Language and Locale significa que una aplicación no controla adecuadamente el idioma y la configuración regional, lo que puede comprometer su seguridad.

  • CWE-2200: Configuration significa que una aplicación no configura adecuadamente los parámetros de configuración, lo que puede permitir a un atacante modificar la configuración y comprometer la seguridad de la aplicación.

  • CWE-2400: Fault Tolerance significa que una aplicación no implementa adecuadamente la tolerancia a fallos, lo que puede afectar su seguridad y confiabilidad.

  • CWE-2600: Encapsulation significa que una aplicación no encapsula adecuadamente los componentes, lo que puede comprometer su seguridad.

  • CWE-2800: Cryptography significa que una aplicación no implementa adecuadamente la criptografía, lo que puede comprometer la seguridad de la aplicación.

  • CWE-3000: Authorization significa que una aplicación no implementa adecuadamente la autorización, lo que puede permitir a un atacante obtener acceso no autorizado a recursos sensibles.

  • CWE-3200: Authentication significa que una aplicación no implementa adecuadamente la autenticación, lo que puede permitir a un atacante obtener acceso no autorizado a la aplicación.

  • CWE-3400: Session Management significa que una aplicación no gestiona adecuadamente las sesiones, lo que puede permitir a un atacante obtener acceso no autorizado a la aplicación.

  • CWE-3600: Access Control significa que una aplicación no controla adecuadamente el acceso a los recursos, lo que puede permitir a un atacante obtener acceso no autorizado a recursos sensibles.

  • CWE-3800: Input Validation significa que una aplicación no valida adecuadamente la entrada, lo que puede permitir a un atacante inyectar código malicioso en la aplicación.

  • CWE-4000: Error Handling significa que una aplicación no maneja adecuadamente los errores, lo que puede comprometer su seguridad y confiabilidad.

  • CWE-4200: Data Handling significa que una aplicación no maneja adecuadamente los datos, lo que puede comprometer la seguridad de la aplicación.

  • CWE-4400: File Management significa que una aplicación no gestiona adecuadamente los archivos, lo que puede permitir a un atacante acceder a archivos sensibles en el sistema de archivos.

  • CWE-4600: Memory Management significa que una aplicación no gestiona adecuadamente la memoria, lo que puede permitir a un atacante sobrescribir la memoria y ejecutar código malicioso.

  • CWE-4800: Network Communication significa que una aplicación no gestiona adecuadamente la comunicación en red, lo que puede permitir a un atacante interceptar o modificar la comunicación.

  • CWE-5000: Privilege Management significa que una aplicación no gestiona adecuadamente los privilegios de usuario, lo que puede permitir a un atacante obtener privilegios elevados y realizar acciones maliciosas en el sistema.

  • CWE-5200: Information Leak significa que una aplicación expone información sensible, lo que puede comprometer la seguridad de la aplicación.

  • CWE-5400: Code Quality significa que una aplicación tiene problemas de calidad de código, lo que puede afectar su seguridad y confiabilidad.

  • CWE-5600: API Abuse significa que una aplicación abusa de una API, lo que puede comprometer la seguridad de la aplicación.

  • CWE-5800: Link Following significa que una aplicación sigue enlaces de manera insegura, lo que puede permitir a un atacante acceder a recursos sensibles en la aplicación.

  • CWE-6000: Trust Management significa que una aplicación no gestiona adecuadamente la confianza, lo que puede permitir a un atacante comprometer la seguridad de la aplicación.

  • CWE-6200: Cross-Site Scripting significa que una aplicación no neutraliza adecuadamente la entrada durante la generación de una página web, lo que puede permitir a un atacante ejecutar scripts maliciosos en el navegador del usuario.

  • CWE-6400: SQL Injection significa que una aplicación no neutraliza adecuadamente elementos especiales utilizados en un comando SQL, lo que puede permitir a un atacante ejecutar comandos SQL maliciosos en la base de datos.

  • CWE-6600: Path Traversal significa que una aplicación no limita adecuadamente una ruta de acceso a un directorio restringido, lo que puede permitir a un atacante acceder a archivos o directorios sensibles en el sistema de archivos.

  • CWE-6800: Command Injection significa que una aplicación no neutraliza adecuadamente elementos especiales utilizados en un comando del sistema operativo, lo que puede permitir a un atacante ejecutar comandos maliciosos en el sistema.

  • CWE-7000: Cross-Site Request Forgery significa que una aplicación no protege adecuadamente contra ataques de falsificación de solicitudes entre sitios, lo que puede permitir a un atacante realizar acciones maliciosas en nombre del usuario.

  • CWE-7200: Unrestricted Upload of File with Dangerous Type significa que una aplicación permite la carga de archivos sin restricciones, lo que puede permitir a un atacante cargar archivos maliciosos en el sistema y comprometer la seguridad de la aplicación.

  • CWE-7400: Open Redirect significa que una aplicación redirige a un usuario a un sitio no confiable, lo que puede permitir a un atacante redirigir a un usuario a un sitio malicioso y realizar ataques de phishing.

  • CWE-7600: Use of Hard-coded Credentials significa que una aplicación utiliza credenciales codificadas en el código fuente, lo que puede permitir a un atacante obtener acceso no autorizado a la aplicación y comprometer la seguridad de la misma.

  • CWE-7800: Reliance on Untrusted Inputs in a Security Decision significa que una aplicación confía en entradas no confiables para tomar decisiones de seguridad, lo que puede permitir a un atacante manipular las entradas y comprometer la seguridad de la aplicación.

  • CWE-8000: Missing Authorization significa que una aplicación no implementa adecuadamente la autorización, lo que puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Estas categorías y subcategorías ayudan a los desarrolladores y equipos de seguridad a identificar y mitigar debilidades de software comunes de manera efectiva, reduciendo así el riesgo de ataques exitosos.

¿Cómo se analiza la información de CWE?

Cada una de las vulnerabilidades registradas en CWE tiene una serie de atributos que permiten analizar y comprender la debilidad de software. Algunos de los atributos más importantes son:

  • Descripción: Describe la debilidad de software y cómo puede ser explotada por un atacante.

  • Impacto potencial: Describe el impacto que la debilidad puede tener en la seguridad de la aplicación.

  • Mitigaciones recomendadas: Proporciona recomendaciones para mitigar la debilidad y fortalecer la seguridad de la aplicación.

  • Referencias adicionales: Proporciona enlaces a recursos adicionales que pueden ser útiles para comprender y abordar la debilidad.

Al analizar la información de CWE, los desarrolladores y equipos de seguridad pueden identificar y mitigar debilidades de software comunes de manera efectiva, reduciendo así el riesgo de ataques exitosos.

Es importante tener en cuenta que CWE es un estándar dinámico que se actualiza periódicamente para reflejar las nuevas debilidades de software y las mejores prácticas de seguridad. Por lo tanto, es fundamental mantenerse actualizado con las últimas versiones de CWE y aplicar las recomendaciones de seguridad correspondientes.

A continuación se presenta el Top 25 de las debilidades de software más peligrosas según CWE.

1. CWE-22: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)

CWE-22 es una debilidad de software común que ocurre cuando una aplicación no limita adecuadamente una ruta de acceso a un directorio restringido. Esto puede permitir a un atacante acceder a archivos o directorios sensibles en el sistema de archivos.

Puede consultar más información en el siguiente enlace: CWE-22

2. CWE-78: Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)

CWE-78 es una debilidad de software común que ocurre cuando una aplicación no neutraliza adecuadamente elementos especiales utilizados en un comando del sistema operativo. Esto puede permitir a un atacante ejecutar comandos maliciosos en el sistema.

Puede consultar más información en el siguiente enlace: CWE-78

3. CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)

CWE-79 es una debilidad de software común que ocurre cuando una aplicación no neutraliza adecuadamente la entrada durante la generación de una página web. Esto puede permitir a un atacante ejecutar scripts maliciosos en el navegador del usuario.

Puede consultar más información en el siguiente enlace: CWE-79

4. CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)

CWE-89 es una debilidad de software común que ocurre cuando una aplicación no neutraliza adecuadamente elementos especiales utilizados en un comando SQL. Esto puede permitir a un atacante ejecutar comandos SQL maliciosos en la base de datos.

Puede consultar más información en el siguiente enlace: CWE-89

5. CWE-94: Improper Control of Generation of Code (‘Code Injection’)

CWE-94 es una debilidad de software común que ocurre cuando una aplicación no controla adecuadamente la generación de código. Esto puede permitir a un atacante ejecutar código malicioso en el sistema.

Puede consultar más información en el siguiente enlace: CWE-94

6. CWE-120: Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)

CWE-120 es una debilidad de software común que ocurre cuando una aplicación copia un búfer sin verificar el tamaño de la entrada. Esto puede permitir a un atacante sobrescribir la memoria y ejecutar código malicioso en el sistema.

Puede consultar más información en el siguiente enlace: CWE-120

7. CWE-190: Integer Overflow or Wraparound

CWE-190 es una debilidad de software común que ocurre cuando una aplicación realiza una operación aritmética que resulta en un desbordamiento de entero. Esto puede permitir a un atacante modificar el comportamiento de la aplicación y causar un comportamiento inesperado.

Puede consultar más información en el siguiente enlace: CWE-190

8. CWE-200: Information Exposure

CWE-200 es una debilidad de software común que ocurre cuando una aplicación expone información sensible a un atacante. Esto puede permitir a un atacante obtener acceso a información confidencial y comprometer la seguridad de la aplicación.

Puede consultar más información en el siguiente enlace: CWE-200

9. CWE-264: Permissions, Privileges, and Access Controls

CWE-264 es una debilidad de software común que ocurre cuando una aplicación no implementa adecuadamente permisos, privilegios y controles de acceso. Esto puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Puede consultar más información en el siguiente enlace: CWE-264

10. CWE-269: Improper Privilege Management

CWE-269 es una debilidad de software común que ocurre cuando una aplicación no gestiona adecuadamente los privilegios de usuario. Esto puede permitir a un atacante obtener privilegios elevados y realizar acciones maliciosas en el sistema.

Puede consultar más información en el siguiente enlace: CWE-269

11. CWE-352: Cross-Site Request Forgery (CSRF)

CWE-352 es una debilidad de software común que ocurre cuando una aplicación no protege adecuadamente contra ataques de falsificación de solicitudes entre sitios. Esto puede permitir a un atacante realizar acciones maliciosas en nombre del usuario.

Puede consultar más información en el siguiente enlace: CWE-352

12. CWE-434: Unrestricted Upload of File with Dangerous Type

CWE-434 es una debilidad de software común que ocurre cuando una aplicación permite la carga de archivos sin restricciones. Esto puede permitir a un atacante cargar archivos maliciosos en el sistema y comprometer la seguridad de la aplicación.

Puede consultar más información en el siguiente enlace: CWE-434

13. CWE-601: URL Redirection to Untrusted Site (‘Open Redirect’)

CWE-601 es una debilidad de software común que ocurre cuando una aplicación redirige a un usuario a un sitio no confiable. Esto puede permitir a un atacante redirigir a un usuario a un sitio malicioso y realizar ataques de phishing.

Puede consultar más información en el siguiente enlace: CWE-601

14. CWE-732: Incorrect Permission Assignment for Critical Resource

CWE-732 es una debilidad de software común que ocurre cuando una aplicación asigna permisos incorrectos a un recurso crítico. Esto puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Puede consultar más información en el siguiente enlace: CWE-732

15. CWE-798: Use of Hard-coded Credentials

CWE-798 es una debilidad de software común que ocurre cuando una aplicación utiliza credenciales codificadas en el código fuente. Esto puede permitir a un atacante obtener acceso no autorizado a la aplicación y comprometer la seguridad de la misma.

Puede consultar más información en el siguiente enlace: CWE-798

16. CWE-807: Reliance on Untrusted Inputs in a Security Decision

CWE-807 es una debilidad de software común que ocurre cuando una aplicación confía en entradas no confiables para tomar decisiones de seguridad. Esto puede permitir a un atacante manipular las entradas y comprometer la seguridad de la aplicación.

Puede consultar más información en el siguiente enlace: CWE-807

17. CWE-862: Missing Authorization

CWE-862 es una debilidad de software común que ocurre cuando una aplicación no implementa adecuadamente la autorización. Esto puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Puede consultar más información en el siguiente enlace: CWE-862

18. CWE-863: Incorrect Authorization

CWE-863 es una debilidad de software común que ocurre cuando una aplicación implementa incorrectamente la autorización. Esto puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Puede consultar más información en el siguiente enlace: CWE-863

19. CWE-918: Server-Side Request Forgery (SSRF)

CWE-918 es una debilidad de software común que ocurre cuando una aplicación permite a un atacante forzar al servidor a realizar solicitudes no autorizadas. Esto puede permitir a un atacante obtener acceso a recursos sensibles en la red interna.

Puede consultar más información en el siguiente enlace: CWE-918

20. CWE-943: Improper Neutralization of Special Elements in Data Query Logic (‘Injection’)

CWE-943 es una debilidad de software común que ocurre cuando una aplicación no neutraliza adecuadamente elementos especiales en la lógica de consulta de datos. Esto puede permitir a un atacante ejecutar comandos maliciosos en la base de datos.

Puede consultar más información en el siguiente enlace: CWE-943

21. CWE-959: Use of Password System for Primary Authentication

CWE-959 es una debilidad de software común que ocurre cuando una aplicación utiliza un sistema de contraseñas para la autenticación principal. Esto puede permitir a un atacante obtener acceso no autorizado a la aplicación y comprometer la seguridad de la misma.

Puede consultar más información en el siguiente enlace: CWE-959

22. CWE-1168: Inadequate Encryption Strength

CWE-1168 es una debilidad de software común que ocurre cuando una aplicación utiliza cifrado débil para proteger datos sensibles. Esto puede permitir a un atacante descifrar los datos y comprometer la seguridad de la aplicación.

Puede consultar más información en el siguiente enlace: CWE-1168

23. CWE-1170: Improper Restriction of XML External Entity Reference (‘XXE’)

CWE-1170 es una debilidad de software común que ocurre cuando una aplicación no restringe adecuadamente las referencias a entidades XML externas. Esto puede permitir a un atacante leer archivos sensibles en el sistema.

Puede consultar más información en el siguiente enlace: CWE-1170

24. CWE-1177: Improper Output Neutralization for Logs

CWE-1177 es una debilidad de software común que ocurre cuando una aplicación no neutraliza adecuadamente la salida en los registros. Esto puede permitir a un atacante inyectar código malicioso en los registros y comprometer la seguridad de la aplicación.

Puede consultar más información en el siguiente enlace: CWE-1177

25. CWE-1189: Improper Isolation of Shared Resources on System

CWE-1189 es una debilidad de software común que ocurre cuando una aplicación no aísla adecuadamente los recursos compartidos en el sistema. Esto puede permitir a un atacante obtener acceso no autorizado a recursos sensibles en la aplicación.

Puede consultar más información en el siguiente enlace: CWE-1189

Conclusión

CWE es un estándar importante que proporciona una lista de debilidades de software comunes que pueden ocurrir durante el desarrollo de software. Al utilizar CWE, los desarrolladores y equipos de seguridad pueden identificar y mitigar estas debilidades de manera efectiva, reduciendo así el riesgo de ataques exitosos. Es fundamental comprender y abordar las debilidades de software comunes para fortalecer la seguridad de las aplicaciones y protegerlas contra posibles amenazas.

Referencias