Anuncio cerrado

Hace unos días Apple lanzó el centésimo Actualización de iOS 7.0.6, sobre cuyo lanzamiento le informamos. Es posible que muchos se hayan sorprendido de que la actualización también se haya lanzado para iOS 6 (versión 6.1.6) y Apple TV (versión 6.0.2) anteriores. Se trata de un parche de seguridad, por lo que Apple no podía permitirse el lujo de actualizar sólo una parte de sus dispositivos. Además, este problema también afecta a OS X. Según la portavoz de Apple, Trudy Muller, se lanzará una actualización de OS X lo antes posible.

¿Por qué hay tanto revuelo en torno a esta actualización? Una falla en el código del sistema permite omitir la verificación del servidor en una transmisión segura en la capa relacional del modelo de referencia ISO/OSI. Específicamente, la falla es una mala implementación de SSL en la parte donde se realiza la verificación del certificado del servidor. Antes de entrar en más explicaciones, prefiero describir los conceptos básicos.

SSL (Secure Socket Layer) es un protocolo utilizado para la comunicación segura. Logra la seguridad mediante el cifrado y autenticación de las partes comunicantes. La autenticación es la verificación de la identidad presentada. En la vida real, por ejemplo, dices tu nombre (identidad) y muestras tu DNI para que la otra persona pueda verificarlo (autenticarse). La autenticación se divide luego en verificación, que es solo un ejemplo con el documento nacional de identidad, o identificación, cuando la persona en cuestión puede determinar tu identidad sin que tú se la presentes previamente.

Ahora llegaría brevemente al certificado del servidor. En la vida real, su certificado podría ser, por ejemplo, un documento de identidad. Todo se basa en criptografía asimétrica, donde cada sujeto posee dos claves: privada y pública. Toda la belleza radica en el hecho de que el mensaje se puede cifrar con la clave pública y descifrar con la clave privada. Esto significa que sólo el propietario de la clave privada puede descifrar el mensaje. Al mismo tiempo, no hay necesidad de preocuparse por transferir la clave secreta a ambas partes que se comunican. El certificado es entonces la clave pública del sujeto completada con su información y firmada por la autoridad de certificación. En la República Checa una de las autoridades certificadoras es, por ejemplo, Česká Pošta. Gracias al certificado, el iPhone puede verificar que realmente se está comunicando con el servidor determinado.

SSL utiliza cifrado asimétrico al establecer una conexión, el llamado Apretón de manos SSL. En esta etapa, su iPhone verifica que se está comunicando con el servidor determinado y, al mismo tiempo, con la ayuda del cifrado asimétrico, se establece una clave simétrica, que se utilizará para todas las comunicaciones posteriores. El cifrado simétrico es más rápido. Como ya está escrito, el error ya ocurre durante la verificación del servidor. Echemos un vistazo al código que causa esta vulnerabilidad del sistema.

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)

{
   OSStatus err;
   …

   if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
       goto fail;
   if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
       goto fail;
       goto fail;
   if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
       goto fail;
   …

fail:
   SSLFreeBuffer(&signedHashes);
   SSLFreeBuffer(&hashCtx);
   return err;
}

En la segunda condición if Puedes ver dos comandos a continuación. ir a fallar;. Y ese es el obstáculo. Este código luego hace que el segundo comando se ejecute en la etapa en la que se debe verificar el certificado. ir a fallar;. Esto hace que se omita la tercera condición. if y no habrá ninguna verificación del servidor.

Las implicaciones son que cualquier persona con conocimiento de esta vulnerabilidad puede ofrecerle a su iPhone un certificado falso. Tú o tu iPhone, pensarás que te estás comunicando encriptado, mientras que hay un atacante entre tú y el servidor. Tal ataque se llama ataque del hombre en el medio, que se traduce aproximadamente al checo como ataque de hombre en el medio nebo hombre entre. Un ataque que utilice este defecto particular en OS X e iOS sólo puede ejecutarse si el atacante y la víctima están en la misma red. Por tanto, es mejor evitar las redes Wi-Fi públicas si no has actualizado tu iOS. Los usuarios de Mac aún deben tener cuidado con las redes a las que se conectan y qué sitios visitan en esas redes.

Es increíble cómo un error tan fatal pudo haber llegado a las versiones finales de OS X e iOS. Podría haber sido una prueba inconsistente de un código mal escrito. Esto significaría que tanto el programador como los evaluadores cometerían errores. Esto puede parecer poco probable para Apple, por lo que surgen especulaciones de que este error es en realidad una puerta trasera, la llamada. puerta trasera. No en vano dicen que las mejores puertas traseras parecen errores sutiles. Sin embargo, estas son sólo teorías no confirmadas, por lo que asumiremos que alguien simplemente cometió un error.

Si no está seguro de si su sistema o navegador es inmune a este error, visite la página gotofail.com. Como puedes ver en las imágenes a continuación, Safari 7.0.1 en OS X Mavericks 10.9.1 contiene un error, mientras que en Safari en iOS 7.0.6 todo está bien.

Recursos: iMore, Reuters
.