Seguridad

10 tipos de vulnerabilidades de seguridad

10 tipos de vulnerabilidades de seguridad
Una falla involuntaria o accidental en el código del software o en cualquier sistema que lo haga potencialmente explotable en términos de acceso a usuarios ilegítimos, comportamientos maliciosos como virus, troyanos, gusanos o cualquier otro malware se denomina vulnerabilidad de seguridad. El uso de software que ya ha sido explotado o el uso de contraseñas débiles y predeterminadas también hace que el sistema sea vulnerable al mundo exterior. Estos tipos de vulnerabilidades de seguridad requieren parches para evitar que los piratas informáticos vuelvan a utilizar exploits utilizados anteriormente para obtener acceso no autorizado al sistema. Una vulnerabilidad de seguridad, también llamada agujero o debilidad de seguridad, es una falla, un error o una falla en la implementación del código, el diseño y la arquitectura de una aplicación web y servidores, que cuando no se soluciona puede comprometer el sistema y hacer que el toda la red vulnerable al ataque. Las personas que se van a infectar incluyen el propietario de la aplicación, los usuarios de la aplicación y cualquier otra persona que dependa de esa aplicación. Veamos los riesgos de seguridad más peligrosos y comunes para las aplicaciones web.

Tabla de contenido

  1. Inyección de base de datos
  2. Autenticación rota
  3. Exposición de datos sensibles
  4. Entidades externas XML (XEE)
  5. Control de acceso roto
  6. Configuración incorrecta de seguridad
  7. Secuencias de comandos entre sitios (XSS)
  8. Deserialización insegura
  9. Uso de componentes con vulnerabilidades conocidas
  10. Registro y monitoreo insuficientes

Inyección de base de datos:

En caso de enviar datos no confiables al intérprete como parte del comando a través de cualquier área que tome la entrada del usuario i.En la entrada del formulario o en cualquier otra área de envío de datos, se producen fallas de inyección. Las consultas maliciosas del atacante pueden engañar al intérprete para que ejecute comandos que pueden mostrar datos confidenciales que el usuario no tiene autorización para ver. Por ejemplo, en un ataque de inyección SQL, cuando la entrada del formulario no se desinfecta adecuadamente, el atacante puede ingresar a la base de datos SQL y acceder a su contenido sin autorización, simplemente ingresando un código malicioso de la base de datos SQL en una forma que espera un texto sin formato. Cualquier tipo de campo que tome la entrada del usuario es inyectable i.e parámetros, variables de entorno, todos los servicios web, etc.

La aplicación es vulnerable al ataque de inyección cuando los datos proporcionados por el usuario no se desinfectan y validan, mediante el uso de consultas dinámicas sin escape consciente del contexto y el uso de datos hostiles directamente. Los defectos de inyección se pueden descubrir fácilmente mediante el examen del código y mediante el uso de herramientas automatizadas como escáneres y fuzzers. Para evitar ataques de inyección, se pueden tomar algunas medidas como separar los datos de los comandos y consultas, el uso de una API segura que proporcione una interfaz parametrizada, el uso de la validación de entrada del lado del servidor de "lista blanca" a través de herramientas como Snort, escape de caracteres especiales utilizando una sintaxis de escape específica, etc.

Un ataque de inyección puede provocar una pérdida masiva de datos, la divulgación de información confidencial, la denegación de acceso e incluso puede llevar a una toma de control completa de la aplicación. Algunos controles SQL como LIMIT se pueden usar para controlar grandes cantidades de pérdida de datos en caso de un ataque. Algunos tipos de ataques de inyección son SQL, OS, NoSQL, ataques de inyección LDAP.

Autenticación rota:

Los atacantes pueden acceder a las cuentas de los usuarios e incluso pueden comprometer todo el sistema host a través de cuentas de administrador, utilizando las vulnerabilidades en los sistemas de autenticación. Las fallas de autenticación permiten al atacante poner en peligro las contraseñas, los tokens de sesión, las claves de autenticación y pueden estar encadenados con otros ataques que pueden conducir al acceso no autorizado de cualquier otra cuenta o sesión de usuario de forma temporal y, en algunos casos, de forma permanente. Supongamos que un usuario tiene una lista de palabras o un diccionario de millones de nombres de usuario y contraseñas válidos obtenidos durante una infracción. Puede usarlos uno por uno en mucho menos tiempo usando herramientas automatizadas y scripts en el sistema de inicio de sesión para ver si alguien funciona. La implementación deficiente de la administración de identidades y los controles de acceso conduce a vulnerabilidades como la autenticación rota.

La aplicación es vulnerable al ataque de autenticación cuando permite probar diferentes nombres de usuario y contraseñas, permite ataques de diccionario o ataques de fuerza bruta sin ninguna estrategia de defensa, usa contraseñas fáciles, predeterminadas o contraseñas que se filtran en cualquier brecha, expone identificadores de sesión en URL, usos esquema de recuperación de contraseña deficiente, utiliza un patrón de cookies. La autenticación rota se puede explotar fácilmente usando herramientas simples para ataques de fuerza bruta y de diccionario con un buen diccionario. Estos tipos de ataques se pueden prevenir usando sistemas de autenticación de múltiples factores, implementando comprobaciones de contraseñas débiles al ejecutar una contraseña a través de una base de datos de contraseñas incorrectas, al no usar credenciales predeterminadas, alineando la política de complejidad de contraseñas, mediante el uso de buenas condiciones del lado del servidor. administrador de sesiones que genera una nueva identificación de sesión aleatoria después de iniciar sesión, etc.

La vulnerabilidad de autenticación rota puede resultar en comprometer algunas cuentas de usuario y una cuenta de administrador, eso es todo lo que un atacante necesita para comprometer un sistema. Estos tipos de ataques conducen al robo de identidad, fraude a la seguridad social, lavado de dinero y divulgación de información altamente clasificada. Los ataques incluyen ataques de diccionario, fuerza bruta, secuestro de sesiones y ataques de administración de sesiones.

Exposición de datos sensibles:

A veces, las aplicaciones web no protegen información y datos confidenciales como contraseñas, credenciales de bases de datos, etc. Un atacante puede robar o modificar fácilmente estas credenciales débilmente protegidas y usarlas con fines ilegítimos. Los datos confidenciales deben cifrarse mientras están en reposo o en tránsito y tienen una capa adicional de seguridad, de lo contrario, los atacantes pueden robarlos. Los atacantes pueden tener acceso a datos sensibles expuestos y robar usuarios y credenciales de base de datos con hash o texto claro del servidor o un navegador web. Por ejemplo, si una base de datos de contraseñas utiliza hashes simples o sin sal para almacenar contraseñas, una falla en la carga de archivos puede permitir que un atacante recupere la base de datos de contraseñas, lo que conducirá a la exposición de todas las contraseñas con una tabla arco iris de hashes precalculados.

La falla principal no es solo que los datos no están encriptados, incluso si están encriptados, sino que la generación de claves débiles, los algoritmos de hash débiles y el uso de cifrados débiles también pueden resultar en este tipo de uno de los ataques más comunes. Para prevenir este tipo de ataques, primero, clasifique qué tipo de datos pueden considerarse sensibles de acuerdo con las leyes de privacidad y aplique controles según la clasificación. Trate de no almacenar ningún dato clasificado que no necesite, lávelo tan pronto como lo use. Para los datos en tránsito, cifrelos con protocolos seguros i.e TLS con cifrados PFS, etc.

Estos tipos de vulnerabilidades pueden resultar en la exposición de información altamente sensible como credenciales de tarjetas de crédito, registros médicos, contraseñas y cualquier otro dato personal que pueda conducir al robo de identidad y fraude bancario, etc.

Entidades externas XML (XEE):

Los procesadores XML mal configurados procesan referencias de entidades externas dentro de documentos XML. Estas entidades externas se pueden utilizar para recuperar datos de archivos internos como / etc / passwd archivo o para realizar otras tareas maliciosas.  Los procesadores XML vulnerables pueden explotarse fácilmente si un atacante puede cargar un documento XML o incluir XML, etc. Estas entidades XML vulnerables se pueden descubrir utilizando herramientas SAST y DAST o manualmente inspeccionando dependencias y configuraciones.

Una aplicación web es vulnerable al ataque XEE debido a muchas razones, como si la aplicación acepta entradas XML directas de fuentes que no son de confianza, las Definiciones de tipo de documento (DTD) en la aplicación están habilitadas, la aplicación usa SAML para el procesamiento de identidad como SAML usa XML para la identidad inserciones, etc. Los ataques XEE se pueden mitigar evitando la serialización de datos confidenciales, utilizando formatos de datos menos complicados i.e JSON, parcheando procesadores XML que la aplicación está usando actualmente e incluso las bibliotecas, deshabilitando DTD en todos los analizadores XML, validación de la funcionalidad de carga de archivos XML usando verificación XSD, etc.

La aplicación vulnerable a este tipo de ataques puede provocar un ataque DOS, un ataque de Billion Laughs, escaneo de sistemas internos, escaneo de puertos internos, ejecución de un comando remoto que resulta en afectar todos los datos de la aplicación.

Control de acceso roto:

El control de acceso otorga a los usuarios privilegios para realizar tareas específicas. La vulnerabilidad de control de acceso roto se produce cuando los usuarios no están debidamente restringidos en las tareas que pueden realizar. Los atacantes pueden aprovechar esta vulnerabilidad que puede terminar accediendo a funciones o información no autorizadas. Digamos que una aplicación web le permite al usuario cambiar la cuenta desde la que inició sesión simplemente cambiando la URL a la cuenta de otro usuario sin más verificación.  La explotación de la vulnerabilidad de control de acceso es un ataque de cualquier atacante, esta vulnerabilidad se puede encontrar manualmente, así como mediante el uso de herramientas SAFT y DAFT. Estas vulnerabilidades existen debido a la falta de pruebas y detección automatizada de aplicaciones web, aunque la mejor forma de encontrarlas es hacerlo manualmente.

Las vulnerabilidades contienen escalada de privilegios i.e actuando como un usuario que no es o actuando como administrador mientras es un usuario, eludiendo las verificaciones de control de acceso simplemente modificando la URL o cambiando el estado de la aplicación, manipulación de metadatos, permitiendo que la clave principal se cambie como clave principal de otro usuario, etc. Para prevenir este tipo de ataques, los mecanismos de control de acceso deben implementarse en el código del lado del servidor donde los atacantes no pueden modificar los controles de acceso. Aplicación de límites comerciales de aplicaciones únicas por modelos de dominio, deshabilitación de directorios del servidor de listas, administración de alertas sobre intentos repetidos de inicio de sesión fallidos, invalidación de tokens JWT después del cierre de sesión para mitigar este tipo de ataques.

Los atacantes pueden actuar como otro usuario o administrador utilizando esta vulnerabilidad para realizar tareas maliciosas como crear, eliminar y modificar registros, etc. Puede ocurrir una pérdida masiva de datos si los datos no están protegidos incluso después de una violación.

Configuración incorrecta de seguridad:

La vulnerabilidad más común es la configuración incorrecta de la seguridad. La razón principal de la vulnerabilidad es el uso de la configuración predeterminada, la configuración incompleta, las configuraciones Adhoc, los encabezados HTTP mal configurados y los mensajes de error detallados que contienen más información de la que el usuario debería haber conocido. En cualquier nivel de una aplicación web, pueden producirse errores de configuración de seguridad i.e base de datos, servidor web, servidor de aplicaciones, servicios de red, etc. Los atacantes pueden explotar sistemas no parcheados o acceder a archivos y directorios no protegidos para tener una retención no autorizada en el sistema. Por ejemplo, una aplicación, mensajes de error excesivamente detallados que ayudan al atacante a conocer las vulnerabilidades en el sistema de la aplicación y la forma en que funciona. Se pueden utilizar herramientas y escáneres automatizados para detectar este tipo de fallas de seguridad.

Una aplicación web contiene este tipo de vulnerabilidad si carece de las medidas de refuerzo de seguridad en cualquier parte de la aplicación, se abren puertos innecesarios o habilita funciones innecesarias, se utilizan contraseñas predeterminadas, el manejo de errores revela errores informativos al atacante, está utilizando software de seguridad sin parches o desactualizado, etc. Se puede prevenir eliminando características innecesarias del código, i.una plataforma mínima sin funciones innecesarias, documentación, etc., que permite una tarea para actualizar y parchear los agujeros de seguridad como parte de los procesos de administración de parches, el uso de un proceso para verificar la efectividad de las medidas de seguridad tomadas, el uso de un proceso de endurecimiento repetible para hacer es fácil implementar otro entorno que esté correctamente bloqueado.

Estos tipos de vulnerabilidades o fallas permiten al atacante obtener acceso no autorizado a los datos del sistema, lo que conduce al compromiso total del sistema.

Secuencias de comandos entre sitios (XSS):

Las vulnerabilidades XSS ocurren en el momento en que una aplicación web incorpora datos que no son de confianza en una nueva página del sitio web sin una aprobación legítima o un escape, o actualiza una página del sitio actual con datos proporcionados por el cliente, utilizando una API de navegador que puede generar HTML o JavaScript.  Las fallas de XSS ocurren en caso de que el sitio web permita a un usuario agregar código personalizado en una ruta URL que otros usuarios puedan ver. Estas fallas se utilizan para ejecutar código JavaScript malicioso en el navegador del objetivo. Digamos que un atacante puede enviar un enlace a la víctima que contenga un enlace al sitio web de cualquier empresa. Esta conexión podría tener algún código JavaScript malicioso incrustado. En caso de que la página web del banco no esté debidamente protegida contra ataques XSS, al hacer clic en el enlace, el código malicioso se ejecutará en el navegador de la víctima.

Cross-Site Scripting es una vulnerabilidad de seguridad que está presente en casi la cuarta parte de las aplicaciones web. Una aplicación es vulnerable a XSS si la aplicación almacena una entrada de usuario no desinfectada que puede ser vista por otro usuario, mediante el uso de estructuras de JavaScript, aplicaciones de una sola página y API que incorporan poderosamente información controlable por el atacante a una página son impotentes contra DOM XSS. Los ataques XSS se pueden mitigar mediante el uso de marcos que escapan y desinfectan la entrada XSS por naturaleza como React JS, etc., aprendiendo las limitaciones de los marcos y cubriéndolos usando los propios casos, escapando de datos HTML innecesarios y no confiables en todas partes i.e en atributos HTML, URI, Javascript, etc., uso de codificación sensible al contexto en caso de modificar el documento en el lado del cliente, etc.

Los ataques basados ​​en XSS son de tres tipos i.e XSS reflejado, DOM XSS y XSS almacenado. Todos los tipos de estos ataques tienen una cantidad significativa de impacto, pero en el caso de Stored XSS, el impacto es aún mayor i.Robo de credenciales, envío de malware a la víctima, etc.

Deserialización insegura:

La serialización de datos significa tomar objetos y convertirlos a cualquier formato para que estos datos puedan usarse para otros fines más adelante, mientras que la deserialización de datos significa lo contrario de eso. La deserialización consiste en descomprimir estos datos serializados para el uso de aplicaciones. La deserialización insegura significa atemperar los datos que se han serializado justo antes de que estén a punto de ser descomprimidos o deserializados.  La deserialización insegura conduce a la ejecución remota de código y se utiliza para realizar otras tareas con fines maliciosos como escalada de privilegios, ataques de inyección, ataques de reproducción, etc. Hay algunas herramientas disponibles para descubrir este tipo de fallas, pero con frecuencia se necesita ayuda humana para validar el problema. Explotar la deserialización es un poco difícil ya que los exploits no funcionarán sin algunos cambios manuales.

Cuando la aplicación deserializa objetos maliciosos proporcionados por la entidad atacante. Esto puede dar lugar a dos tipos de ataques:.e ataques relacionados con la estructura de datos y objetos en los que el atacante modifica la lógica de la aplicación o ejecuta código remoto y ataques típicos de manipulación de datos en los que las estructuras de datos existentes se utilizan con contenido modificado, por ejemplo, ataques relacionados con el control de acceso.  La serialización se puede utilizar en la comunicación de procesos remotos (RPC) o una comunicación entre procesos (IPC), almacenamiento en caché de datos, servicios web, servidor de caché de bases de datos, sistemas de archivos, tokens de autenticación API, cookies HTML, parámetros de formulario HTML, etc. Los ataques de deserialización se pueden mitigar no utilizando objetos serializados de fuentes no confiables, implementando verificaciones de integridad, aislando el código que se ejecuta en un entorno con pocos privilegios, monitoreando las conexiones de red entrantes y salientes de los servidores que deserializan con frecuencia.

Usando componentes con vulnerabilidades conocidas:

La mayoría de los desarrolladores utilizan diferentes componentes como bibliotecas, marcos y módulos de software en la aplicación web. Estas bibliotecas ayudan al desarrollador a evitar trabajos innecesarios y proporcionan la funcionalidad necesaria. Los atacantes buscan fallas y vulnerabilidades en estos componentes para coordinar un ataque. En caso de encontrar una laguna de seguridad en un componente, todos los sitios que usan el mismo componente pueden volverse vulnerables. Los exploits de estas vulnerabilidades ya están disponibles, mientras que escribir un exploit personalizado desde cero requiere mucho esfuerzo. Este es un problema muy común y generalizado, el uso de grandes cantidades de componentes en el desarrollo de una aplicación web puede llevar a ni siquiera conocer y comprender todos los componentes utilizados, parchear y actualizar todos los componentes es un proceso largo.

Una aplicación es vulnerable si el desarrollador no conoce la versión de un componente utilizado, el software está desactualizado i.El sistema operativo, el DBMS, el software en ejecución, los entornos de ejecución y las bibliotecas, el escaneo de vulnerabilidades no se realiza con regularidad, los desarrolladores no prueban la compatibilidad del software parcheado. Se puede prevenir eliminando dependencias, archivos, documentación y bibliotecas no utilizados, verificando la versión de los componentes del lado del cliente y del servidor con regularidad, obteniendo componentes y bibliotecas de fuentes seguras oficiales y confiables, monitoreando las bibliotecas y componentes sin parches, asegurando un plan para actualizar y parchear componentes vulnerables con regularidad.

Estas vulnerabilidades provocan impactos menores, pero también pueden comprometer el servidor y el sistema. Muchas infracciones importantes se basaron en vulnerabilidades conocidas de componentes. El uso de componentes vulnerables socava las defensas de las aplicaciones y puede ser un punto de partida para un gran ataque.

Registro y monitoreo insuficientes:

La mayoría de los sistemas no toman suficientes medidas y pasos para detectar violaciones de datos. El tiempo medio de respuesta de un incidente es de 200 días después de que ha ocurrido, es mucho tiempo para hacer todas las cosas desagradables para una entidad atacante. El registro y la supervisión insuficientes permiten que el atacante ataque aún más el sistema, mantenga su control sobre el sistema, manipule, retenga y extraiga datos según la necesidad. Los atacantes utilizan la falta de seguimiento y respuesta a su favor para atacar la aplicación web.
Se produce un registro y un seguimiento insuficientes en cualquier momento i.Los registros de aplicaciones que no están siendo monitoreados para actividades inusuales, eventos auditables como intentos fallidos de inicio de sesión y valores altos de transacciones no se registran correctamente, las advertencias y errores generan mensajes de error poco claros, no hay alerta de activación en caso de pentesting utilizando herramientas DAST automatizadas, no se puede detectar o alertar rápidamente sobre ataques activos, etc. Estos se pueden mitigar asegurando que todos los inicios de sesión, las fallas de control de acceso y la validación de entrada del lado del servidor se puedan registrar para identificar la cuenta de usuario malicioso y mantenerse durante el tiempo suficiente para una investigación forense demorada, asegurándose de que los registros generados estén en un formato compatible con soluciones de administración de registros centralizadas, asegurando verificaciones de integridad en transacciones de alto valor, estableciendo un sistema para alertas oportunas de actividades sospechosas, etc.

La mayoría de los ataques exitosos comienzan con la verificación y el sondeo de vulnerabilidades en un sistema, lo que permite que estos sondeos de vulnerabilidades puedan comprometer todo el sistema.

Conclusión:

Las vulnerabilidades de seguridad en una aplicación web afectan a todas las entidades relacionadas con esa aplicación. Estas vulnerabilidades deben ser atendidas para proporcionar un entorno seguro para los usuarios. Los atacantes pueden utilizar estas vulnerabilidades para comprometer un sistema, apoderarse de él y escalar privilegios. El impacto de una aplicación web comprometida se puede visualizar desde las credenciales de tarjetas de crédito robadas y el robo de identidad hasta la filtración de información altamente confidencial, etc. dependiendo de las necesidades y vectores de ataque de entidades maliciosas.

Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...
Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...
Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...