Muutama päivä sitten Apple julkaisi sadasosan iOS 7.0.6 päivitys, jonka julkaisusta ilmoitimme sinulle. Monet ovat saattaneet yllättyä, että päivitys julkaistiin myös vanhemmalle iOS 6:lle (versio 6.1.6) ja Apple TV:lle (versio 6.0.2). Tämä on tietoturvakorjaus, joten Applella ei ollut varaa päivittää vain osaa laitteistaan. Lisäksi tämä ongelma koskee myös OS X:ää. Applen tiedottajan Trudy Mullerin mukaan OS X -päivitys julkaistaan mahdollisimman pian.
Miksi tämän päivityksen ympärillä on niin paljon hypeä? Virhe järjestelmän koodissa mahdollistaa palvelimen vahvistuksen ohituksen suojatussa lähetyksessä ISO/OSI-viitemallin relaatiokerroksessa. Tarkemmin sanottuna vika on huono SSL-toteutus siinä osassa, jossa palvelimen varmenteen tarkistus tapahtuu. Ennen kuin aloitan lisäselvityksiä, kuvailen mieluummin peruskäsitteitä.
SSL (Secure Socket Layer) on suojattuun viestintään käytetty protokolla. Se saavuttaa turvallisuuden salaamalla ja todentamalla kommunikoivat osapuolet. Todennus on esitetyn henkilöllisyyden vahvistaminen. Tosielämässä esimerkiksi sanot nimesi (identiteettisi) ja näytät henkilöllisyytesi, jotta toinen henkilö voi vahvistaa sen (todennettu). Todennus jakautuu sitten varmentamiseen, joka on vain esimerkki kansallisella henkilökortilla eli tunnistamisesta, jolloin kyseinen henkilö voi määrittää henkilöllisyytesi ilman, että esität sitä hänelle etukäteen.
Nyt menisin lyhyesti palvelimen varmenteeseen. Tosielämässä todistuksesi voi olla esimerkiksi henkilökortti. Kaikki perustuu epäsymmetriseen kryptografiaan, jossa jokaisella subjektilla on kaksi avainta - yksityinen ja julkinen. Koko kauneus piilee siinä, että viesti voidaan salata julkisella avaimella ja purkaa salaus yksityisellä avaimella. Tämä tarkoittaa, että vain yksityisen avaimen omistaja voi purkaa viestin salauksen. Samalla ei tarvitse huolehtia salaisen avaimen siirtämisestä molemmille kommunikoiville osapuolille. Varmenne on tällöin kohteen julkinen avain, jota on täydennetty sen tiedoilla ja jonka varmentaja on allekirjoittanut. Tšekin tasavallassa yksi sertifiointiviranomaisista on esimerkiksi Česká Pošta. Sertifikaatin ansiosta iPhone voi varmistaa, että se todella kommunikoi tietyn palvelimen kanssa.
SSL käyttää epäsymmetristä salausta yhteyden muodostamisessa, ns SSL-kättely. Tässä vaiheessa iPhone varmistaa, että se kommunikoi tietyn palvelimen kanssa, ja samalla epäsymmetrisen salauksen avulla muodostetaan symmetrinen avain, jota käytetään kaikessa myöhemmässä viestinnässä. Symmetrinen salaus on nopeampi. Kuten jo kirjoitettu, virhe ilmenee jo palvelimen vahvistuksen aikana. Katsotaanpa koodia, joka aiheuttaa tämän järjestelmän haavoittuvuuden.
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;
}
Toisessa kunnossa if näet kaksi komentoa alla täytyy epäonnistua;. Ja se on kompastuskivi. Tämä koodi suorittaa sitten toisen komennon suorittamisen siinä vaiheessa, kun varmenne pitäisi tarkistaa täytyy epäonnistua;. Tämä aiheuttaa sen, että kolmas ehto ohitetaan if ja palvelimen vahvistusta ei tehdä ollenkaan.
Tästä seuraa, että kuka tahansa tämän haavoittuvuuden tietävä voi tarjota iPhonellesi väärennetyn varmenteen. Sinä tai iPhonellasi, luulet viestiväsi salattuna, vaikka sinun ja palvelimen välillä on hyökkääjä. Tällaista hyökkäystä kutsutaan ihmisen keskellä hyökkäys, joka on karkeasti käännetty tšekin kieleksi mies keskellä -hyökkäys Nebo mies joukossa. Hyökkäys, joka käyttää tätä erityistä puutetta OS X:ssä ja iOS:ssä, voidaan suorittaa vain, jos hyökkääjä ja uhri ovat samassa verkossa. Siksi on parempi välttää julkisia Wi-Fi-verkkoja, jos et ole päivittänyt iOS-laitettasi. Mac-käyttäjien tulee silti olla varovaisia sen suhteen, mihin verkkoihin he muodostavat yhteyden ja millä sivustoilla he vierailevat kyseisissä verkoissa.
On uskomatonta, kuinka tällainen kohtalokas virhe olisi voinut päästä OS X:n ja iOS:n lopullisiin versioihin. Se olisi voinut olla huonosti kirjoitetun koodin epäjohdonmukaista testausta. Tämä tarkoittaisi, että sekä ohjelmoija että testaajat tekisivät virheitä. Tämä saattaa tuntua Applen kannalta epätodennäköiseltä, joten spekulaatiot tulevat esiin, että tämä bugi on itse asiassa takaovi, ns. takaovi. Ei turhaan sanota, että parhaat takaovet näyttävät hienovaraisilta virheiltä. Nämä ovat kuitenkin vain vahvistamattomia teorioita, joten oletamme, että joku on yksinkertaisesti tehnyt virheen.
Jos et ole varma, onko järjestelmäsi tai selaimesi immuuni tälle virheelle, käy sivulla gotofail.com. Kuten alla olevista kuvista näkyy, OS X Mavericks 7.0.1:n Safari 10.9.1 sisältää virheen, kun taas iOS 7.0.6:n Safarissa kaikki on kunnossa.
Hyökkäys KAUPUN…. En ole pitkään aikaan nauranut näin hyvin, sydämellisesti!
Oli miten oli - ymmärrän sen henkilökohtaisesti APPLE:n viestinä kaikille käyttäjille - olipa se tavalla tai toisella (ja en usko, että enempää kuin mainitut 2 mahdollisuutta tämän virheen esiintymiselle ovat todellisia), molemmat ovat yksinkertaista pilkkaa tavallisille APPLE-asioiden omistajille!
Luojan kiitos olit oikeassa.
Uskoisin, että tämä on todellinen virhe. Voin kuvitella, että se luotiin yhdistämällä kaksi haaraa versiojärjestelmässä, jos yksi haara olisi riviä pidempi. Joka tapauksessa, tämä on vain yksi tapaus, joka vahvistaa, että ohjelmoijien pakottaminen sulkemaan jopa yksirivinen, jos runko lohkoon on järkevää.
Kiitos yksityiskohtaisesta kuvauksesta!
Anteeksi kun kirjoitin keskustelun ulkopuolelle, mutta nyt luin idnesistä, että väitetty isompi iPhone pitäisi olla nimeltään iPhablet :-D Melkein kadotin sen.. :-D Terveisiä kaikille omenan ystäville
….. Vau, luovuus ei katoa hitaasti… ehkä se on vain ankka!
Hei, onko sinulla akun kestoongelmia päivityksen jälkeen? Sain uuden useiden iP5-valitusten jälkeen, joten minulla on uusi akku, joka kesti melkein kaksi päivää. Päivityksen jälkeen puhelimeni kuoli 8 tunnin sisällä, enkä käytä sitä paljon.
Henkilökohtaisesti en ole rekisteröinyt taskulamppuongelmia. Kyllä ennenkin, ja iOS:n varmuuskopiointi ja puhdas uudelleenasennus on aina auttanut. Toivottavasti se auttaa sinua.
Tein sen tänään ja valitettavasti ei muutosta :-/