Mõni päev tagasi andis Apple välja sajanda iOS 7.0.6 värskendus, mille avaldamisest teavitasime teid. Paljud võisid olla üllatunud, et värskendus ilmus ka vanemale iOS 6-le (versioon 6.1.6) ja Apple TV-le (versioon 6.0.2). Tegemist on turvapaigaga, mistõttu Apple ei saanud endale lubada vaid osa oma seadmetest värskendamist. Veelgi enam, see probleem mõjutab ka operatsioonisüsteemi OS X. Apple'i pressiesindaja Trudy Mulleri sõnul antakse OS X-i värskendus välja niipea kui võimalik.
Miks on selle värskenduse ümber nii palju reklaami? Süsteemi koodi viga võimaldab ISO/OSI võrdlusmudeli relatsioonikihil turvalise edastuse korral serveri kontrollimisest mööda minna. Täpsemalt on viga halvas SSL-i juurutamises osas, kus toimub serveri sertifikaadi kontrollimine. Enne kui lähen edasi selgitustesse, eelistan kirjeldada põhimõisteid.
SSL (Secure Socket Layer) on turvaliseks suhtluseks kasutatav protokoll. See saavutab turvalisuse suhtlevate osapoolte krüptimise ja autentimise abil. Autentimine on esitatud identiteedi kontrollimine. Reaalses elus näiteks ütled oma nime (identiteedi) ja näitad oma isikut tõendavat dokumenti, et teine inimene saaks seda kontrollida (autentida). Autentimine jaguneb seejärel kontrollimiseks, mis on vaid näide riikliku isikutunnistusega ehk identifitseerimisest, kui kõnealune isik saab kindlaks teha teie isiku ilma, et te seda talle ette esitaksite.
Nüüd jõuaksin lühidalt serveri sertifikaadi juurde. Reaalses elus võib teie tunnistus olla näiteks ID-kaart. Kõik põhineb asümmeetrilisel krüptograafial, kus igal subjektil on kaks võtit – privaatne ja avalik. Kogu ilu seisneb selles, et sõnumit saab krüpteerida avaliku võtmega ja dekrüpteerida privaatvõtmega. See tähendab, et ainult privaatvõtme omanik saab sõnumi dekrüpteerida. Samal ajal ei pea muretsema salajase võtme edastamise pärast mõlemale suhtlevale poolele. Sertifikaat on siis subjekti avalik võti, millele on lisatud selle teave ja millele on alla kirjutanud sertifitseerimisasutus. Tšehhis on üheks sertifitseerimisasutuseks näiteks Česká Pošta. Tänu sertifikaadile saab iPhone kontrollida, kas see tõesti suhtleb antud serveriga.
SSL kasutab ühenduse loomisel asümmeetrilist krüptimist, nn SSL-käepigistus. Selles etapis kontrollib teie iPhone, et see suhtleb antud serveriga, ja samal ajal luuakse asümmeetrilise krüptimise abil sümmeetriline võti, mida kasutatakse kogu järgnevaks suhtluseks. Sümmeetriline krüptimine on kiirem. Nagu juba kirjutatud, ilmneb viga juba serveri kontrollimise ajal. Vaatame koodi, mis selle süsteemi haavatavuse põhjustab.
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;
}
Teises seisundis if allpool näete kahte käsku saama ebaõnnestuda;. Ja see on komistuskivi. Seejärel käivitab see kood teise käsu sertifikaadi kontrollimise etapis saama ebaõnnestuda;. See põhjustab kolmanda tingimuse vahelejätmise if ja serveri kinnitust ei toimu üldse.
See tähendab, et igaüks, kes on sellest haavatavusest teadlik, võib pakkuda teie iPhone'ile võltssertifikaati. Sina või oma iPhone'is, arvate, et suhtlete krüpteeritult, samas kui teie ja serveri vahel on ründaja. Sellist rünnakut nimetatakse mees-keskel-rünnak, mis tõlgib umbkaudu tšehhi keelde kui mees-keskrünnak või mees seas. Rünnak, mis kasutab seda konkreetset viga OS X-is ja iOS-is, saab sooritada ainult siis, kui ründaja ja ohver on samas võrgus. Seetõttu on parem vältida avalikke WiFi-võrke, kui te pole iOS-i värskendanud. Maci kasutajad peaksid siiski olema ettevaatlikud selle suhtes, milliste võrkudega nad ühenduse loovad ja milliseid saite nendes võrkudes külastavad.
On uskumatu, kuidas selline saatuslik viga võis jõuda OS X-i ja iOS-i lõppversioonidesse. See võis olla halvasti kirjutatud koodi ebajärjekindel testimine. See tähendaks, et nii programmeerija kui ka testijad teeksid vigu. See võib Apple'i jaoks tunduda ebatõenäoline ja nii levivad spekulatsioonid, et see viga on tegelikult tagauks, nn. tagauks. Ega asjata öeldakse, et parimad tagauksed näevad välja kui peened vead. Need on siiski vaid kinnitamata teooriad, seega eeldame, et keegi tegi lihtsalt vea.
Kui te pole kindel, kas teie süsteem või brauser on selle vea suhtes immuunne, külastage lehte gotofail.com. Nagu näete allolevatel piltidel, sisaldab Safari 7.0.1 operatsioonisüsteemis OS X Mavericks 10.9.1 viga, samas kui Safari versioonis iOS 7.0.6 on kõik korras.
Rünnak LÄBI…. Ma pole ammu nii head, südamlikku naeru saanud!
Olgu kuidas on - mina isiklikult mõistan seda kui APPLE'i sõnumit kõigile kasutajatele - olgu see nii või teisiti (ja ma ei usu, et rohkem kui mainitud 2 selle vea esinemise võimalust on reaalsed), mõlemad on lihtne APPLE asjade tavaliste omanike mõnitamine!
Jumal tänatud, et sul oli õigus.
Usun, et see on tõeline viga. Kujutan ette, et see loodi versioonisüsteemis kahe haru liitmisel, kui üks haru oli rea võrra pikem. Igatahes, see on järjekordne juhtum, mis kinnitab, et sundida programmeerijaid isegi üherealiseks sulgema, kui keha blokis on mõttekas.
Täname üksikasjaliku kirjelduse eest!
Vabandust, et kirjutasin väljaspool arutelu, aga nüüd lugesin idnesist, et väidetav suurem iPhone peaks kandma nime iPhablet :-D Ma oleksin sellest peaaegu ilma jäänud.. :-D Tervitused kõigile õunasõpradele
.. Vau, loovus ei kao vaikselt... võib-olla on see lihtsalt part!
Tere, kas teil on pärast värskendamist probleeme aku kasutusajaga? Pärast paljusid iP5-ga seotud kaebusi sain uue, nii et mul on uus aku, mis pidas vastu peaaegu kaks päeva. Pärast värskendust suri mu telefon 8 tunni jooksul välja ja ma ei kasuta seda eriti.
Mina isiklikult pole taskulambiga ühtegi probleemi registreerinud. Varem küll, ja iOS-i varundamine ja puhas uuesti installimine on alati aidanud. Loodetavasti aitab see teid.
Tegin seda täna ja kahjuks ei muutunud :-/