Configuración de Cookies

Cookies técnicas

Activas
ver cookies

Son aquellas que permiten al usuario la navegación a través de la página web y la utilización de las diferentes opciones o servicios que en ella existan, incluyendo aquellas que el editor utiliza para permitir la gestión y operativa de la página web y habilitar sus funciones y servicios.

Cookies analíticas

Inactivas
ver cookies

Son aquellas que permiten al responsable de las mismas el seguimiento y análisis del comportamiento de los usuarios del sitio web. La información recogida mediante este tipo de cookies se utiliza en la medición de la actividad del sitio web, con el fin de introducir mejoras en función del análisis de los datos de uso que hacen los usuarios del servicio.

AVISO DE COOKIES

Esta página web, propiedad de SPRI, utiliza cookies propias y de terceros con la finalidad de permitir su navegación, elaborar información estadística, analizar sus hábitos de navegación y remitirle publicidad en función de los mismos. Puedes hacer clic en Aceptar para permitir el uso de todas las cookies o puedes elegir qué tipo de cookies deseas aceptar o rechazar mediante la opción Configurar Cookies. También, puedes obtener más información en nuestra Política de Cookies.Configurar cookiesAceptar

Basque Cyber Security Centre - Centro Vasco de Ciberseguridad

Las 25 vulnerabilidades más peligrosas en ciberseguridad

La CWE (Common Weakness Enumeration) es una lista elaborada por las comunidades de desarrolladores y profesionales que enumera las debilidades de software y hardware más habituales relacionadas con la ciberseguridad. Hablar de debilidades implica todos aquellos fallos, errores y/o vulnerabilidades existentes en la implementación, el código, el diseño o la arquitectura del software o hardware y que, en caso de no solucionarse, pueden dar lugar a que un sistema o red sea vulnerable a un ataque.

Esta lista CWE se editó por primera vez 2006 e inicialmente se centraba solo en problemas de software. Tres años después, se lanzó el top 25 de vulnerabilidades enumerando las respuestas obtenidas tras sondear a desarrolladores, analistas de seguridad, investigadores y proveedores. Pero es a partir de 2019 cuando se emprende un nuevo enfoque basado en datos objetivos, para llegar a la versión 2020 actual que usa datos de la BBDD Nacional de Vulnerabilidades (NVD) norteamericana, en la que se combina la frecuencia y una puntuación promedio para determinar un orden de clasificación.

A continuación, resumimos las 25 vulnerabilidades 2020 más importantes:

  1. Neutralización inadecuada del input durante la generación de la página web (Scripting entre sites XSS). El software no neutraliza (o lo hace incorrectamente) el input del usuario, y un atacante es capaz de inyectar un script en el output de una aplicación web de forma que se ejecuta en el navegador del cliente.
  2. Escritura fuera de límites. El software escribe datos antes o después del búfer previsto, lo que puede llevar a la corrupción de los datos o a un bloqueo o ejecución de un código.
  3. Validación de entrada incorrecta. La aplicación recibe entradas o datos, pero no es capaz de validarlos o lo hace de modo incorrecto. Esta validación de entrada se usa como verificación de entradas potencialmente peligrosas para garantizar que éstas se procesen de forma segura dentro del código o al comunicarse con otros componentes.
  4. Lectura fuera de límites. El software lee datos antes o después del búfer previsto. Esto puede permitir que los delincuentes lean información confidencial en memoria o provoquen un bloqueo.
  5. Restricción incorrecta de operaciones dentro de los límites de un búfer de memoria. Habitualmente, el software realiza operaciones en un búfer de memoria, pero puede pasar que se lean o escriban en una ubicación que esté fuera del límite previsto del búfer, por lo que puede haber operaciones de lectura o escritura en ubicaciones de memoria asociadas con otras variables, estructuras de datos o datos internos del programa.
  6. Neutralización incorrecta de elementos especiales utilizados en un comando SQL (Inyección SQL). Se trata de un tipo de ataque a una aplicación web que permite insertar sentencias maliciosas SQL en la aplicación web, permitiendo acceso a datos sensibles en la base de datos o destruyendo directamente estos datos. La inyección SQL se ha convertido en un problema común en los sitios web basados en BBDD, y el fallo se detecta fácilmente pero también es fácil de explotar.
  7. Exposición de información confidencial a un usuario no autorizado. La gravedad de este error es variable y depende del contexto en el que opera la aplicación, del tipo de información confidencial expuesta y de los beneficios que puede proporcionar a un atacante.
  8. Uso de memoria liberada (use after free). Hacer referencia a la memoria liberada puede conseguir que un programa se bloquee, que utilice valores inesperados o que ejecute un código. Las consecuencias van desde la corrupción de datos válidos, hasta la ejecución de código arbitrario.
  9. Falsificación de solicitud entre sitios (CSRF). Cuando un servidor web está diseñado para recibir la solicitud de un cliente pero no tiene mecanismos para verificar que fue enviada intencionalmente, un atacante puede engañar a dicho cliente para que haga una solicitud al servidor web a través de una URL, una carga de imágenes, XML... que será tratada como una petición auténtica.
  10. Neutralización incorrecta de elementos especiales utilizados en un comando del sistema operativo (Inyección de comando del SO). Un atacante podría ejecutar comandos peligrosos directamente en el SO. Además, si la vulnerabilidad se da en un programa con privilegios, podría permitir que se especificaran comandos que no son accesibles o llamar a comandos alternativos con privilegios que el atacante no tiene.
  11. Desbordamiento de enteros (Wraparound). Cuando un valor entero se incrementa a un valor que es demasiado grande para almacenarlo en la representación asociada, se produce un desbordamiento de enteros que puede resultar crítico para la seguridad cuando se usa para controlar un bucle, para tomar una decisión de seguridad o para determinar el desplazamiento o el tamaño en comportamientos como la asignación de memoria, la copia, la concatenación, etc.
  12. Limitación incorrecta de un nombre de ruta a un directorio restringido (Ruta transversal). El software implicado utiliza una entrada externa para construir un nombre de ruta destinado a identificar un archivo o directorio que se encuentra debajo de un directorio principal restringido, pero el software no neutraliza adecuadamente los elementos especiales dentro del nombre de ruta. Así, un atacante puede escapar de la ubicación restringida para acceder a archivos o directorios que se encuentran en otras partes del sistema.
  13. Desreferenciar el puntero nulo (NULL).  Ocurre cuando una aplicación elimina la referencia de un puntero que se espera que sea válido, pero es nulo, lo que causa un bloqueo o una salida. Estos problemas pueden ocurrir por una simple omisión de programación.
  14. Autenticación incorrecta. Cuando un usuario afirma tener una identidad determinada y el software asociado no prueba, o prueba de manera insuficiente, que esta afirmación es correcta.
  15. Carga de archivos peligrosos sin restricciones. El software permite al atacante que se cargue o se transfieran archivos peligrosos que pueden procesarse automáticamente dentro del entorno del producto.
  16. Asignación incorrecta de permisos para recursos críticos. El software en cuestión especifica permisos para un recurso crítico de seguridad de una forma que permite a terceras personas leer o modificar ese recurso; exponiendo información confidencial o que ese recurso se modifique en zonas no deseadas. Algo muy peligroso cuando el recurso está relacionado con la configuración, la ejecución o el uso de datos confidenciales del usuario.
  17. Control inadecuado de la generación de código (Inyección de código). El software construye código de un componente ascendente utilizando entradas controladas externamente, pero no neutraliza elementos que podrían modificar la sintaxis o el comportamiento del segmento de código previsto. Hay que tener en cuenta que la ejecución del proceso puede alterarse enviando código a través de canales legítimos de datos, sin utilizar ningún otro mecanismo.
  18. Credenciales protegidas de forma insuficiente. La aplicación transmite o almacena credenciales de autenticación, pero utiliza un método poco seguro y susceptible de ser interceptadas por usuarios no autorizados.
  19. Restricción incorrecta de la referencia XML. Al enviar un archivo XML, que pueda contener entidades XML con URI, un atacante puede hacer que la aplicación de procesamiento lea el contenido de un archivo local, lo que puede obligar a la aplicación a realizar solicitudes salientes a servidores a los que el atacante no puede acceder directamente y que pueden usarse para eludir las restricciones del firewall o para ocultar la fuente de los ataques.
  20. Uso de credenciales codificadas. El fallo de credenciales codificadas en un software puede crear una entrada que permita al atacante eludir la autenticación que ha sido configurada por el administrador del software.
  21. Deserialización de datos no confiables. La aplicación deserializa los datos que no son de confianza sin verificar suficientemente que los datos resultantes son válidos. Éstos se pueden modificar si no se utiliza la criptografía como modo de protección.
  22. Gestión inadecuada de privilegios. El software no asigna, modifica, rastrea ni verifica correctamente los privilegios de un usuario, lo que crea un ámbito que está fuera de control de ese usuario.
  23. Consumo incontrolado de recursos. El software implicado no controla adecuadamente la asignación y mantenimiento de un recurso limitado, lo que permite que se pueda influir en la cantidad de recursos consumidos, lo que finalmente conduce al agotamiento de los disponibles.
  24. Ausencia de autenticación para función crítica. El programa no realiza ninguna autenticación para las funcionalidades que requieren una identidad de usuario demostrable, o consume una cantidad significativa de recursos.
  25. Autorización desaparecida. El software no realiza las verificaciones de autorización cuando un usuario intenta acceder a un recurso o realizar una acción, facilitando el acceso a datos o a acciones que no se les debería permitir realizar, con los consiguientes problemas de exposición de información, denegación de servicio y ejecución de código arbitrario.

Un top 25 muy valioso para los profesionales del sector de la ciberseguridad

Si bien la lista CWE incluye más de 700 posibles errores, de ésta se desprende que solo ocho de ellos realmente llevan a consecuencias peligrosas. Es decir, si hay un fallo que se manifiesta de manera que pueda ser aprovechado para realizar un ataque exitoso, uno de estos ocho errores estará presente:

  • Leer datos.
  • Modificar datos.
  • Denegación de servicio (DOS). Ejecución poco confiable. 
  • Denegación de servicio (DOS). Consumo de recursos. 
  • Ejecutar códigos o comandos no autorizados. 
  • Obtener privilegios y/o asumir identidades. 
  • Mecanismos de protección de bypass. 
  • Ocultación de actividades.

En definitiva, las empresas de desarrollo de software y hardware, así como los profesionales de seguridad, utilizan hoy CWE como herramienta para detectar, eliminar o mitigar las vulnerabilidades. La lista CWE es un recurso gratuito que identifica los errores de programación más generalizados que pueden provocar un ataque exterior, unos fallos que generalmente son fáciles de encontrar pero que también son sencillos para ser aprovechados por los cibercriminales.

25 vulnerabilidades

El top 25 es un valioso recurso para ayudar a los desarrolladores, evaluadores y usuarios, así como a gerentes de proyectos, investigadores de seguridad y educadores, a proporcionar información sobre las debilidades de seguridad más graves y actuales.

La versión 2020 de CWE utiliza datos de la BBDD Nacional de Vulnerabilidades (NVD) norteamericana.