Por accidente, hemos descubierto cómo provocar un DoS de explorer.exe en Windows 8. Se trata de un pequeño bug introducido en la última versión del sistema operativo. Lo documentamos como simple anécdota, puesto que desde Microsoft no lo han considerado un problema de seguridad y parece complejo que pueda ser aprovechado para explotarlo de alguna forma.
Explorer.exe es un servicio muy importante en Windows. Se encarga de pintar el escritorio y darle el token de seguridad a los programas que heredan de él, para que se mantengan en el mismo entorno. Es vital que se ejecute en el sistema en todo momento. Tanto, que si "muere" de alguna forma, el sistema operativo lo recupera automáticamente
Parece que en Windows 8, explorer.exe no maneja correctamente una excepción a la hora de manejar firmas digitales, y esto hace que se reinicie.
También afecta a otros programas que utilizan la misma API interna de procesamiento de estructuras ASN.1. Por ejemplo, cualquier programa en C# que intente procesar
signedInfo de una firma.
Para reproducir el problema, se debe:
- Tomar un binario (DLL o EXE) firmado. Cualquiera es válido.
- Rellenar parte de la estructura PKCS al final del fichero con datos aleatorios. Por ejemplo "00". Con unos 256 bytes funciona.

Zona de la firma modificada con cualquier editor hexadecimal
En este ejemplo, se ha "machacado" parte de la información relativa a la contrafirma, como se observa al estudiar la estructura ASN.1 con otro programa diferente. No hemos comprobado qué parte exactamente es necesario sobrescribir o qué mínimo es necesario para provocar el fallo.

A la izquierda la estructura ASN.1 alterada, a la derecha, la estructura sin alterar
Si se machaca otro tipo de información, Windows pensará simplemente que el fichero no está firmado y no mostrará la opción de "Firmas Digitales" en las propiedades.
- Desde Explorer, ver las propiedades y "Firmas Digitales" hará que explorer.exe no maneje la excepción y falle. Otros programas como Total Commander también se interrumpen. En realidad cualquier programa que no recoja la excepción de datos ASN.1 dañados, dejará de funcionar. Y aquí es donde explorer.exe hace un mal trabajo, y eso es de extrañar. Sobre todo, porque solo ocurre en Windows 8. La misma prueba de concepto en Windows XP o 7 hace que el sistema operativo muestre la pestaña de "Firmas Digitales" pero nada dentro. Una situación que no es normal, (si no hay firma, no debería mostrar la pestaña) pero al menos no hace que se reinicie el proceso.
Otros programas de comprobación de firma como sigcheck or signtool no se ven afectados.
Como hipótesis, es posible que tenga que ver con el cambio de "diseño". En windows 7 y XP, en la pestaña de firmas digitales se muestra el email del que firma. En Windows 8, el hash. Suponemos que se dieron cuenta de que pocos incluían el email en la firma, y por tanto ese campo solía estar vacío.

A la izquierda las propiedades de un fichero firmado en Windows 7. A la derecha, en Windows 8. Un pequeño análisis previo indica que parece complicado que se pueda aprovechar para ejecutar código. Desde MSRT nos indican que efectivamente, parece más un bug que un fallo de seguridad.
Sergio de los Santos