miércoles, 12 de mayo de 2010

Probando 0-day en Safari para Windows (memory corruption) (EDB-ID: 12573 )

Hace pocas horas ha sido publicado un 0-day en Safari para Windows, afectando a versiones inferiores a la 4.0.5. En este caso, yo he realizado un test del exploit con la versión 4.0.4.


Fig. 1: Mi versión de Safari para Windows (4.0.4).

El contenido del exploit hace referencia a explotación local y remota y esto es debido a que el bloqueador de Pop-Ups está deshabilitado por defecto para archivos locales, sin embargo, cuando navegamos por la red este bloqueador permance activo (de ahí que si tenemos el exploit en un Web Server, necesitemos deshabilitar este bloqueador).

Echando un rápido vistazo al exploit, básicamente se trata de un error en el manejo de la ventana padre, lo cual puede realizar una llamada a una función empleando un puntero inválido. El exploit lanza su shellcode, en este caso, calc.exe empleando la técnica Heap Spraying de SkyLined. En resumen, esta técnica (ya relativamente antigua) transforma un gran bloque de memoria inválida , en memoria válida, mediante la inserción de bloques de menor tamaño de nop+shellcode. En el supuesto de que la aplicación vulnerable caiga en esta sección inválida. Quizás éste sea el primer exploit de Skylined sobre el tema: aquí. Aunque al parecer ya se estaban empleando técnicas basadas en heap spray desde 2001.

Realmente realizando una búsqueda por la Web, encontramos referencias a este exploit desde el día 7 de Mayo.

Fuentes: aquí y aquí

Aquí dejo unas capturas del exploit en acción...


Fig. 2: Paso 1 en el exploit (prompt del alert)


Fig. 3: Paso 2 (Prompt con un buffer de 20000 A's)


Fig. 4: Paso 3 (Exploit ejecutado).

Por otra parte, revisando la información de crash, tenemos una vista de los registros según Dr. Watson for Windows:

eax=0d0d0d0d ebx=7e398a01 ecx=3cde8792 edx=1016f729 esi=7fdabea0 edi=7e398bf6
eip=47330003 esp=0012e898 ebp=7e3991c5 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206

Aquí dejo unos links al 0-day: exploit-db y securityfocus

En definitiva, un bonito exploit, que precisa de cierta interacción del usuario como la deshabilitación del bloqueador de pop-ups y el cierre de las ventanas empleando Alt+F4 (teniendo en cuenta que otros usuarios directamente hagan un asesinato del proceso de safari.exe y el exploit se rompa xD).

Los créditos de este exploit van para: Krystian Kloskowski

Solución actual: No hay parches por el momento.

Solución temporal: Deshabilitar JavaScript en Safari.

Be safe ;)