Los 10 mejores tipos de vulnerabilidades de seguridad

Los 10 mejores tipos de vulnerabilidades de seguridad
Una falla no intencionada o accidental en el código de 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 llama vulnerabilidad de seguridad. El uso de software que ya ha sido explotado o el uso de contraseñas débiles y predeterminadas también resulta en hacer que el sistema sea vulnerable al mundo exterior. Estos tipos de vulnerabilidades de seguridad requieren parches para evitar que los piratas informáticos usen exploits utilizados anteriormente en ellos nuevamente para obtener acceso no autorizado al sistema. Una vulnerabilidad de seguridad también llamada agujero de seguridad o debilidad es un defecto, un error o una falla en la implementación del código, el diseño y la arquitectura de una aplicación web y los servidores, que cuando se dejan sin abordar pueden resultar en un compromiso del sistema y produce el sistema toda la red vulnerable al ataque. Las personas se infectarán incluyen el propietario de la aplicación, los usuarios de la aplicación y cualquier otra persona que confíe en 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 confidencial
  4. Entidades externas XML (XEE)
  5. Control de acceso roto
  6. Configuración errónea de seguridad
  7. Scripting de sitios cruzados (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.e Entrada de formulario o cualquier otro á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 analizar. Por ejemplo, en un ataque de inyección SQL, cuando la entrada del formulario no está desinfectada correctamente, el atacante puede ingresar la base de datos SQL y acceder a su contenido sin autorización, solo ingresando el código de base de datos SQL malicioso en un formulario que espera un texto sin ley. 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 suministrados por el usuario no se desinfectan y validan, mediante el uso de consultas dinámicas sin el escape consciente de 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, hay alguna medida que se puede tomar como separar los datos de los comandos y consultas, el uso de una API segura que proporciona una interfaz parametrizada, el uso de la validación de entrada del lado del servidor "de la lista blanca" a través de herramientas como Snort, Escapar de caracteres especiales usando sintaxis de escape específica, etc.

Un ataque de inyección puede conducir a una pérdida masiva de datos, divulgación de información confidencial, negación del acceso e incluso puede conducir a una solicitud completa de la aplicación. Algunos controles SQL como el límite 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 ataques de inyección SQL, OS, NoSQL, LDAP.

Autenticación rota:

Los atacantes pueden acceder a cuentas de usuarios e incluso pueden comprometer todo el sistema de host a través de cuentas de administración, utilizando las vulnerabilidades en los sistemas de autenticación. Los defectos de la autenticación permiten al atacante comprometer contraseñas, tokens de sesión, 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 temporal y, en algunos casos, permanentemente, permanentemente. Digamos que un usuario tiene una lista de palabras o un diccionario de millones de nombres de usuario y contraseñas válidas obtenidas durante una violación. Puede usarlos uno por uno en un tiempo extremadamente menor utilizando herramientas y scripts automatizados en el sistema de inicio de sesión para ver si alguien funciona. Mala implementación de la gestión de identidad 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, use contraseñas o contraseñas fáciles y fáciles Esquema de recuperación de contraseña deficiente, utiliza un patrón de cookies. La autenticación rota se puede explotar fácilmente utilizando herramientas simples para ataques con forcedura bruta y diccionario con un buen diccionario. Estos tipos de ataques se pueden evitar utilizando sistemas de autenticación de múltiples factores, implementando verificaciones de contraseña débiles ejecutando una contraseña a través de una base de datos de contraseñas malas, al no usar credenciales predeterminados, al alinear la política de complejidad de la contraseña, mediante el uso de un buen lado del servidor Manager de sesión que genera un nuevo ID de sesión aleatorio después del inicio de sesión, etc.

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

Exposición de datos confidenciales:

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

El defecto principal no es solo que los datos no están encriptados, incluso si está encriptado, sino una generación de claves débil, algoritmos de hashing débiles, el uso de cifrado débil también puede dar lugar a este tipo de ataques más comunes. Para evitar este tipo de ataques, primero, clasifique qué tipo de datos pueden considerarse sensibles de acuerdo con las leyes de privacidad y aplicar los controles según la clasificación. Intente no almacenar ningún datos clasificados que no necesite, lávalos tan pronto como lo use. Para los datos en tránsito, cifátelo con protocolos seguros I.E TLS con CIPHERS PFS, etc.

Estos tipos de vulnerabilidades pueden dar lugar a la exposición de información altamente confidencial, como credenciales de tarjetas de crédito, registros de salud, contraseñas y cualquier otro datos personales que puedan conducir al robo de identidad y al fraude bancario, etc.

Entidades externas XML (XEE):

Procesadores XML mal configurados procesan referencias de entidad externa dentro de los documentos XML. Estas entidades externas se pueden usar para recuperar los datos de los archivos internos como /etc/passwd archivo o para realizar otras tareas maliciosas. Los procesadores XML vulnerables se pueden explotar 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 mediante la inspección de dependencias y configuraciones.

Una aplicación web es vulnerable al ataque XEE debido a muchas razones como si la aplicación acepta la entrada XML directa de fuentes no confiables, las definiciones de tipo de documento (DTDS) en la aplicación están habilitados, la aplicación usa SAML para el procesamiento de identidad como SAML usa XML para identidad inserciones, etc. Los ataques de XEE se pueden mitigar evitando la serialización de datos confidenciales, utilizando formatos de datos menos complicados i.E JSON, Patching Processors XML La aplicación es curren utilizando e incluso las bibliotecas, deshabilitando los DTD en todos los analizadores XML, la validación de la funcionalidad de carga de archivos XML utilizando la verificación XSD, etc.

La aplicación vulnerable a este tipo de ataques puede conducir a un ataque de DOS, un ataque de mil millones de risas, escaneo de sistemas internos, escaneo de puertos internos, ejecutando un comando remoto que resulta en afectar todos los datos de la aplicación.

Control de acceso roto:

El control de acceso está dando a los usuarios privilegios para realizar tareas específicas. La vulnerabilidad de control de acceso roto se lleva a cabo cuando los usuarios no están correctamente restringidos en las tareas que pueden realizar. Los atacantes pueden explotar esta vulnerabilidad que puede terminar para acceder a la funcionalidad o información no autorizadas. Supongamos que una aplicación web le permite al usuario cambiar la cuenta en la que ha iniciado sesión solo cambiando la URL a la cuenta de otro usuario sin una verificación adicional. Explotar la vulnerabilidad del control de acceso es un ataque de referencia 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 la detección automatizada de aplicaciones web, aunque la mejor manera de encontrarlas es hacerlo manualmente.

Las vulnerabilidades contienen privilegios de escalada I.E actuando como un usuario que no está o actúa como administrador mientras es un usuario, evitando las verificaciones de control de acceso simplemente modificando la URL o cambiando la manipulación de metadatos de estado de la aplicación, lo que permite que la clave principal se cambie como la clave principal de otro usuario, etc. Para evitar 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 los límites comerciales de aplicaciones únicos mediante modelos de dominio, deshabilitación de los directorios de listado del servidor, alerta al administrador en los repetidos intentos de inicio de sesión, la invalidación de los tokens JWT después de que se debe garantizar el 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 asegurados incluso después de una violación.

Configuración errónea de seguridad:

La vulnerabilidad más común es la configuración errónea de 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 lo que el usuario debería haber sabido. En cualquier nivel de una aplicación web, pueden ocurrir configuraciones erróneas de seguridad I.E Base de datos, servidor web, servidor de aplicaciones, servicios de red, etc. Los atacantes pueden explotar sistemas no parpadeados o acceder a archivos y directorios sin protección 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 vulnerabilidades en el sistema de aplicación y la forma en que funciona. Se pueden usar herramientas y escáneres automatizados para detectar este tipo de defectos de seguridad.

Una aplicación web contiene este tipo de vulnerabilidad Si falta las medidas de endurecimiento de seguridad en cualquier parte de la aplicación, los puertos innecesarios están abiertos o permite características innecesarias, se utilizan contraseñas predeterminadas, el manejo de errores revela sobre errores informativos al atacante, está utilizando Software de seguridad no parpadeado o desactualizado, etc. Se puede prevenir eliminando las características innecesarias del código, i.e Una plataforma mínima sin características innecesarias, documentación, etc., lo que permite una tarea de actualizar y parchear los agujeros de seguridad como parte de los procesos de gestió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 realizar Es fácil implementar otro entorno que esté bien bloqueado.

Estos tipos de vulnerabilidades o defectos permiten al atacante obtener acceso no autorizado a los datos del sistema que conduce a la compromiso completo del sistema.

Scripting de sitio cruzado (XSS):

Las vulnerabilidades de XSS ocurren en el punto en que una aplicación web incorpora datos no confiables en una nueva página del sitio web sin aprobación o escapada legítima, o actualiza una página del sitio actual con datos proporcionados por el cliente, utilizando una API del navegador que puede hacer HTML o JavaScript. Los defectos de XSS ocurren en caso de que el sitio web permita que un usuario agregue código personalizado a una ruta de URL que otros usuarios pueden ver. Estos defectos se utilizan para ejecutar el código JavaScript malicioso en el navegador del objetivo. Digamos que un atacante puede enviar un enlace a la víctima que contiene un enlace al sitio web de cualquier empresa. Esta conexión podría tener un código JavaScript malicioso integrado en él, en caso de que la página web del banco no esté asegurada adecuadamente contra los ataques XSS, al hacer clic en el enlace, el código malicioso se ejecutará en el navegador de la víctima.

La secuencia de comandos de sitios cruzados es una vulnerabilidad de seguridad presente en casi ⅔ de las aplicaciones web. Una aplicación es vulnerable a XSS si la aplicación almacena una entrada de usuario insanitizada que otro usuario puede ver, mediante el uso de estructuras de JavaScript, aplicaciones de una sola página y API que incorporan la información controlable de atacantes a una página contra DOM XSSS. 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 los cubren utilizando los casos propios, escapando de datos HTML innecesarios y no confiables en todas partes.E en atributos HTML, URI, JavaScript, etc., el uso de la 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 reflejó XSS, DOM XSS y XSS almacenado. Todos los tipos de estos ataques tienen una cantidad significativa de impacto, pero en el caso de XSS almacenado, el impacto es aún mayor I.e robo de credenciales, enviando malware a la víctima, etc.

Deserialización insegura:

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

Cuando la aplicación deserializa objetos maliciosos suministrados por la entidad atacante. Esto puede conducir a dos tipos de ataques i.E ataques relacionados con la estructura de datos y los objetos en los que el atacante modifica la lógica de la aplicación o ejecuta el código remoto y los 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 de bajo privilegiado, monitoreando las conexiones de red entrantes y salientes de los servidores que se deserializan con frecuencia.

Uso de componentes con vulnerabilidades conocidas:

La mayoría de los desarrolladores utilizan diferentes componentes, como bibliotecas, marcos y módulos de software. Estas bibliotecas ayudan al desarrollador a evitar el trabajo innecesario y proporcionar la funcionalidad necesaria. Los atacantes buscan defectos y vulnerabilidades en estos componentes para coordinar un ataque. En caso de encontrar una laguna de seguridad en un componente puede hacer que todos los sitios utilizan el mismo componente, vulnerable. Las exploits de estas vulnerabilidades ya están disponibles mientras se escribe una exploit personalizada 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 no conocer y comprender todos los componentes utilizados, parchear y actualizar todos los componentes es un avance largo.

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

Estas vulnerabilidades conducen a impactos menores, pero también pueden conducir a la compromiso del servidor y el sistema. Muchas violaciones grandes se basaron en vulnerabilidades conocidas de componentes. El uso de componentes vulnerables socava las defensas de la aplicación y puede ser un punto de partida para un gran ataque.

Insuficiente registro y monitoreo:

La mayoría de los sistemas no toman suficientes medidas y pasos para detectar violaciones de datos. El tiempo de respuesta promedio de un incidente es 200 días después de que ocurriera, este es mucho tiempo para hacer todas las cosas desagradables para una entidad atacante. El registro y el monitoreo insuficientes permiten al atacante atacar aún más el sistema, mantener su control sobre el sistema, manipular, retener y extraer datos según la necesidad. Los atacantes usan la falta de monitoreo y respuesta a su favor para atacar la aplicación web.
El registro y el monitoreo insuficientes ocurren en cualquier momento que.E registros de aplicaciones que no se están monitoreando para actividades inusuales, eventos auditables como intentos de inicio de sesión fallidos y altos valores de transacción no se registran correctamente, las advertencias y los errores generan mensajes de error poco claros, sin alerta de activación en caso de pentestación utilizando herramientas DAST automatizadas, no puede detectar detectar o alerta a los ataques activos rápidamente, etc. Estos se pueden mitigar asegurando todos los inicio de sesión, fallas de control de acceso y la validación de entrada del lado del servidor se pueden registrar para identificar la cuenta de usuario malicioso y mantenerse suficiente tiempo para la investigación forense retrasada, asegurando que los registros generados estén en un formato Compatible con soluciones centralizadas de gestión de registros, asegurando las 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 las vulnerabilidades en un sistema, lo que permite el sondeo de vulnerabilidad puede resultar en 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 usar estas vulnerabilidades para comprometer un sistema, obtenerlo y aumentar los privilegios. El impacto de una aplicación web comprometida se puede visualizar desde credenciales de tarjetas de crédito robadas y robo de identidad hasta la fuga de información altamente confidencial, etc. dependiendo de las necesidades y los vectores de ataque de las entidades maliciosas.