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.
Puolimas PER…. Jau seniai nebuvau taip gero, nuoširdaus juoko!
Kaip ten bebūtų - aš asmeniškai tai suprantu kaip žinutę iš APPLE visiems vartotojams - ar tai buvo vienaip ar kitaip (ir nemanau, kad daugiau nei paminėtos 2 šios klaidos atsiradimo galimybės yra realios), abu yra paprastas pasityčiojimas iš paprastų APPLE daiktų savininkų!
Ačiū Dievui, tu buvai teisus.
Tikėčiau, kad tai tikra klaida. Įsivaizduoju, kad jis buvo sukurtas sujungiant dvi šakas versijų kūrimo sistemoje, jei viena šaka buvo eilute ilgesnė. Šiaip ar taip, tai tik dar vienas atvejis, patvirtinantis, kad versti programuotojus bloke įrašyti net vieną eilutę, jei korpusas yra prasmingas.
Ačiū už išsamų aprašymą!
Atsiprašau, kad rašiau ne diskusijoje, bet dabar perskaičiau idnes, kad neva didesnis iPhone turėtų vadintis iPhablet :-D Vos nepamečiau.. :-D Sveikinimai visiems obuolių mylėtojams
….. Oho, kūrybiškumas pamažu nedingsta… gal tai tik antis!
Sveiki, ar po atnaujinimo kyla problemų dėl akumuliatoriaus veikimo laiko? Po daugybės skundų dėl iP5 gavau naują, todėl turiu naują bateriją, kuri atlaikė beveik dvi dienas. Po atnaujinimo mano telefonas numirė per 8 valandas ir aš juo nenaudoju daug.
Asmeniškai aš neužregistravau jokių problemų su žibintuvėliu. Anksčiau taip, atsarginė kopija ir švarus iOS įdiegimas iš naujo visada padėdavo. Tikimės, kad tai jums padės.
Aš tai padariau šiandien ir, deja, nepasikeitė :-/