Închide anunțul

Acum câteva zile, Apple a lansat al suta Actualizare iOS 7.0.6, despre a cărui eliberare v-am informat. Mulți au fost surprinși că actualizarea a fost lansată și pentru iOS 6 mai vechi (versiunea 6.1.6) și Apple TV (versiunea 6.0.2). Acesta este un patch de securitate, așa că Apple nu și-a putut permite să actualizeze doar o parte din dispozitivele sale. În plus, această problemă afectează și OS X. Potrivit purtătorului de cuvânt al Apple, Trudy Muller, o actualizare OS X va fi lansată cât mai curând posibil.

De ce există atât de mult hype în jurul acestei actualizări? O defecțiune în codul sistemului permite ocolirea verificării serverului la transmisia securizată la nivelul relațional al modelului de referință ISO/OSI. Mai exact, defecțiunea este o implementare SSL proastă în partea în care are loc verificarea certificatului de server. Înainte de a intra în explicații suplimentare, prefer să descriu conceptele de bază.

SSL (Secure Socket Layer) este un protocol folosit pentru comunicarea securizată. Se realizează securitatea prin criptarea și autentificarea părților care comunică. Autentificarea este verificarea identității prezentate. În viața reală, de exemplu, îți spui numele (identitatea) și arăți ID-ul pentru ca cealaltă persoană să-l verifice (se autentifică). Autentificarea este apoi împărțită în verificare, care este doar un exemplu cu o carte națională de identitate, sau identitate, atunci când persoana în cauză vă poate determina identitatea fără ca dumneavoastră să i-o prezentați în prealabil.

Acum aș ajunge pe scurt la certificatul serverului. În viața reală, certificatul dvs. ar putea fi, de exemplu, o carte de identitate. Totul se bazează pe criptografia asimetrică, unde fiecare subiect deține două chei - privată și publică. Întreaga frumusețe constă în faptul că mesajul poate fi criptat cu cheia publică și decriptat cu cheia privată. Aceasta înseamnă că numai proprietarul cheii private poate decripta mesajul. În același timp, nu este nevoie să vă faceți griji cu privire la transferul cheii secrete către ambele părți care comunică. Certificatul este apoi cheia publică a subiectului completată cu informațiile sale și semnat de autoritatea de certificare. În Republica Cehă, una dintre autoritățile de certificare este, de exemplu, Česká Pošta. Datorită certificatului, iPhone-ul poate verifica dacă comunică cu adevărat cu serverul dat.

SSL folosește criptarea asimetrică atunci când stabilește o conexiune, așa-numita SSL strângere de mână. În această etapă, iPhone-ul tău verifică că comunică cu serverul dat și, în același timp, cu ajutorul criptării asimetrice, se stabilește o cheie simetrică, care va fi folosită pentru toate comunicările ulterioare. Criptarea simetrică este mai rapidă. După cum a fost deja scris, eroarea apare deja în timpul verificării serverului. Să aruncăm o privire la codul care provoacă această vulnerabilitate a sistemului.

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;
}

In a doua conditie if puteți vedea două comenzi mai jos am eșuat;. Și aceasta este piatra de poticnire. Acest cod determină apoi executarea celei de-a doua comenzi în etapa în care trebuie verificat certificatul am eșuat;. Acest lucru face ca a treia condiție să fie omisă if și nu va exista deloc verificarea serverului.

Implicațiile sunt că oricine cunoaște această vulnerabilitate poate oferi iPhone-ului tău un certificat fals. Tu sau iPhone-ul tău, vei crede că comunici criptat, în timp ce există un atacator între tine și server. Un astfel de atac se numește atac om-la-mijloc, care se traduce aproximativ în cehă ca atacul omului la mijloc sau om printre. Un atac care utilizează acest defect special în OS X și iOS poate fi executat numai dacă atacatorul și victima se află în aceeași rețea. Prin urmare, este mai bine să evitați rețelele Wi-Fi publice dacă nu v-ați actualizat iOS. Utilizatorii de Mac ar trebui să fie atenți la ce rețele se conectează și la ce site-uri vizitează în acele rețele.

Este de necrezut cum o astfel de eroare fatală ar fi putut ajunge în versiunile finale de OS X și iOS. Ar fi putut fi testarea inconsecventă a codului scris prost. Acest lucru ar însemna că atât programatorul, cât și testerii ar face greșeli. Acest lucru poate părea puțin probabil pentru Apple și astfel ies la suprafață speculațiile că acest bug este de fapt o ușă din spate, așa-numita. ușa din spate. Nu degeaba se spune că cele mai bune uși din spate arată ca niște greșeli subtile. Totuși, acestea sunt doar teorii neconfirmate, așa că vom presupune că cineva a făcut pur și simplu o greșeală.

Dacă nu sunteți sigur dacă sistemul sau browserul dvs. este imun la acest bug, vizitați pagina gotofail.com. După cum puteți vedea în imaginile de mai jos, Safari 7.0.1 în OS X Mavericks 10.9.1 conține un bug, în timp ce în Safari în iOS 7.0.6 totul este în regulă.

Resurse: iMore, Reuters
.