Un desbordamiento de enteros y como no solucionarlo

En The blind leading the blind una historia interesante de un fallo de desbordamiento de enteros y los sucesivos pasos que se fueron dando para solucionarlo. Aunque los pasos no fueran correctos.

Interesante.

Anuncios

¿Los desarrolladores utilizan las ayudas en seguridad?

Lo vi en La verdadera ‘inseguridad’ de Windows y hacía referencia a un informe de Secunia, [PDF] DEP/ASLR Implementation Progress in. Popular. Third-party Windows Applications.

Se refiere a Data Execution Prevention (DEP) y Address space layout randomization (ASLR), que son ventajas que proporciona el sistema a la hora de evitar los problemas relacionados con una gestión inadecuada de la memoria.

La conclusión parece ser que pocas aplicaciones utilizan estos mecanismos y, por lo tanto, no aprovechan las ventajas que el sistema proporciona.

También se puede leer un poco más en DEP / ASLR Neglected in Popular Programs:

Secunia Research recently gathered information on the 50 most popular non-Microsoft applications installed on Windows users’ systems based on our PSI statistics. We then decided to take a closer look at 16 of them to determine if they properly supported DEP and ASLR.

Unfortunately, our research shows that most popular, non-Microsoft applications do not implement these features properly and, therefore, don’t offer users the expected protection.

Una historia de los desbordamientos de memoria

Una buena ‘historia’ de los desbordamientos de memoria y de cuándo empezaron realmente a explotarse y a aparecer problemas de este conocido fallo, cuyo conocimiento existía desde el año 1972, pero que hasta el 1988 no fue realmente explotado con el internet worm. En dos partes, Why buffer overflow exploitation took so long to mature y Why buffer overflow exploitation took so long to mature (part 2).

Un fallo con tantos años y que sigue dando que hablar de vez en cuando.

Continuación del desbordamiento de memoria

En Saltando un desbordamiento de memoria empezamos a hablar del tema. En Exploting (II): Stack Overflow Simple (I) y Exploting (II): Stack Overflow Simple (II) han ido más allá y muestran casos más complejos de explotación. Altamente didáctico e ilustrativo.

Saltando un desbordamiento de memoria

Es un ejercicio que hago todos los años (aunque los compiladores lo van poniendo más difícil) en clase. Por eso me resultó agradable verlo escrito negro sobre blanco (bueno, blanco sobre negro para ser más exactos) en Exploiting (I): Buffer Overflow != Stack Overflow.

Para demostrarlo, hemos desarrollado un pequeño código de ejemplo que presenta un Buffer Overflow que puede ser explotado para saltarse un “proceso de autenticación” (si alguien se trave a llamar así a lo que hemos programado) sin sobreescribir la pila, ni inyectar un shellcode, ni nada similar.

Creo que este tipo de ejemplos donde no hay magia, ni asuntos complicados y que pueden mostrarse en diez minutos ayudan mucho a concienciar a la gente de que los problemas existen y son reales.

Desbordamiento de enteros

Para variar, desarrollo seguro pero no-web: As-if Infinitely Ranged Integer Model (pdf) es un artículo que nos recuerda el problema del desbordamiento de enteros (que no siempre pensamos en él). Tiene una segunda sección interesante donde nos recuerda los diferentes métodos que existen para tratar de evitarlo y finalmente proponen el modelo que llaman ‘As-If Infinitely Ranged’ que proporciona un valor equivalente al que se obtendría si el rango de los enteros fuera infinito cuando sea posible, o una violación de límites.