Este tipo de ataque se basa en que el software atacado recibe datos que no valida en su longitud y el lenguaje utilizado para la programación permite el manejo libre de la memoria (Caso del lenguaje C y C++).
Enviando mayor cantidad de datos que los esperados por el software, se puede llegar a escribir otra área de la memoria que está ocupada por otras variables u código y hacer que el programa deje de funcionar o ejecute un código inyectado por el atacante.
Supongamos que para el programa espera como entrada el nombre de una persona, y el programador reservó 250 caracteres para almacenar este dato. Si no valida la longitud, al mandar como entrada un string de mas de 250 caracteres, el excedente va a sobreescribir los datos de otras variables o hará que el programa deje de funcionar. (se interrumpa la ejecución o sea que se cuelgue)
El arte consiste en saber de antemano que es lo que hay luego del final del buffer para ver que cosas se pueden llegar a hacer.
Factores que mitigan este problema:
- El exploit funciona para una versión especifica del software.
- Se ejecuta con los privilegios del usuario que tenga el software atacado.
Contramedidas de los navegadores de internet
- Utilización de la memoria al azar. Esto hace el Internet explorer. Hace muy dificil predecir que se va a afectar con el overflow, ya que cada vez que se ejecuta, la memoria vecina es diferente.
- Bit de ejecución. Los procesadores marcan las páginas de memoria como segmentos "ejecutables" y "no ejecutables". Los datos van en páginas "no ejecutables" y ante un eventual buffer overflow, el código inyectado no podrá ejecutarse nunca.
- Sandbox. Esto hace el google chrome. El proceso esta contenido en un "arenero" donde todo proceso se ejecuta dentro del mismo y no puede salir fuera. De esta forma si se compromete el proceso de la página web, el daño solo puede hacerse sobre esa página y no se puede alterar el contenido del sistema de archivos, o robar datos del mismo.
En conclusión es un método muy complicado, pero una vez ubicado en alguna pieza clave del software y se libera un exploit en internet, es capaz de ejecutar cualquier cosa sobre la computadora de la víctima, como hacer que la misma descargue e instale un root-kit.
Ejemplo
Un caso famoso fue el de una vulnerabilidad en la librería que procesa imágenes. Como todo programa despliega imágenes, la librería se usa en todos lados por el sistema operativo y el navegador de internet.
El formato de archivo JPEG contiene, aparte de la imagen, datos en modo texto que se llaman "metadatos". Estos metadatos indican donde se tomó la foto, el nombre de la cámara utilizada, etc. El error consistía en que la librería no validaba la longitud de los metadatos.
El exploit permitía hacer una foto JPEG que al ser visualizada por casi cualquier programa de windows infectaba la PC. Estamos hablando de cualquier imagen que me llega en un email, o simplemente posteada en Facebook o un blog.
Estos bufferoverflows "de oro" no se ven todos los días, pero la capacidad de daño es muy grande.
(si te interesa saber mas de este, buscar en Google por la gdiplus.dll buffer overflow)
Igualmente problemas de seguridad surgen todos los días y el mundo sigue dando vueltas. Podes consultar el servicio de alertas de Microsoft:
******************************************************************** Microsoft Security Bulletin Summary for September 2012 Issued: September 11, 2012 ******************************************************************** This bulletin summary lists security bulletins released for September 2012. The full version of the Microsoft Security Bulletin Summary for September 2012 can be found at http://technet.microsoft.com/security/bulletin/ms12-sep.
No hay comentarios:
Publicar un comentario