¿Cuál es el principio del ataque de desbordamiento del búfer?

Categoría: Computadora/Red> & gtConocimiento de Computación

Análisis:

Si viertes un galón de agua en medio litro de agua, el agua fluirá por todas partes, entonces entenderás completamente lo que significa desbordamiento. De manera similar, en una computadora, si se almacenan demasiados datos en un espacio de memoria limitado, los datos desbordarán el espacio de la memoria. Los datos de entrada generalmente se almacenan en un espacio temporal llamado búfer, y la longitud del búfer ha sido predefinida por el programa o sistema.

¿Qué es un desbordamiento de buffer?

Un desbordamiento del búfer ocurre cuando un programa de computadora llena un búfer con más bits de datos de los que el propio búfer puede contener. Los datos desbordados se sobrescriben en los datos legales. Idealmente, el programa verificaría la longitud de los datos y no permitiría la entrada de una cadena que exceda la longitud del búfer. Sin embargo, la mayoría de los programas asumen que la longitud de los datos siempre coincide con el espacio de almacenamiento asignado, lo que deja un peligro oculto de desbordamiento del búfer. El búfer utilizado por el sistema también se denomina pila. Entre procesos, las instrucciones se almacenan temporalmente en la pila y la pila también puede desbordar los buffers.

Cuando ingresan datos demasiado largos al búfer, la parte sobrante se escribirá en otros búferes. Otros buffers pueden almacenar datos, punteros a la siguiente instrucción o resultados de otros programas, y estos se sobrescribirán o destruirán. Se puede ver que el desbordamiento de una pequeña parte de datos o un conjunto de instrucciones puede provocar que el programa o sistema falle.

La causa principal del desbordamiento radica en la programación

El desbordamiento del búfer es causado por errores de programación. Se produce un desbordamiento del búfer si el búfer está lleno y el programa no verifica los límites del búfer o deja de recibir datos. La verificación de los límites del búfer se considera una sobrecarga administrativa no rentable y los recursos informáticos o la memoria insuficientes son las razones por las que los programadores no escriben declaraciones de verificación de los límites del búfer. Sin embargo, la Ley de Moore ha eliminado esta lógica, pero la mayoría de los usuarios todavía ejecutan código de hace diez o incluso veinte años en sus aplicaciones principales.

Debido a la naturaleza de los programas de código abierto, los desbordamientos del búfer son muy comunes. Algunos lenguajes de programación son inmunes al desbordamiento del búfer. Por ejemplo, Perl puede ajustar automáticamente el tamaño de la matriz de bytes y Ada95 puede verificar y prevenir el desbordamiento del búfer. Sin embargo, el lenguaje C ampliamente utilizado no tiene un mecanismo de detección establecido. El estándar C tiene muchas funciones para copiar y agregar cadenas, lo que dificulta verificar los límites en el estándar C. C++ es ligeramente mejor, pero todavía hay desbordamientos del búfer. En términos generales, no tiene sentido sobrescribir datos en otras áreas de datos y, en el mejor de los casos, provocará errores en la aplicación. Pero si los datos de entrada son elaborados por un hacker o un virus, entonces los datos que sobrescriben el búfer son simplemente el código del hacker o del virus. Una vez que se compilan y ejecutan los bytes adicionales, un hacker o un virus pueden hacer lo que quieran y tomar el control del sistema.

El desbordamiento conduce a virus "hacker" rampantes.

El desbordamiento de búfer es el método de ataque preferido por los creadores de virus y troyanos. Los atacantes o virus son buenos para encontrar lugares en el sistema donde es probable que se produzcan desbordamientos del búfer, ejecutar programas especiales, obtener prioridad, ordenar a la computadora que destruya archivos, cambie datos, filtre información confidencial, cree puntos de acceso de puerta trasera e infecte o ataque a otros. computadoras.

En julio de 2000, se descubrió que Microsoft Outlook y Outlook Express tenían vulnerabilidades que permitían a los atacantes comprometer la seguridad del host objetivo simplemente enviando un correo electrónico. Siempre que se ejecuta el programa de encabezado de correo electrónico, puede provocar un desbordamiento del búfer y desencadenar código malicioso. En agosto de 2001, el "equipo rojo" aprovechó una vulnerabilidad en Microsoft IIS para crear un desbordamiento del búfer y se convirtió en el "culpable" de atacar redes corporativas. Desde junio de 5438 hasta octubre de 2003, el gusano Slammer aprovechó las vulnerabilidades de Microsoft SQL para provocar un desbordamiento del búfer y afectó a Internet global. Recientemente, un gusano llamado "Shockwave" aprovechó la vulnerabilidad del buffer de las llamadas remotas de Microsoft RPC para atacar Windows 2000/XP y Windows Server 2003, y se propagó a sistemas de redes globales. Según el equipo de seguridad del CERT, más del 50% de las vulnerabilidades de seguridad en los sistemas en funcionamiento son causadas por desbordamientos de memoria, la mayoría de las cuales están relacionadas con tecnologías de Microsoft. Cada vez más gusanos aprovechan estas vulnerabilidades de seguridad relacionadas con el desbordamiento de la memoria.

El desbordamiento del búfer es la razón principal por la que los virus "hacker" proliferan actualmente. Desde el equipo rojo hasta Slammer, pasando por la "onda de choque" que estalló en los últimos días, el uso de vulnerabilidades de desbordamiento de búfer es un ejemplo típico.

El desbordamiento del búfer es un problema de programación. La clave para prevenir ataques de desbordamiento del búfer es que los desarrolladores de programas verifiquen cuidadosamente si hay situaciones de desbordamiento al desarrollar programas y no permitan que los datos desborden el búfer. Además, los usuarios también deben iniciar sesión con frecuencia en los sitios web de los proveedores de sistemas y aplicaciones para realizar un seguimiento de las vulnerabilidades publicadas del sistema, descargar parches de manera oportuna y compensar las vulnerabilidades del sistema.