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é.
Atacar a través de... Feia temps que no feia una rialla tan bona i de cor!
Sigui com sigui, personalment ho entenc com un missatge d'APPLE a tots els usuaris, tant si d'una manera com d'una altra (i no crec que més de les 2 possibilitats esmentades d'ocurrència d'aquest error siguin reals), tots dos són una simple burla dels propietaris corrents de coses d'APPLE!
Gràcies a Déu tenies raó.
Crec que això és un autèntic error. Puc imaginar que es va crear en combinar dues branques al sistema de versions, si una branca era una línia més llarga. De totes maneres, aquest és només un altre cas que confirma que obligar els programadors a tancar fins i tot una línia d'una si el cos en un bloc té sentit.
Gràcies per la descripció detallada!
Ho sento per escriure fora de la discussió, però ara he llegit a idnes que el suposat iPhone més gran s'hauria de dir iPhablet :-D Gairebé el vaig perdre. :-D Salutacions a tots els amants de la poma
….. Vaja, la creativitat no desapareix a poc a poc ….. potser només és un ànec!
Hola, tens problemes de durada de la bateria després de l'actualització? Vaig rebre una de nova després de moltes queixes sobre l'iP5, així que tinc una bateria nova que va durar gairebé dos dies. Després de l'actualització, el meu telèfon va morir en 8 hores i no l'utilitzo gaire.
Personalment, no he registrat cap problema amb la llanterna. Sí, però, en el passat, i una còpia de seguretat i una reinstal·lació neta d'iOS sempre ha ajudat. Tant de bo us ajudi.
Ho he fet avui i malauradament no hi ha canvis :-/