Pechar anuncio

Hai uns días, Apple lanzou a centésima Actualización de iOS 7.0.6, sobre o lanzamento do que vos informamos. Moitos se sorprenderon de que a actualización tamén se publicase para iOS 6 (versión 6.1.6) e Apple TV (versión 6.0.2) máis antigas. Este é un parche de seguridade, polo que Apple non podía permitirse o luxo de actualizar só unha parte dos seus dispositivos. Ademais, este problema tamén afecta a OS X. Segundo a portavoz de Apple, Trudy Muller, lanzarase unha actualización de OS X o antes posible.

Por que hai tanto bombo ao redor desta actualización? Unha falla no código do sistema permite evitar a verificación do servidor na transmisión segura na capa relacional do modelo de referencia ISO/OSI. En concreto, o fallo é unha mala implementación SSL na parte onde se realiza a verificación do certificado do servidor. Antes de entrar en máis explicacións, prefiro describir os conceptos básicos.

SSL (Secure Socket Layer) é un protocolo usado para a comunicación segura. Conséguese a seguridade mediante o cifrado e a autenticación das partes que se comunican. A autenticación é a verificación da identidade presentada. Na vida real, por exemplo, di o teu nome (identidade) e mostras o teu DNI para que a outra persoa poida verificalo (autenticar). A autenticación divídese entón en verificación, que é só un exemplo cun documento nacional de identidade, ou identificación, cando a persoa en cuestión pode determinar a súa identidade sen que lla presente con antelación.

Agora chegaría brevemente ao certificado do servidor. Na vida real, o teu certificado pode ser, por exemplo, unha tarxeta de identificación. Todo está baseado na criptografía asimétrica, onde cada suxeito posúe dúas claves: privada e pública. Toda a beleza reside no feito de que a mensaxe pode ser cifrada coa clave pública e descifrada coa clave privada. Isto significa que só o propietario da clave privada pode descifrar a mensaxe. Ao mesmo tempo, non hai que preocuparse por transferir a chave secreta ás dúas partes que se comunican. O certificado é entón a clave pública do suxeito complementada coa súa información e asinada pola autoridade de certificación. Na República Checa, unha das autoridades de certificación é, por exemplo, Česká Pošta. Grazas ao certificado, o iPhone pode verificar que realmente se está comunicando co servidor indicado.

SSL utiliza cifrado asimétrico ao establecer unha conexión, o chamado Apretón de mans SSL. Nesta fase, o teu iPhone verifica que se está comunicando co servidor determinado e, ao mesmo tempo, coa axuda do cifrado asimétrico, establécese unha clave simétrica, que se utilizará para todas as comunicacións posteriores. O cifrado simétrico é máis rápido. Como xa se escribiu, o erro xa ocorre durante a verificación do servidor. Vexamos o código que causa esta vulnerabilidade do 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;
}

Na segunda condición if podes ver dous comandos a continuación ir a fallar;. E ese é o escollo. Este código fai que se execute o segundo comando na fase na que se debe verificar o certificado ir a fallar;. Isto fai que se salte a terceira condición if e non haberá ningunha verificación do servidor.

As implicacións son que calquera que teña coñecemento desta vulnerabilidade pode ofrecer ao teu iPhone un certificado falso. Ti ou o teu iPhone, pensarás que te estás comunicando cifrado, mentres hai un atacante entre ti e o servidor. Un ataque así chámase ataque do home do medio, que se traduce aproximadamente ao checo como ataque do home do medio ou home entre. Un ataque que utilice esta falla particular en OS X e iOS só se pode executar se o atacante e a vítima están na mesma rede. Polo tanto, é mellor evitar as redes Wi-Fi públicas se non actualizou o teu iOS. Os usuarios de Mac aínda deben ter coidado coas redes ás que se conectan e os sitios que visitan nesas redes.

Non se pode crer como un erro tan fatal puido chegar ás versións finais de OS X e iOS. Podería ser unha proba inconsistente de código mal escrito. Isto significaría que tanto o programador como os probadores cometerían erros. Isto pode parecer pouco probable para Apple, polo que afloran as especulacións de que este erro é en realidade unha porta traseira, a chamada. porta traseira. Non por nada din que as mellores portas traseiras parecen erros sutís. Non obstante, estas son só teorías sen confirmar, polo que asumiremos que alguén simplemente cometeu un erro.

Se non estás seguro de se o teu sistema ou navegador é inmune a este erro, visita a páxina gotofail.com. Como podes ver nas imaxes de abaixo, Safari 7.0.1 en OS X Mavericks 10.9.1 contén un erro, mentres que en Safari en iOS 7.0.6 todo está ben.

Recursos: eu máis, Reuters
.