Un simple "&" fuera de lugar causó el más reciente exploit de Internet Explorer : Tecnometro

jueves, 30 de julio de 2009

Un simple "&" fuera de lugar causó el más reciente exploit de Internet Explorer

Un agujero de seguridad en Internet Explorer que abre el navegador a los piratas informáticos revelado desde principios de julio fue causado por un único error en el código de Microsoft.

Un símbolo de unión ("&") andante tiene la culpa del exploit, Microsoft admitió en un blog publicado el martes en su sitio Web, Security Development Lifecycle (SDL).

Michael Howard, director de programas de seguridad en Microsoft, explica en su blog que el error corrompe el código de un control ActiveX utilizado por el navegador. El control fue creado por Microsoft con antiguas bibliotecas de código, que Howard ha admitido tienen defectos. Debido a esas fallas, el error causado a escribir el código de datos no es de confianza, exponiendo el navegador a los chicos malos.

Microsoft publicó un arreglo de emergencia para IE, para bloquear los intentos de aprovechar esta falla en los controles ActiveX.

Herramientas de desarrollo como el mismo Visual Studio de la propia Microsoft utiliza la misma
biblioteca de código, conocida como la Active Template Library (ATL). El mismo día se publicó el
parche de emergencia para IE, la empresa también publicó una revisión de Visual Studio.

Howard dijo que el error hubiera sido difícil de detectar en una revisión del código, y que ninguno de los métodos de análisis de código de Microsoft lo había descubierto.

En su blog, Howard hizo una especie de desafió a los lectores para encontrar el error en medio de unas pocas líneas de código, incluso insinuando que se trataba de un solo carácter.

Estas son las líneas de código listadas:

__int64 cbSize;
hr = pStream->Read((void*) &cbSize, sizeof(cbSize), NULL);
BYTE *pbArray;
HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast(&pbArray));
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);


Y su enigma para los lectores:

"Te doy una pista más - es un carácter tipográfico? Miren la última línea. El primer argumento es incorrecto. Deberia ser: hr = pStream->Read((void*)pbArray, (ULONG)cbSize, NULL);"

El agujero fue descubierto a principios de este mes por un par de investigadores alemanes. Thomas Dullien (también conocido como Halvar Flake), CEO de Zynamics GmbH, y su amigo Dennis Elser detallaron su descubrimiento en un blog. Después que el exploit se conoció, los dos buscaron en el código y consideraron que el carácter no deseado era "&".

Así que hará Microsoft para protegerse contra futuros errores tipográficos?

En su blog, Howard reconoció la necesidad de limpiar el proceso de codificación de la empresa. Dice que Microsoft actualizará las herramientas que utiliza para encontrar estos tipos de errores. La compañía también exige que sus programadores utilicen el más reciente ATL. En el pasado, Microsoft nunca le dijo a sus programadores que utilizar. Sin embargo, dice Howard en su blog, "Vamos a cambiar eso!"

No hay comentarios:

 
Copyright 2015 Tecnometro | tecnología, informática, Internet