Uždaryti skelbimą

Prieš kelias dienas „Apple“ išleido šimtąją iOS 7.0.6 naujinimas, apie kurio išleidimą jus informavome. Daugelis galėjo nustebti, kad naujinimas buvo išleistas ir senesnei iOS 6 (6.1.6 versija) ir Apple TV (6.0.2 versija). Tai yra saugos pataisa, todėl „Apple“ negalėjo sau leisti atnaujinti tik dalies savo įrenginių. Be to, ši problema taip pat turi įtakos OS X. Pasak Apple atstovės Trudy Muller, OS X naujinimas bus išleistas kuo greičiau.

Kodėl tiek daug triukšmo dėl šio atnaujinimo? Sistemos kodo trūkumas leidžia apeiti serverio patikrinimą saugiai perduodant ISO/OSI etaloninio modelio reliaciniame lygmenyje. Tiksliau, gedimas yra netinkamas SSL diegimas toje dalyje, kurioje atliekamas serverio sertifikato patikrinimas. Prieš pradėdamas tolesnius paaiškinimus, norėčiau apibūdinti pagrindines sąvokas.

SSL (Secure Socket Layer) yra protokolas, naudojamas saugiam ryšiui palaikyti. Jis užtikrina saugumą šifruodamas ir autentifikuodamas bendraujančias šalis. Autentifikavimas yra pateiktos tapatybės patikrinimas. Pavyzdžiui, realiame gyvenime pasakote savo vardą (tapatybę) ir parodote savo asmens tapatybės dokumentą, kad kitas asmuo galėtų jį patvirtinti (autentifikuoti). Tada autentifikavimas skirstomas į patikrinimą, kuris yra tik pavyzdys su nacionaline asmens tapatybės kortele, arba tapatybę, kai atitinkamas asmuo gali nustatyti jūsų tapatybę jums to jam iš anksto nepateikus.

Dabar trumpai pereičiau prie serverio sertifikato. Realiame gyvenime jūsų pažymėjimas gali būti, pavyzdžiui, asmens tapatybės kortelė. Viskas paremta asimetrine kriptografija, kur kiekvienas subjektas turi du raktus – privatų ir viešąjį. Visas grožis slypi tame, kad žinutę galima užšifruoti viešuoju raktu ir iššifruoti privačiu raktu. Tai reiškia, kad pranešimą gali iššifruoti tik privataus rakto savininkas. Tuo pačiu metu nereikia jaudintis dėl slaptojo rakto perdavimo abiem bendraujančioms šalims. Tada sertifikatas yra subjekto viešasis raktas, papildytas jo informacija ir pasirašytas sertifikavimo institucijos. Čekijoje viena iš sertifikavimo institucijų yra, pavyzdžiui, Česká Pošta. Sertifikato dėka iPhone gali patikrinti, ar tikrai palaiko ryšį su nurodytu serveriu.

SSL užmezgant ryšį naudoja asimetrinį šifravimą, vadinamąjį SSL rankos paspaudimas. Šiame etape jūsų iPhone patikrina, ar palaiko ryšį su nurodytu serveriu, ir tuo pačiu metu, naudojant asimetrinį šifravimą, sukuriamas simetriškas raktas, kuris bus naudojamas visam tolesniam ryšiui. Simetrinis šifravimas yra greitesnis. Kaip jau rašyta, klaida įvyksta jau serverio tikrinimo metu. Pažvelkime į kodą, kuris sukelia šios sistemos pažeidžiamumą.

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

Antroje sąlygoje if žemiau galite pamatyti dvi komandas goto fail;. Ir tai yra kliūtis. Tada šis kodas sukelia antrosios komandos vykdymą toje stadijoje, kai reikia patikrinti sertifikatą goto fail;. Dėl to trečioji sąlyga praleidžiama if ir serverio patvirtinimo iš viso nebus.

Tai reiškia, kad kiekvienas, žinantis apie šį pažeidžiamumą, gali pasiūlyti jūsų iPhone suklastotą sertifikatą. Jūs arba jūsų iPhone, manysite, kad bendraujate šifruotai, o tarp jūsų ir serverio yra užpuolikas. Toks išpuolis vadinamas žmogaus viduryje ataka, kuris apytiksliai išvertus į čekų kalbą kaip žmogaus viduryje ataka arba vyras tarp. Ataka naudojant šį konkretų OS X ir iOS trūkumą gali būti įvykdyta tik tuo atveju, jei užpuolikas ir auka yra tame pačiame tinkle. Todėl geriau vengti viešųjų „Wi-Fi“ tinklų, jei neatnaujinote „iOS“. „Mac“ naudotojai vis tiek turėtų būti atsargūs, prie kurių tinklų jungiasi ir kokiose tų tinklų svetainėse lankosi.

Neįtikėtina, kaip tokia lemtinga klaida galėjo patekti į galutines OS X ir iOS versijas. Tai galėjo būti nenuoseklus prastai parašyto kodo testavimas. Tai reikštų, kad klaidų darys ir programuotojas, ir testuotojai. „Apple“ tai gali atrodyti mažai tikėtina, todėl kyla spėlionių, kad ši klaida iš tikrųjų yra užpakalinės durys, vadinamosios. galinės durys. Ne veltui sakoma, kad geriausios užpakalinės durys atrodo kaip subtilios klaidos. Tačiau tai tik nepatvirtintos teorijos, todėl manysime, kad kažkas tiesiog suklydo.

Jei nesate tikri, ar jūsų sistema arba naršyklė yra apsaugota nuo šios klaidos, apsilankykite puslapyje gotofail.com. Kaip matote toliau pateiktuose vaizduose, OS X Mavericks 7.0.1 versijoje Safari 10.9.1 yra klaida, o iOS 7.0.6 versijos Safari viskas gerai.

Ištekliai: aš daugiau, "Reuters"
.