jueves, 28 de julio de 2011

Fallo de validación de certificados en iOS

Apple ha publicado en dos semanas otra nueva versión de iOS. En la primera corregía el fallo que permitía el jailbreak del dispositivo desde jailbreak.me, y en esta segunda actualización, un grave fallo de seguridad en la implementación de SSL conocido desde hace 9 años.

Las versiones 4.3.5 y 4.2.10 de iOS solucionan un fallo en el manejo de los certificados X.509 usados durante el cifrado SSL. Esto puede permitir que páginas que no son válidas pasen como tales, sin que el navegador avise de que existe algún error en la cadena de certificación. El problema ha sido descubierto por Gregor Kopf de Recurity Labs y Paul Kehrer de Trustwave's SpiderLabs.

Cuando un usuario se conecta a una página a través de https, el navegador recibe e intenta validar el certificado del servidor. Este certificado viene firmado por autoridades que lo acreditan para el dominio al que pertenecen. En esta cadena de validación, normalmente existen agentes intermediarios en los que se confía. El fallo que cometía Apple era no validar que estos emisores intermediarios pudiesen realmente emitir certificados. Técnicamente, se trata de comprobar el valor "Restricciones básicas" del certificado.

No se validaba que el emisor de certificados intermedios tuviese en realidad el poder de emitir certificados. Así, cualquiera con un certificado válido podía convertirse en emisor intermedio de cualquier otro certificado para dominios conocidos. Por ejemplo, cualquiera con un certificado emitido por Verisign podría a su vez crear un certificado para paypal.com, montar una página falsa en ese dominio y Safari lo daría como válido. O sea, el navegador comprobaría que la cadena es válida, pero no que ese intermediario no debería poder emitir y firmar certificados para otros. Se trata de una especie de "man in the middle" en la cadena de certificación. Para completar el escenario del engaño, el atacante debería además redirigir a la víctima a una página falsa alojada en otro punto.

Lo más grave es que esto no es nuevo. En 2002 se descubrió que Internet Explorer, Outlook y la mayoría de aplicaciones que usaban la cryptoAPI de Windows cometían el mismo error y ya fue subsanado entonces.

Los descubridores han creado una web para la ocasión. https://issl.recurity.com/. Si se visita sin que el navegador lance una advertencia (cosa que ocurrirá con todos los iOS no parcheados) es que se es vulnerable.



Se observa un certificado final que hace de intermediario. Cualquier navegador en cualquier sistema operativo debería dar el certificado como inválido... pero en iIOS vulnerables aparecerá como página perfectamente segura.


Sergio de los Santos
ssantos@hispasec.com
Twitter: @ssantosv


Más información:

About the security content of iOS 4.3.5 Software Update for iPhone
http://support.apple.com/kb/HT4824

No hay comentarios:

Publicar un comentario en la entrada