Zapri oglas

Pred nekaj dnevi je Apple izdal stoto Posodobitev za iOS 7.0.6, o izidu katerega smo vas obvestili. Marsikoga je morda presenetilo, da je bila posodobitev izdana tudi za starejši iOS 6 (različica 6.1.6) in Apple TV (različica 6.0.2). To je varnostni popravek, zato si Apple ni mogel privoščiti posodobitve le dela svojih naprav. Še več, ta težava vpliva tudi na OS X. Po besedah ​​Applove tiskovne predstavnice Trudy Muller bo posodobitev OS X izdana takoj, ko bo mogoče.

Zakaj je okoli te posodobitve toliko hrupa? Napaka v sistemski kodi omogoča izogibanje preverjanju strežnika pri varnem prenosu na relacijski ravni referenčnega modela ISO/OSI. Natančneje, napaka je slaba implementacija SSL v delu, kjer poteka preverjanje strežniškega certifikata. Preden se lotim nadaljnje razlage, bom raje opisal osnovne pojme.

SSL (Secure Socket Layer) je protokol, ki se uporablja za varno komunikacijo. Varnost dosega s šifriranjem in avtentikacijo komunicirajočih strani. Avtentikacija je preverjanje predstavljene identitete. V resničnem življenju na primer izgovorite svoje ime (identiteto) in pokažete svojo osebno izkaznico, da jo lahko druga oseba preveri (preveri pristnost). Avtentikacijo nato delimo na verifikacijo, ki je na primer z osebno izkaznico, ali identifikacijo, ko lahko zadevna oseba ugotovi vašo identiteto, ne da bi ji jo vnaprej predstavili.

Sedaj pa bi na kratko prišel do certifikata strežnika. V resničnem življenju je lahko vaše potrdilo na primer osebna izkaznica. Vse temelji na asimetrični kriptografiji, kjer ima vsak subjekt dva ključa - zasebnega in javnega. Vsa lepota je v tem, da je sporočilo mogoče šifrirati z javnim ključem in dešifrirati z zasebnim ključem. To pomeni, da lahko samo lastnik zasebnega ključa dešifrira sporočilo. Hkrati ni treba skrbeti za prenos tajnega ključa na obe komunicirajoči strani. Certifikat je nato subjektov javni ključ, dopolnjen s svojimi informacijami in podpisan s strani overitelja. Na Češkem je eden od certifikacijskih organov na primer Česká Pošta. Zahvaljujoč potrdilu lahko iPhone preveri, ali resnično komunicira z danim strežnikom.

SSL pri vzpostavljanju povezave uporablja asimetrično šifriranje, t.i SSL rokovanje. V tej fazi vaš iPhone preveri, ali komunicira z danim strežnikom, hkrati pa se s pomočjo asimetrične enkripcije vzpostavi simetrični ključ, ki se bo uporabljal za vso nadaljnjo komunikacijo. Simetrično šifriranje je hitrejše. Kot že napisano, se napaka pojavi že med preverjanjem strežnika. Oglejmo si kodo, ki povzroča to sistemsko ranljivost.

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

V drugem pogoju if spodaj lahko vidite dva ukaza goto fail;. In to je kamen spotike. Ta koda nato povzroči, da se drugi ukaz izvede na stopnji, ko je treba potrdilo preveriti goto fail;. To povzroči, da je tretji pogoj preskočen if in preverjanja strežnika sploh ne bo.

Posledice so, da lahko vsakdo, ki ve za to ranljivost, vašemu iPhonu ponudi lažno potrdilo. Ti oz vaš iPhone, boste mislili, da komunicirate šifrirano, medtem ko je med vami in strežnikom napadalec. Takšen napad se imenuje napad med človekom v sredini, kar v češčini približno pomeni napad človeka v sredini nebo človek med. Napad z uporabo te posebne napake v OS X in iOS je mogoče izvesti le, če sta napadalec in žrtev v istem omrežju. Zato se je bolje izogibati javnim omrežjem Wi-Fi, če niste posodobili svojega iOS-a. Uporabniki Maca bi morali še vedno paziti, na katera omrežja se povezujejo in katera spletna mesta obiščejo v teh omrežjih.

Neverjetno je, kako je lahko tako usodna napaka prišla v končne različice OS X in iOS. Lahko je šlo za nedosledno testiranje slabo napisane kode. To bi pomenilo, da bi tako programer kot preizkuševalci delali napake. Za Apple se to morda zdi malo verjetno, zato se pojavljajo ugibanja, da je ta hrošč pravzaprav stranska vrata, ti. Zadnja vrata. Ni zaman, da pravijo, da so najboljša zadnja vrata videti kot subtilne napake. Vendar so to le nepotrjene teorije, zato bomo predvidevali, da se je nekdo enostavno zmotil.

Če niste prepričani, ali je vaš sistem ali brskalnik imun na to napako, obiščite stran gotofail.com. Kot lahko vidite na spodnjih slikah, Safari 7.0.1 v OS X Mavericks 10.9.1 vsebuje napako, medtem ko je v Safariju v iOS 7.0.6 vse v redu.

Viri: iMore, Reuters
.