lunes, 15 de marzo de 2010

Inyección de código arbitrario y desboradmiento de búfer

Seguro, que a todos los que somos aficionados a los boletines de seguridad de Hispasec o  las "frikadas" de Chema Alonso, nos suena eso de "Se ha descubierto una vulnerabilidad que permite la inyección de codigo arbitrario..."; o esa de "Vulnerabilidad que provoca un desboradmiento del búfer...".

Pues bien, ¿qué es eso?¿Qué es la inyección de código arbitrario y el desbordamiento de búfer?

Inyeccion de código arbitrario:
El código arbitrario es todo código que no puede ser interpretado por una aplicación o sistema operativo pero sí lo puede ser si esa aplicación o sistema operativo sufre un desbordamiento de búfer.
La pregunta obvia es: ¿Y qué demonios es un desbordamiento de búfer?. Veamos


Desbordaminento de búfer:
Un desbordamiento del búfer es un error de software que se produce cuando se copia una cantidad de datos sobre un área que no es lo suficientemente grande para contenerlos, sobrescribiendo de esta manera otras zonas de memoria. Esto se debe en general a un fallo de programación. La consecuencia de escribir en una zona de memoria imprevista puede resultar impredecible. Existen zonas de memoria protegidas por el sistema operativo. Si se produce la escritura fuera de una zona de memoria protegida se producirá una excepción del sistema de acceso a memoria seguido de la terminación del programa.

Bueno, pa que nos vayamos entendiendo, si se inyecta código arbitrario en un programa mediante algun tipo de acción; el programa ha de escribir el código en una zona que no es lo suficiente mente grande como para contenerlo, haciendo que se sobreescriban zonas de memoria reservadas para otras cosas. Esos, como todos sabemos, puede provocar errores impredecibles en todo el sistema.

En algunas ocasiones, el desbordamiento del búfer, puede suponer la posibilidad de alterar el flujo del programa pudiendo hacer que éste realice operaciones no previstas.Y he ahí el problema, si se manipula perspicazmente la aplicación, para que el código introducido provoque el desbordamiento, teniendo como consecuencia el acceso a zonas restingidas de la aplicación o a agujeros que dan paso al sistema, en el caso que el programa tenga privilegios especiales.

El código copiado especialmente preparado para obtener los privilegios del programa atacado se llama shellcode.

Pues ya conoceis los entresijos sobre lo que es el código arbitrario y el desbordamiento de búfer, en los enlaces que os he pueto viene más información sobre determinados nombres.

Para más información tenes este enlace de la wiki. Saludos curiosos.

No hay comentarios:

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...