10 |
Desbordamiento de búfer a través de variables de entorno
Este patrón de ataque consiste en provocar un desbordamiento de búfer mediante la manipulación de variables de entorno. Una vez que el adversario descubre que puede modificar una variable de entorno, puede intentar desbordar los búferes asociados. Este ataque aprovecha la confianza implícita que a menudo se deposita en las variables de entorno. [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo para realizar el desbordamiento del búfer. En este ataque, el adversario busca una aplicación que cargue el contenido de una variable de entorno en un búfer. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para entregar el contenido excesivo al búfer de la aplicación objetivo. [Elaborar el contenido de desbordamiento] El adversario elabora el contenido a inyectar. Si la intención es simplemente provocar la caída del software, el contenido sólo debe consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario diseña la carga útil de tal manera que la dirección de retorno sobrescrita es reemplazada por una de su elección. [Desbordamiento del búfer] Utilizando el vector de inyección, el adversario inyecta el contenido de desbordamiento creado en el búfer. |
Alto |
100 |
Desbordamiento de búferes
Los ataques de desbordamiento del búfer tienen como objetivo la comprobación inadecuada o la ausencia de límites en las operaciones del búfer, normalmente provocada por la entrada inyectada por un adversario. Como consecuencia, un adversario es capaz de escribir más allá de los límites de las regiones de búfer asignadas en la memoria, causando una caída del programa o potencialmente la redirección de la ejecución según la elección del adversario. [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo para realizar el desbordamiento del búfer. Los adversarios suelen buscar aplicaciones que acepten entradas del usuario y que realicen una gestión manual de la memoria. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para enviar el contenido excesivo al búfer de la aplicación objetivo. [El adversario elabora el contenido que se va a inyectar. Si la intención es simplemente provocar la caída del software, el contenido sólo debe consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario diseña la carga útil de tal manera que la dirección de retorno sobrescrita es reemplazada por una de su elección. [Desbordamiento del búfer] Utilizando el vector de inyección, el adversario inyecta el contenido de desbordamiento creado en el búfer. |
Muy alto |
14 |
Desbordamiento de búfer inducido por inyección en el lado del cliente
Este tipo de ataque explota una vulnerabilidad de desbordamiento de búfer en el software cliente objetivo a través de la inyección de contenido malicioso desde un servicio hostil construido a medida. Este servicio hostil se crea para entregar el contenido correcto al software cliente. Por ejemplo, si la aplicación del lado del cliente es un navegador, el servicio alojará una página web que el navegador carga. [Identificar la aplicación cliente objetivo] El adversario identifica una aplicación cliente objetivo para realizar el desbordamiento del búfer. Las más comunes son los navegadores. Si hay una vulnerabilidad conocida en el navegador, el adversario podría apuntar a ella. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para entregar el contenido excesivo al buffer de la aplicación objetivo. [Crear un servicio hostil] El adversario crea un servicio hostil que entregará el contenido a la aplicación del lado del cliente. Si la intención es simplemente hacer que el software se bloquee, el contenido sólo tiene que consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario diseña la carga útil de tal manera que la dirección de retorno sobrescrita es reemplazada por una de su elección. [Desbordamiento del búfer] Utilizando el vector de inyección, el adversario entrega el contenido a la aplicación del lado del cliente que utiliza el servicio hostil y desborda el búfer. |
Alto |
24 |
Fallo del filtro por desbordamiento del búfer
En este ataque, la idea es hacer fallar un filtro activo provocando una transacción sobredimensionada. Un atacante puede tratar de alimentar cadenas de entrada demasiado largas al programa en un intento de abrumar al filtro (causando un desbordamiento del búfer) y esperando que el filtro no falle de forma segura (es decir, la entrada del usuario se deja en el sistema sin filtrar). [Inspección] El atacante inspecciona la aplicación objetivo, posiblemente como un usuario válido y autenticado [Intentar inyecciones] Intenta introducir datos demasiado largos en el sistema. Esto se puede hacer manualmente o se puede utilizar una herramienta dinámica (caja negra) para automatizarlo. Un atacante también puede utilizar un script personalizado para este propósito. [Supervisar las respuestas] Vigilar cualquier indicación de que se produzcan fallos. Observe cuidadosamente para ver qué ocurrió cuando se produjo el fallo del filtro. ¿Llegaron los datos? [Abusar del sistema a través del fallo del filtro] Un atacante escribe un script para inducir sistemáticamente el fallo del filtro. |
Alto |
42 |
Conversión MIME
Un atacante aprovecha una debilidad en la rutina de conversión de MIME para provocar un desbordamiento del búfer y obtener el control de la máquina del servidor de correo. El sistema MIME está diseñado para permitir que varios formatos de información diferentes sean interpretados y enviados por correo electrónico. Existen puntos de ataque cuando los datos se convierten a un formato compatible con MIME y viceversa. [Identificar el servidor de correo objetivo] El adversario identifica un servidor de correo objetivo que desea atacar. [Determinar la viabilidad del ataque] Determinar si el servidor de correo no tiene parches y es potencialmente vulnerable a uno de los desbordamientos de búfer de conversión MIME conocidos (por ejemplo, Sendmail 8.8.3 y 8.8.4). [Encontrar el vector de inyección] Identificar los lugares del sistema donde se pueden utilizar las rutinas de conversión MIME vulnerables. [El adversario crea mensajes de correo electrónico con cabeceras especiales que causarán un desbordamiento del búfer para la rutina de conversión MIME vulnerable. La intención de este ataque es aprovechar el desbordamiento para la ejecución de código arbitrario y obtener acceso a la máquina del servidor de correo, por lo que el adversario elaborará un correo electrónico que no sólo desborda el búfer objetivo, sino que lo hace de tal manera que la dirección de retorno sobrescrita se sustituye por una de su elección. [Desbordar el búfer] Enviar mensajes de correo electrónico al sistema objetivo con cabeceras especialmente diseñadas que desencadenen el desbordamiento del búfer y ejecuten el código shell. |
Alto |
44 |
Archivo de recursos binarios de desbordamiento
Un ataque de este tipo explota una vulnerabilidad de desbordamiento de búfer en el manejo de recursos binarios. Los recursos binarios pueden incluir archivos de música como MP3, archivos de imagen como archivos JPEG, y cualquier otro archivo binario. Estos ataques pueden pasar desapercibidos a la máquina cliente a través del uso normal de los archivos, como un navegador que carga un archivo JPEG aparentemente inocente. Esto puede permitir al adversario acceder a la pila de ejecución y ejecutar código arbitrario en el proceso objetivo. [Identificar el software objetivo] El adversario identifica el software que utiliza archivos binarios externos de alguna manera. Esto podría ser una carga de archivos, la descarga de un archivo desde una ubicación compartida, u otros medios. [Encontrar el vector de inyección] El adversario crea un archivo binario malicioso alterando la cabecera para que el archivo parezca más corto de lo que es. Se añaden bytes adicionales al final del archivo para colocarlos en la ubicación desbordada. A continuación, el adversario despliega el archivo en el software para determinar si el desbordamiento del búfer fue exitoso. [Una vez que el adversario ha determinado que este ataque es viable, elaborará especialmente el archivo binario de forma que consiga el comportamiento deseado. Si el código fuente está disponible, el adversario puede elaborar cuidadosamente el archivo malicioso para que la dirección de retorno se sobrescriba con el valor deseado. Si el código fuente no está disponible, el adversario alterará iterativamente el archivo para sobrescribir la dirección de retorno correctamente. [Desbordamiento del búfer] Una vez que el adversario haya construido un archivo que desborde efectivamente el software objetivo de la forma prevista. El archivo se despliega en el software, ya sea sirviéndolo directamente al software o colocándolo en una ubicación compartida para que la víctima lo cargue en el software. |
Muy alto |
45 |
Desbordamiento del búfer mediante enlaces simbólicos
Este tipo de ataque aprovecha el uso de enlaces simbólicos para provocar desbordamientos de búfer. Un adversario puede intentar crear o manipular un archivo de enlace simbólico de manera que su contenido dé lugar a datos fuera de los límites. Cuando el software de destino procesa el archivo de enlace simbólico, podría desbordar los búferes internos con una comprobación de límites insuficiente. [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo que podría cargar ciertos archivos en la memoria. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para entregar el contenido excesivo al búfer de la aplicación objetivo. [Elaborar el contenido del archivo de desbordamiento] El adversario elabora el contenido que se va a inyectar. Si la intención es simplemente provocar la caída del software, el contenido sólo debe consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario diseña la carga útil de tal manera que la dirección de retorno sobrescrita es reemplazada por una de su elección. [Desbordamiento del búfer] Utilizando el contenido del archivo especialmente manipulado, el adversario crea un enlace simbólico desde el recurso identificado hasta el archivo malicioso, provocando un ataque de desbordamiento del búfer dirigido. |
Alto |
46 |
Variables y etiquetas de desbordamiento
Este tipo de ataque aprovecha el uso de etiquetas o variables de un dato de configuración formateado para provocar un desbordamiento del búfer. El adversario crea una página HTML maliciosa o un archivo de configuración que incluye cadenas sobredimensionadas, provocando así un desbordamiento. [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo para realizar el desbordamiento del búfer. Los adversarios buscan aplicaciones o programas que acepten como entrada archivos formateados, como archivos de configuración. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para enviar el contenido excesivo al búfer de la aplicación objetivo. [Elaborar el contenido de desbordamiento] El adversario elabora el contenido a inyectar. Si la intención es simplemente provocar la caída del software, el contenido sólo debe consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario diseña la carga útil de tal manera que la dirección de retorno sobrescrita es reemplazada por una de su elección. [Desbordamiento del búfer] El adversario cargará el archivo manipulado en la aplicación, provocando un desbordamiento del búfer. |
Alto |
47 |
Desbordamiento de búfer mediante expansión de parámetros
En este ataque, el software objetivo recibe una entrada que el adversario sabe que será modificada y ampliada en tamaño durante el procesamiento. Este ataque se basa en que el software objetivo no prevé que los datos expandidos puedan exceder algún límite interno, creando así un desbordamiento del búfer. [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo para realizar el desbordamiento del búfer. Los adversarios suelen buscar aplicaciones que acepten entradas del usuario y que realicen una gestión manual de la memoria. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para enviar el contenido excesivo al búfer de la aplicación objetivo. [El adversario elabora el contenido de desbordamiento que se dará al programa. Si la intención es simplemente hacer que el software se caiga, la entrada sólo necesita expandirse a una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario elaborará una entrada que se expanda de manera que no sólo desborde el búfer objetivo, sino que lo haga de tal manera que la dirección de retorno sobrescrita sea reemplazada por una de su elección que apunte a un código inyectado por el adversario. [Desbordar el búfer] Utilizando el vector de inyección, el adversario da la entrada crafteada al programa, desbordando el búfer. |
Alto |
67 |
String Format Overflow in syslog()
Este ataque se dirige a aplicaciones y software que utilizan la función syslog() de forma insegura. Si una aplicación no utiliza explícitamente un parámetro de cadena de formato en una llamada a syslog(), la entrada del usuario puede colocarse en el parámetro de cadena de formato, lo que lleva a un ataque de inyección de cadena de formato. Los adversarios pueden entonces inyectar comandos de cadena de formato maliciosos en la llamada a la función, provocando un desbordamiento del búfer. Hay muchas vulnerabilidades de software reportadas cuya causa principal es un mal uso de la función syslog(). [Identificar la aplicación objetivo] El adversario identifica una aplicación o programa objetivo para realizar el desbordamiento del búfer. En este ataque, los adversarios buscan aplicaciones que usen syslog() incorrectamente. [Encontrar el vector de inyección] El adversario identifica un vector de inyección para entregar el contenido excesivo al búfer de la aplicación objetivo. Para cada entrada controlable por el usuario que el adversario sospecha que es vulnerable a la inyección de cadenas de formato, intenta inyectar caracteres de formato como %n, %s, etc. El objetivo es manipular la creación de la cadena utilizando estos caracteres de formato. [El adversario elabora el contenido a inyectar. Si la intención es simplemente hacer que el software se caiga, el contenido sólo tiene que consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario elaborará un conjunto de contenido que no sólo desborda el búfer objetivo, sino que lo hace de tal manera que la dirección de retorno sobrescrita se sustituye por una de su elección que apunta al código inyectado por el adversario. [Desbordamiento del búfer] Utilizando el vector de inyección, el adversario suministra al programa la inyección de la cadena de formato crafteada, provocando un desbordamiento del búfer. |
Muy alto |
8 |
Desbordamiento de búfer en una llamada a la API
Este ataque se dirige a bibliotecas o módulos de código compartido que son vulnerables a los ataques de desbordamiento de búfer. Un adversario que tenga conocimiento de las bibliotecas o el código compartido vulnerables conocidos puede atacar fácilmente el software que hace uso de estas bibliotecas. Todos los clientes que hacen uso de la biblioteca de código se vuelven así vulnerables por asociación. Esto tiene un efecto muy amplio en la seguridad de un sistema, que suele afectar a más de un proceso de software. [Identificar la aplicación objetivo] El adversario, con conocimiento de las bibliotecas o módulos de código compartido vulnerables, identifica una aplicación o programa objetivo que hace uso de ellos. [Encontrar el vector de inyección] El adversario intenta utilizar la API y, si puede, envía una gran cantidad de datos para ver si el ataque de desbordamiento del búfer realmente funciona. [El adversario elabora el contenido a inyectar basándose en su conocimiento de la vulnerabilidad y el resultado deseado. Si la intención es simplemente hacer que el software se bloquee, el contenido sólo tiene que consistir en una cantidad excesiva de datos aleatorios. Si la intención es aprovechar el desbordamiento para la ejecución de código arbitrario, el adversario elaborará un conjunto de contenido que no sólo desborde el búfer objetivo, sino que lo haga de tal manera que la dirección de retorno sobrescrita sea reemplazada por una de su elección que apunte al código inyectado por el adversario. [Desbordamiento del búfer] Utilizando la API como vector de inyección, el adversario inyecta el contenido de desbordamiento elaborado en el búfer. |
Alto |
9 |
Desbordamiento del búfer en las utilidades locales de línea de comandos
Este ataque se dirige a las utilidades de línea de comandos disponibles en una serie de shells. Un adversario puede aprovechar una vulnerabilidad encontrada en una utilidad de línea de comandos para elevar los privilegios a root. [Identificar el sistema objetivo] El adversario primero encuentra un sistema objetivo en el que quiere obtener privilegios elevados. Puede tratarse de un sistema al que ya tiene algún nivel de acceso o de un sistema al que obtendrá acceso no autorizado con un privilegio inferior utilizando algún otro medio. [El adversario identifica las utilidades de línea de comandos expuestas por el host objetivo que contienen vulnerabilidades de desbordamiento de búfer. El adversario probablemente sabe qué utilidades tienen estas vulnerabilidades y cuáles son las versiones afectadas, por lo que también obtendrá los números de versión de estas utilidades. [Una vez que el adversario ha encontrado una utilidad vulnerable, utilizará su conocimiento de la vulnerabilidad para crear el comando que explotará el desbordamiento del búfer. [Desbordamiento del búfer] Utilizando el vector de inyección, el adversario ejecuta el comando creado, obteniendo privilegios elevados en la máquina. |
Alto |
92 |
Desbordamiento de enteros forzado
Este ataque obliga a una variable entera a salirse del rango. La variable entera se utiliza a menudo como un desplazamiento, como el tamaño de la asignación de memoria o similar. El atacante normalmente controlaría el valor de dicha variable e intentaría sacarla del rango. Por ejemplo, el entero en cuestión se incrementa más allá del valor máximo posible, puede envolverse para convertirse en un número muy pequeño, o negativo, por lo tanto proporcionando un valor muy incorrecto que puede conducir a un comportamiento inesperado. En el peor de los casos, el atacante puede ejecutar código arbitrario. El primer paso es exploratorio, es decir, el atacante busca una variable entera que pueda controlar. El atacante encuentra una variable entera en la que pueda escribir o manipular e intenta obtener el valor del entero fuera del rango posible. La variable entera es forzada a tener un valor fuera del rango que establece su valor final a un valor inesperado. El host objetivo actúa sobre los datos y puede ocurrir un comportamiento inesperado. |
Alto |