Las vulnerabilidades del software - una guía para novatos

Aprendiendo sobre las vulnerabilidades del software, las entradas de CVE y NVD (base de datos de vulnerabilidades de EE.UU.)


¿Qué son las vulnerabilidades del software?

El número de dispositivos conectados a Internet crece cada día. Y entre esos dispositivos no sólo encontramos ordenadores y móviles inteligentes, sino también un número crecienter de cámaras, detectores de humo, sensores de movimiento, cerraduras inteligentes, y no olvidemos que incluso  macetas de plantas. Muchos hogares dependen de la Internet de las Cosas (IoT - del ingles Internet of Things) para aprovechar al máximo las posibilidades que ofrece el auge de las tecnologías de doméstica inteligentes, pero no todos son conscientes de los peligros que pueden estar acechando detrás de esos aparatos de alta tecnología.

Imagina que una aplicación, diseñada para permitirte controlar tu hogar inteligente, presenta serios defectos, o incluso si no es ella misma que tiene defectos, interactúa con otra aplicación de una manera no prevista y conduce a resultados hipotéticamente peligrosos, como desarmar la alarma de la puerta de tu casa después de que todos se vayan al trabajo.

Es aún más claro en el contexto de los peligros que se esconden detrás de la IoT por qué la ciberseguridad se ha vuelto mucho más importante que antes. Vivimos en una sociedad en la que la ciberseguridad se ha convertido en un verdadero desafío y debe ser tomada en serio no sólo por las empresas sino también a nivel de los hogares.

En el ámbito de la ciberseguridad, una de las muchas amenazas que ponen en peligro los sistemas y redes informáticas son las vulnerabilidades del software. Es muy común que durante el proceso de construcción y codificación de las nuevas tecnologías se produzcan errores en forma de fallos. No todos esos fallos son perjudiciales, algunos ni siquiera se identifican ni se explotan. Pero algunos de esos fallos pueden ser utilizados indebidamente por agentes malintencionados (también podríamos llamarlos hackers) para obtener acceso o privilegios no autorizados en un sistema informático. Estos defectos se denominan comúnmente vulnerabilidades de software.

La tríada de la CIA

Al tener estos "bugs" de seguridad presentes en el código, podríamos estar comprometiendo uno o más elementos de la llamada tríada de la CIA. La tríada de la CIA es un modelo de seguridad de la información que consiste en los siguientes principios:

    - Confidencialidad - administrar los niveles de acceso a la información, permitiendo sólo a los usuarios autentificados y autorizados el acceso a ciertos datos;
      
    - Integridad - garantizando la buena "calidad" de los datos, lo que significa que la información es completa y correcta, y que no ha sido manipulada
      
    - Disponibilidad (en ingles availability): asegurarse de que los datos estén siempre disponibles para los usuarios autorizados
      
Para mantener los datos protegidos, ninguno de estos principios puede ser violado .

Algunos ejemplos comunes de vulnerabilidades de software

    - Inyección SQL o inyección de código
      La validación de entrada incorrecta deja lugar para este tipo de ataques. Si el código no contiene mecanismos para validar la entrada del usuario, los hackers pueden intentar insertar su código en los campos de entrada de su formulario HTML o introduciendo directamente los parámetros en la URL. De este modo, intentan acceder al contenido de la base de datos de la víctima (que, por supuesto, puede contener datos sensibles como las contraseñas de los usuarios, las direcciones, los correos electrónicos, etc.).

    - Desbordamiento de pila 
      Es una de las vulnerabilidades más antiguas y conocidas. Es básicamente una violación de la seguridad de la memoria causada por el desbordamiento de la capacidad de la pila, o mejor dicho de la asignación de memoria, al escribir más datos en ella que pueden caber. Esto lleva a que los datos se escriban donde no pertenecen y así se sobrescriben los contenidos originales.
      
    - Travesía de directorios 
      Los atacantes intentan acceder a las carpetas que no forman parte del sitio web enviando una solicitud de un archivo o carpeta que apunta al directorio padre. 
      
    - Cross-Site Scripting (XSS)
      Otro ataque basado en la inyección de código malicioso. Este tipo de hacking tiene como objetivo los visitantes de los sitios web. Los atacantes inyectan y ejecutan su código malicioso (en forma de un script del lado del navegador) en sitios web que de otra manera serían seguros y confiables. Este ataque se dirige a situaciones en las que una aplicación web depende de los datos que el usuario envía desde la salida generada previamente sin más validación. El navegador del usuario no puede diferenciar en cuáles scripts puede confiar y en cuáles no y la ejecutará. El objetivo de estas secuencias de comandos maliciosas suele ser acceder a las cookies, o tokens de sesión que se guardan en el navegador.
      

    - Cross-Site Request Forgery (CSRF) alias "ataque con un solo clic" o "session riding"
      Esta vulnerabilidad consiste en engañar a un usuario autentificado para que envíe un request sin su conocimiento. El hacker prepara primero un web request malicioso a un sitio web al que el usuario tiene acceso privilegiado. La mayoría de los navegadores web incluyen automáticamente todas las cookies utilizadas por un dominio determinado en cualquier solicitud web enviada a ese dominio. Esto se explota durante un ataque CSRF, cuando el servidor web es engañado por estas cookies incluidas automáticamente para que piense que la solicitud hackeada enviada por el usuario es legítima y, por lo tanto, llevará a cabo la acción solicitada. 

¿Qué sucede después de que se descubre una vulnerabilidad?

Después de que se descubre una nueva vulnerabilidad, la Corporación MITRE (la corporación responsable de mantener la lista CVE) la registra como una entrada CVE. CVE son las siglas de Common Vulnerabilities and Exposures (Vulnerabilidades y Exposiciones Comunes). Es básicamente un diccionario de vulnerabilidades y exposiciones de seguridad cibernética divulgadas públicamente que es libre de buscar, usar e incorporar en productos y servicios. Las entradas en CVE también se denominan "Identificadores CVE", "CVE IDs", "Nombres CVE", "Números CVE" o "CVEs". 
Estas entradas son añadidas por las llamadas CNA (CVE Numbering Authorities). Actualmente hay 124 CNAs distribuidas en 24 países de todo el mundo. Los CNAs pueden ser Vendedores, Proyectos o Investigadores de Vulnerabilidad o Programas de Recompensa de busqueda de Bugs. Básicamente todas las grandes empresas tecnológicas están en la lista, incluyendo Chrome, Facebook, IBM, Kaspersky, y similares.

A cada entrada de CVE se le asigna un número de identificación CVE (por ejemplo: CVE-2020-12345) y también una breve descripción de la vulnerabilidad así como del exploit. Además, está marcada con uno de los siguientes estados:

    - RESERVADA - este estado es el primero por el que pasa una nueva entrada CVE. Después de que un CNA o investigador de seguridad detecta una nueva vulnerabilidad, solicita su entrada en la lista CVE reservándola. Después de que el solicitante presenta todos los detalles de la nueva vulnerabilidad, el CVE, clasificado con la correspondiente puntuación CVSS estará disponible en la NVD (base de datos nacional de vulnerabilidades de EE.UU.).

    - DISPUTADA - este estado se asigna a una entrada CVE cuando hay dudas sobre si el asunto descubierto es o no es una vulnerabilidad. 

    - RECHAZADA - este estado se asigna cuando una entrada CVE no es aceptada como una entrada CVE. Lo que significa que no es una entrada CVE y debe ser ignorada. Las razones de este estado son predominantemente de naturaleza administrativa, como por ejemplo porque es un duplicado de una Entrada CVE ya existente, o el solicitante ha retirado su solicitud o fue asignada incorrectamente, etc. 


Como dijimos anteriormente, después de un registro CVE exitoso en la Lista CVE de MITRE, se incluye en la Base de Datos de Vulnerabilidades (NVD) de los Estados Unidos. Mientras que en la lista CVE gestionada por MITRE sólo encontramos información muy escasa sobre la vulnerabilidad en cuestión, la NVD nos proporciona muchos más detalles, incluyendo consejos sobre cómo arreglarla, y prepara un análisis de seguridad más elaborado. También es responsable de asignar una puntuación, de acuerdo con el Sistema de Puntuación de Vulnerabilidad Común (CVSS). El CVSS es un número del 0 al 10 que indica cuán grande es el riesgo potencial resultante de la vulnerabilidad.

Tanto MITRE como NVD están patrocinados por el Departamento de Seguridad Nacional de EE.UU. y la Agencia de Seguridad Cibernética y de Infraestructura (CISA). Están disponibles para todo el público y son de uso gratuito. A pesar de que son entidades separadas, siempre trabajan juntas, de modo que los cambios realizados en la lista CVE se reflejan directamente en la NVD.

Cómo proteger nuestro sistema de posibles ataques

Como siempre, el mejor remedio es la prevención. En este caso es aconsejable tomar un enfoque proactivo e instalar un escáner de vulnerabilidades en su sistema. Estos escáneres funcionan escaneando su entorno y comparándolo con una lista de vulnerabilidades conocidas, como la lista CVE que mencionamos anteriormente. El proceso de escaneo siempre debe hacerse sistemáticamente y de forma regular.


Además, los usuarios más experimentados pueden intentar hacer algunas pruebas de penetración, para descubrir posibles puntos débiles en su sistema. 

Imagen de Pixabay.

 
by Iveta Karailievova Date: 17-11-2020 vulnerabilidades del software CVE NVD ataques de seguridad ciberseguridad visitas : 3513  
 
Iveta Karailievova

Iveta Karailievova

Originally coming from a marketing background, decided to turn her life around and immerse herself into the wonderful exciting and most importantly – never boring world of technology and web development. Proud employee at MA-NO . Easily loses track of time when enjoying working on code. Big fan of Placebo, cats and pizza.

 
 
 
Clicky