Ayer os hablábamos de un fallo de seguridad existente en iOS y Mac OS X, pero sin embargo no existían muchos más detalles. Hoy os podemos dar algunos detalles técnicos sobre el problema de seguridad que afecta a todos los dispositivos de la compañía de Cupertino y que expertos en seguridad han considerado como grave debido al tamaño que posee la compañía y la importancia que poseen los dispositivos en el día a día de los usuarios.
Expertos en seguridad describen este error como incomprensible, ya que un fallo en la programación de SecureTransport, la capa que se encarga de gestionar TLS/SSL, provocaba la invalidación de SSL en ambos sistemas operativos. Sin embargo, el mayor problema al que tiene que enfrentarse Apple es que el fallo de seguridad tiene su origen hace dos años, por lo que desde ese momento hasta el día de hoy, el cifrado web más utilizado en páginas web no tenía ningún uso en los sistemas operativos de Apple.
Y lo peor es que expertos en seguridad piensan que la línea de código maldita que permite la anulación del cifrado podría haber sido introducida a propósito, ya que se trata de un fallo bastante obvio como para no haber sido descubierto antes de estos dos años que han tenido que transcurrir para que se intente poner solución al problema.
Los dispositivos con iOS y Mac OS X están afectados sin excepción
A pesar de que existe una utilidad para comprobar si tu dispositivo está afectado, nosotros hemos realizado la prueba en un Macbook del año 2013 y el resultado de la presencia del fallo de seguridad ha sido positivo.
Los que tengan ciertas nociones de programación verán el fallo a simple vista en la siguiente captura de código de la implementación de SSL:
Tal y como está programado se realiza la comprobación de los diferentes valores que posee la verificación del cifrado SSL. El problema es que está programación solo garantiza la verificación del primer parámetro, es decir, si SSLHashSHA1.update toma un valor válido y err también, la verificación del cifrado siempre va a ser válida, independientemente de los demás valores, ya que estos nunca llegan a ser comprobados durante la ejecución del código.
El momento en el que este código falla en es el proceso de comprobación de la clave enviada por el servidor. Cuando el servidor envía una clave a un cliente este responde con su firma y un certificado para poder dar veracidad a la clave y saber así si esta proviene de donde supuestamente dice. Sin embargo con este fallo, se puede enviar una clave falsa a un cliente y el navegador o aplicación para iOS nunca daría error de firmado y se podría continuar con la operación.
Fuente | ElevenPaths