Mbyll reklamën

Pak ditë më parë, Apple publikoi të qindtën Përditësimi i iOS 7.0.6, për publikimin e të cilit ju kemi njoftuar. Shumë mund të jenë habitur që përditësimi është lëshuar edhe për iOS 6 të vjetër (versioni 6.1.6) dhe Apple TV (versioni 6.0.2). Ky është një patch sigurie, kështu që Apple nuk mund të përballonte të përditësonte vetëm një pjesë të pajisjeve të saj. Për më tepër, ky problem prek edhe OS X. Sipas zëdhënësit të Apple, Trudy Muller, një përditësim i OS X do të dalë sa më shpejt të jetë e mundur.

Pse ka kaq shumë zhurmë rreth këtij përditësimi? Një defekt në kodin e sistemit lejon që verifikimi i serverit të anashkalohet në transmetimin e sigurt në shtresën relacionale të modelit të referencës ISO/OSI. Konkretisht, faji është një zbatim i keq SSL në pjesën ku kryhet verifikimi i certifikatës së serverit. Para se të kaloj në shpjegime të mëtejshme, preferoj të përshkruaj konceptet bazë.

SSL (Secure Socket Layer) është një protokoll që përdoret për komunikim të sigurt. Ai arrin sigurinë me anë të kriptimit dhe vërtetimit të palëve që komunikojnë. Autentifikimi është verifikimi i identitetit të paraqitur. Në jetën reale, për shembull, ju thoni emrin tuaj (identitetin) dhe tregoni ID-në tuaj në mënyrë që personi tjetër ta verifikojë atë (autentikojë). Autentifikimi më pas ndahet në verifikim, që është vetëm një shembull me kartë identiteti kombëtar, ose identifikim, kur personi në fjalë mund të përcaktojë identitetin tuaj pa ia paraqitur paraprakisht.

Tani do të shkoj shkurtimisht te certifikata e serverit. Në jetën reale, certifikata juaj mund të jetë, për shembull, një kartë identiteti. Gjithçka bazohet në kriptografinë asimetrike, ku çdo subjekt zotëron dy çelësa - privat dhe publik. E gjithë bukuria qëndron në faktin se mesazhi mund të kodohet me çelësin publik dhe të deshifrohet me çelësin privat. Kjo do të thotë se vetëm pronari i çelësit privat mund të deshifrojë mesazhin. Në të njëjtën kohë, nuk ka nevojë të shqetësoheni për transferimin e çelësit sekret tek të dy palët që komunikojnë. Certifikata është më pas çelësi publik i subjektit i plotësuar me informacionin e tij dhe i nënshkruar nga autoriteti certifikues. Në Republikën Çeke, një nga autoritetet e certifikimit është, për shembull, Česká Pošta. Falë certifikatës, iPhone mund të verifikojë që vërtet po komunikon me serverin e dhënë.

SSL përdor kriptim asimetrik kur krijon një lidhje, të ashtuquajturat Shtrëngim duarsh SSL. Në këtë fazë, iPhone juaj verifikon që është duke komunikuar me serverin e caktuar dhe në të njëjtën kohë, me ndihmën e enkriptimit asimetrik, vendoset një çelës simetrik, i cili do të përdoret për të gjithë komunikimin e mëpasshëm. Kriptimi simetrik është më i shpejtë. Siç është shkruar tashmë, gabimi ndodh tashmë gjatë verifikimit të serverit. Le të hedhim një vështrim në kodin që shkakton këtë dobësi të sistemit.

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

Në gjendjen e dytë if ju mund të shihni dy komanda më poshtë duhet të dështoj;. Dhe kjo është pengesa. Ky kod më pas bën që komanda e dytë të ekzekutohet në fazën kur certifikata duhet të verifikohet duhet të dështoj;. Kjo bën që kushti i tretë të anashkalohet if dhe nuk do të ketë fare verifikim të serverit.

Implikimet janë se kushdo që ka njohuri për këtë dobësi mund t'i ofrojë iPhone tuaj një certifikatë false. Ju ose iPhone tuaj, do të mendoni se po komunikoni të koduar, ndërkohë që ka një sulmues mes jush dhe serverit. Një sulm i tillë quhet sulm njeri në mes, që përafërsisht përkthehet në çekisht si sulm njeri në mes ose njeri në mesin e. Një sulm që përdor këtë të metë të veçantë në OS X dhe iOS mund të ekzekutohet vetëm nëse sulmuesi dhe viktima janë në të njëjtin rrjet. Prandaj, është më mirë të shmangni rrjetet publike Wi-Fi nëse nuk e keni përditësuar iOS-in tuaj. Përdoruesit e Mac duhet të jenë ende të kujdesshëm se me cilat rrjete lidhen dhe cilat faqe vizitojnë në ato rrjete.

Është përtej besimit se si një gabim i tillë fatal mund të ketë hyrë në versionet përfundimtare të OS X dhe iOS. Mund të kishte qenë testim jokonsistent i kodit të shkruar keq. Kjo do të thotë se si programuesi ashtu edhe testuesit do të bëjnë gabime. Kjo mund të duket e pamundur për Apple, dhe kështu dalin spekulimet se ky gabim është në të vërtetë një derë e pasme, e ashtuquajtura. dera e pasme. Jo më kot thonë se prapaskenat më të mira duken si gabime delikate. Megjithatë, këto janë vetëm teori të pakonfirmuara, kështu që ne do të supozojmë se dikush thjesht ka bërë një gabim.

Nëse nuk jeni të sigurt nëse sistemi ose shfletuesi juaj është imun ndaj këtij gabimi, vizitoni faqen gotofail.com. Siç mund ta shihni në imazhet më poshtë, Safari 7.0.1 në OS X Mavericks 10.9.1 përmban një gabim, ndërsa në Safari në iOS 7.0.6 gjithçka është në rregull.

Burimet: unë më shumë, Reuters
.