Tecnología

Inicio

Consecuencias de los desbordamientos de memoria

Consecuencias de los desbordamientos de memoria


Escritura de datos en memorias intermedias es una parte rutinaria del funcionamiento de cualquier programa, y ​​también una fuente importante de problemas potenciales. Cuando un programa intenta poner más datos en un buffer que su programador diseñado para sostener, el consiguiente desbordamiento de los datos pueden hacerlo otros datos del programa corruptos. Esto puede provocar errores del software, o potencialmente un medio para que los hackers secuestrar el programa y ejecutar código malicioso.

Los tampones y desbordamientos

Un buffer es una variable de matriz diseñada para almacenar datos para que el programa utilice en un momento posterior en su ejecución. Esta información podría ser un usuario introduce en el programa, el contenido de un archivo que el programa lee, o cualquier otra cosa que el programa puede que tenga que ejecutar. Los tampones se crean con un tamaño específico, que está reservada en la memoria de un ordenador para almacenar los datos del búfer. Los desbordamientos del búfer se producen cuando un programa escribe una cantidad de datos a un búfer que excede su tamaño real, haciendo que el programa para escribir los datos del pasado la ubicación de la memoria intermedia en la memoria del ordenador y en la memoria reservada para otros tampones o variables.

Los choques

Un programa se bloquea cuando se encuentra en la imposibilidad de ejecutar la tarea que se ha codificado para llevar a cabo en un punto determinado en el tiempo, y su creador no incluyó un mecanismo para la recuperación de un fallo de este tipo. Los desbordamientos del búfer pueden causar programas para bloquearse cuando el desbordamiento daña los datos de la variable que se almacena en una ranura de memoria en las inmediaciones. Por ejemplo, si un desbordamiento de un búfer de texto puede escribir caracteres de texto a través de los números almacenados en la ranura de memoria de una variable entera. Cuando el programa accede a los datos de esta variable para realizar un cálculo, que encuentra los caracteres de texto en lugar de los números. El programa no puede realizar cálculos matemáticos sobre los caracteres de texto, por lo que el programa iba a reaccionar por estrellarse.

Las vulnerabilidades de seguridad

En advertentm sobrecargas de amortiguamiento pueden causar que el programa falle, pero los hackers podrían forzar deliberadamente una sobrecarga del buffer para comprometer la función de un programa. Por ejemplo, la ranura de memoria de una memoria intermedia podría estar cerca de la ranura de memoria que contiene un comando en particular el programa se ejecuta. Un pirata puede descubrir el tamaño de la memoria intermedia, y la distancia a la ranura de la memoria del comando desde el final de la memoria intermedia. A continuación, podría obligar a un desbordamiento de búfer que sobre-escribir los datos entre la memoria intermedia y la ranura de la memoria del sistema, a continuación, sobre-escribe ranura de memoria del comando para reemplazar el comando con uno de su propio diseño. Cuando el programa llama a la ranura de memoria de ese comando y ejecuta su contenido, que sería la ejecución del código del hacker en lugar de la intención del programador.

La prevención de desbordamientos de búfer

Los programadores pueden prevenir desbordamientos de buffer mediante el establecimiento de mecanismos de seguridad para garantizar que el programa no intenta escribir más datos en una memoria intermedia de lo que lo diseñó para celebrar. Estos pueden incluir la comprobación del tamaño de los datos de los usuarios intentan poner en él, a través de la tipificación o la selección de un archivo de entrada, para asegurarse de que no excede el tamaño de la memoria intermedia. Los programadores también deben tratar de minimizar las oportunidades de las que los usuarios tienen que escribir los datos directamente en una memoria intermedia, ya que cada entrada que escribe directamente en una memoria intermedia es un vector potencial de un ataque de sobrecarga de buffer.