Tanca l'anunci

Fa uns dies, Apple va llançar la centèsima Actualització d'iOS 7.0.6, sobre el llançament del qual us vam informar. Molts poden haver-se sorprès que l'actualització també es va publicar per a iOS 6 (versió 6.1.6) i Apple TV (versió 6.0.2). Aquest és un pedaç de seguretat, de manera que Apple no es podia permetre actualitzar només una part dels seus dispositius. A més, aquest problema també afecta OS X. Segons la portaveu d'Apple, Trudy Muller, es publicarà una actualització d'OS X tan aviat com sigui possible.

Per què hi ha tanta expectació al voltant d'aquesta actualització? Una fallada en el codi del sistema permet evitar la verificació del servidor en la transmissió segura a la capa relacional del model de referència ISO/OSI. Concretament, l'error és una mala implementació SSL a la part on es realitza la verificació del certificat del servidor. Abans d'entrar en més explicacions, prefereixo descriure els conceptes bàsics.

SSL (Secure Socket Layer) és un protocol utilitzat per a la comunicació segura. Aconsegueix seguretat mitjançant el xifrat i l'autenticació de les parts que es comuniquen. L'autenticació és la verificació de la identitat presentada. A la vida real, per exemple, dius el teu nom (identitat) i mostres el teu DNI perquè l'altra persona el pugui verificar (autenticar-se). Aleshores, l'autenticació es divideix en verificació, que és només un exemple amb un document nacional d'identitat, o identificació, quan la persona en qüestió pot determinar la teva identitat sense que tu la presentis prèviament.

Ara arribaria breument al certificat del servidor. A la vida real, el vostre certificat podria ser, per exemple, una targeta d'identificació. Tot es basa en la criptografia asimètrica, on cada subjecte posseeix dues claus: privada i pública. Tota la bellesa rau en el fet que el missatge es pot xifrar amb la clau pública i desxifrar amb la clau privada. Això vol dir que només el propietari de la clau privada pot desxifrar el missatge. Al mateix temps, no cal preocupar-se de transferir la clau secreta a les dues parts que es comuniquen. Aleshores, el certificat és la clau pública del subjecte complementada amb la seva informació i signada per l'autoritat de certificació. A la República Txeca, una de les autoritats de certificació és, per exemple, Česká Pošta. Gràcies al certificat, l'iPhone pot verificar que realment s'està comunicant amb el servidor donat.

SSL utilitza xifratge asimètric quan s'estableix una connexió, l'anomenat Encaixada de mans SSL. En aquesta etapa, el vostre iPhone verifica que s'està comunicant amb el servidor donat i, al mateix temps, amb l'ajuda del xifratge asimètric, s'estableix una clau simètrica, que s'utilitzarà per a totes les comunicacions posteriors. El xifratge simètric és més ràpid. Com ja s'ha escrit, l'error ja es produeix durant la verificació del servidor. Fem una ullada al codi que causa aquesta vulnerabilitat 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 segona condició if podeu veure dues ordres a continuació vaig a fallar;. I aquest és l'escull. Aquest codi fa que la segona ordre s'executi en l'etapa en què s'ha de verificar el certificat vaig a fallar;. Això fa que es salti la tercera condició if i no hi haurà cap verificació del servidor.

Les implicacions són que qualsevol persona amb coneixement d'aquesta vulnerabilitat pot oferir al vostre iPhone un certificat fals. Tu o el vostre iPhone, pensareu que us esteu comunicant xifrat, mentre hi ha un atacant entre vosaltres i el servidor. Aquest atac es diu atac de l'home del mig, que aproximadament es tradueix al txec com atac de l'home del mig Nebo home entre. Un atac que utilitza aquest defecte en particular a OS X i iOS només es pot executar si l'atacant i la víctima es troben a la mateixa xarxa. Per tant, és millor evitar les xarxes Wi-Fi públiques si no heu actualitzat el vostre iOS. Els usuaris de Mac encara haurien de tenir cura de quines xarxes es connecten i quins llocs visiten en aquestes xarxes.

No es pot creure com un error tan fatal podria haver arribat a les versions finals d'OS X i iOS. Podria haver estat una prova inconsistent de codi mal escrit. Això significaria que tant el programador com els provadors cometrien errors. Això pot semblar poc probable per a Apple i, per tant, apareixen especulacions que aquest error és en realitat una porta del darrere, l'anomenada. porta del darrere. No és per res que diuen que les millors portes del darrere semblen errors subtils. Tanmateix, aquestes només són teories no confirmades, per la qual cosa suposarem que algú simplement s'ha equivocat.

Si no esteu segur de si el vostre sistema o navegador és immune a aquest error, visiteu la pàgina gotofail.com. Com podeu veure a les imatges següents, Safari 7.0.1 a OS X Mavericks 10.9.1 conté un error, mentre que a Safari a iOS 7.0.6 tot està bé.

Recursos: Jo més, Reuters
.