Vulnerabilidades de seguridad: tipos y cómo corregirlas
11 de febrero de 2021
0 minutos de lecturaEl costo promedio de una filtración de datos en 2020 fue de 3,86 millones de dólares, y los costos globales del ciberdelito alcanzaron los 6 billones de dólares en 2021. El 82 % de las vulnerabilidades conocidas se encuentra en el código de las aplicaciones, el 90 % de las aplicaciones web son vulnerables a los ataques informáticos y el 68 % de ellas está expuesto a filtraciones de datos confidenciales.
Vulnerabilidad vs. exploit vs. amenaza
Para gestionar eficazmente los riesgos de ciberseguridad, es importante entender la diferencia entre una vulnerabilidad, un exploit y una amenaza.
¿Qué es una vulnerabilidad de seguridad?
Una vulnerabilidad de seguridad es un defecto en el código de un software o una configuración incorrecta de un sistema, como Log4Shell, que los atacantes pueden aprovechar para obtener acceso no autorizado directo a un sistema o una red. Una vez dentro, pueden aprovechar los permisos y privilegios para comprometer sistemas y activos.
Un analizador de vulnerabilidades examina tu entorno y lo compara con una base de datos de vulnerabilidades o una lista de vulnerabilidades conocidas para ayudarte a identificar los puntos débiles.
¿Qué es una vulnerabilidad de software?
Una vulnerabilidad de software es una debilidad en el código de un programa que un atacante puede aprovechar. Los atacantes pueden usar vulnerabilidades para obtener acceso no autorizado a la red, robar datos y comprometer sistemas.
¿Qué es un exploit de ciberseguridad?
Un exploit es la forma en que los hackers aprovechan una vulnerabilidad para lanzar un ataque. Por lo general, consiste en un software diseñado especialmente o una secuencia de comandos. Por ejemplo, los gusanos de red como CodeRed, Spida y Slammer han aprovechado vulnerabilidades de Microsoft IIS (Internet Information Services) y servidores MS-SQL a lo largo de los años.
También existen kits de exploits (por ejemplo, Rig, Magnitude y Fallout) que pueden insertarse en páginas web comprometidas. Estos kits buscan vulnerabilidades de forma continua. Cuando detectan una debilidad, intentan implementar de inmediato un exploit, como inyectar malware en el sistema host.
¿Cuál es la diferencia entre un exploit y un hackeo?
Un exploit de ciberseguridad consiste en manipular errores o brechas en el código para obtener una ventaja dentro de un sistema, por lo general para extraer datos confidenciales. El hackeo se refiere al acceso no autorizado de una persona a los datos.
¿Qué es una ciberamenaza?
Una amenaza es un evento real o hipotético en el que uno o más exploits aprovechan una vulnerabilidad para lanzar un ataque. Por ejemplo, el exploit CodeRed aprovechó una vulnerabilidad de Microsoft IIS y se utilizó activamente para infectar a más de 300.000 objetivos. Estas amenazas han causado enormes pérdidas económicas en todo el mundo.

Solo se explotará un pequeño porcentaje de las vulnerabilidades conocidas; es decir, se usarán para hackear un sistema. Las vulnerabilidades de mayor riesgo son las que tienen más probabilidades de ser explotadas y, por lo tanto, deben tener prioridad y atenderse primero, como muestra el diagrama:
Tipos de vulnerabilidades de seguridad
Las vulnerabilidades de seguridad pueden existir en todas las capas, incluidas la infraestructura, la red y las aplicaciones. En esta sección nos enfocamos en las debilidades de las aplicaciones y los sitios web.
Hay dos listas importantes que registran las debilidades que exponen las aplicaciones web y los sitios web a riesgos de ciberseguridad. La primera la mantiene la comunidad abierta y global del Proyecto Abierto de Seguridad de Aplicaciones Web (OWASP). Entre las aproximadamente 60
debilidades de seguridad de las aplicaciones descritas por OWASP, las 10 principales vulnerabilidades de OWASP destacan las que se explotan con más frecuencia.
La segunda lista es CWE (Common Weakness Enumeration), una «lista de tipos comunes de debilidades de software y hardware, desarrollada por la comunidad y con implicaciones de seguridad». CWE, al igual que el conocido diccionario estandarizado de Vulnerabilidades y Exposiciones Comunes,
(CVE), es administrada por MITRE Corporation, una organización sin fines de lucro que opera centros de investigación y desarrollo financiados por el gobierno federal. La CWE-25 es una lista que se actualiza cada año con las 25 debilidades de software más peligrosas.
La CWE-25 de MITRE enumera 3 tipos principales de debilidades de seguridad en aplicaciones y sitios web:
1. Defensas permeables
Este primer tipo de debilidad incluye fallas que podrían permitir a los usuarios eludir o falsificar los procesos de autenticación y autorización. La autenticación verifica la identidad de quien intenta acceder a un sistema, mientras que la autorización es el conjunto de permisos de acceso y uso que se asigna al usuario.
Algunos ejemplos de fallas en las defensas permeables son:
Codificación débil de contraseñas
Credenciales con protección insuficiente
Autenticación de un solo factor o inexistente
Permisos heredados de forma insegura
Sesiones que no vencen a tiempo
Si entidades no autorizadas logran acceder a recursos confidenciales y abusar de ellos, todos estos tipos de vulnerabilidad por defensas permeables pueden debilitar gravemente la postura de seguridad de la organización.
Los exploits que aprovechan vulnerabilidades en las defensas permeables pueden incluir:
Ataques de relleno de credenciales
Secuestro de identificadores de sesión
Robo de credenciales de inicio de sesión
Ataques de intermediario (MITM) (esencialmente, espionaje electrónico)
2. Gestión riesgosa de recursos
Muchas vulnerabilidades se relacionan con la gestión riesgosa de recursos como la memoria, las funciones y los frameworks de código abierto. Durante el diseño y desarrollo de aplicaciones web y sitios web, es fundamental analizar en busca de vulnerabilidades todos los componentes de terceros que se incluirán en la arquitectura, como bibliotecas y funciones.
Las fallas de esta categoría incluyen:
Lectura o escritura fuera de los límites (desbordamiento de búfer): Se puede engañar a la aplicación para que escriba o lea datos más allá del final o antes del inicio del búfer de memoria previsto.
Recorrido de rutas: Permite a los atacantes crear nombres de rutas para acceder a archivos fuera de los directorios restringidos.
Los ataques de desbordamiento de búfer son un ejemplo clásico de cómo las fallas en la gestión riesgosa de recursos exponen las aplicaciones web y los sitios web a riesgos de ciberseguridad. Estos ataques aprovechan controles insuficientes de los búferes de memoria para cambiar las rutas de ejecución y así tomar el control de la aplicación, dañar archivos o exfiltrar información confidencial.
3. Interacción insegura entre componentes
Las arquitecturas de aplicaciones altamente distribuidas de hoy envían y reciben datos entre diversos servicios, hilos y procesos. Durante la ejecución, las aplicaciones web y los sitios web deben implementar un enfoque de confianza cero, en el que toda entrada se considera sospechosa hasta que se verifica activamente que provenga de una fuente confiable y cumpla el propósito previsto.
Entre las debilidades que exponen una aplicación web o un sitio web a interacciones inseguras y riesgosas se encuentran:
Secuencias de comandos entre sitios o XSS: Neutralización incorrecta de las entradas controladas por el usuario durante la generación de páginas web. La secuencia de eventos que hace que se ejecute un script malicioso en una página web generada comienza cuando datos no confiables ingresan a una aplicación web, por lo general a través de una solicitud web.
Falsificación de solicitudes entre sitios (CSRF): Verificación incorrecta de si una solicitud aparentemente legítima y auténtica se envió intencionalmente. Estos ataques suelen llevarse a cabo mediante técnicas de ingeniería social, como correos electrónicos falsos que engañan al usuario para que haga clic en un enlace o envíe una solicitud falsificada a un sitio o servidor donde ya se autenticó.
En general, las aplicaciones web y los sitios web que no implementan controles de seguridad de confianza cero son vulnerables a ataques de puerta trasera, ataques de scripts, gusanos, troyanos y otros exploits que implementan código malicioso para causar estragos en la infraestructura, los datos y los sistemas.
¿Cuál es la vulnerabilidad más común?
Tanto OWASP-10 como CWE-25 señalan las fallas de inyección como la vulnerabilidad más común. Aunque la inyección de código puede adoptar muchas formas (SQL, NoSQL, sistema operativo, LDAP), siempre implica el envío de datos maliciosos a un intérprete mediante un comando o una consulta. El intérprete es engañado para realizar acciones no autorizadas, como ejecutar comandos o acceder a datos.
Cómo encontrar y corregir vulnerabilidades de seguridad
Las vulnerabilidades de seguridad se encuentran y corrigen mediante programas formales de gestión de vulnerabilidades. La gestión de vulnerabilidades comprende prácticas recomendadas y procedimientos entre equipos para identificar, priorizar y corregir vulnerabilidades de forma oportuna y a escala.
La evaluación de vulnerabilidades de seguridad es una parte importante del programa de gestión de vulnerabilidades. Se enfoca en conocer la eficacia de los procesos y procedimientos de gestión de vulnerabilidades de la organización mediante pruebas de penetración y otras pruebas automatizadas de evaluación de vulnerabilidades.

La gestión y evaluación de vulnerabilidades de seguridad deben ser parte integral de un ciclo de vida de desarrollo de software seguro (Secure SDLC) que pruebe el código, las bibliotecas, las imágenes de contenedores y otros componentes en busca de debilidades y vulnerabilidades durante todas las etapas del ciclo de vida del producto.
Herramientas para corregir vulnerabilidades de seguridad durante todo el SDLC
Entre las herramientas automatizadas que ayudan a los equipos de DevSecOps a implementar un Secure SDLC se incluyen:
Herramientas de análisis de composición de software (SCA): Detectan y monitorean todos los componentes, y alertan sobre los problemas y ayudan a corregirlos.
Herramientas de análisis estático de seguridad de aplicaciones (SAST): realizan evaluaciones de vulnerabilidades de caja blanca en código sin compilar.
Herramientas de seguridad de aplicaciones dinámicas (DAST): Realizan evaluaciones de vulnerabilidades de caja negra en código ejecutable.
Analizadores de vulnerabilidades de código abierto: Identifican vulnerabilidades en bibliotecas de código para agilizar la respuesta y la corrección, y garantizar el cumplimiento de los requisitos de licencias de código abierto.
Muchas herramientas de gestión de vulnerabilidades se basan en una base de datos de vulnerabilidades conocidas para realizar análisis y evaluaciones. Por ejemplo, la base de datos de vulnerabilidades Snyk Intel utiliza y enriquece fuentes públicas y privadas de vulnerabilidades e inteligencia de amenazas para ofrecer el analizador de vulnerabilidades de código abierto más completo y eficiente del sector.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.



