Stäng annons

För några dagar sedan släppte Apple den hundrade iOS 7.0.6 uppdatering, om utgivningen som vi informerade dig om. Många kan ha blivit förvånade över att uppdateringen även släpptes för äldre iOS 6 (version 6.1.6) och Apple TV (version 6.0.2). Detta är en säkerhetskorrigering, så Apple hade inte råd att uppdatera bara en del av sina enheter. Det här problemet påverkar dessutom OS X. Enligt Apples talesperson Trudy Muller kommer en OS X-uppdatering att släppas så snart som möjligt.

Varför är det så mycket hype kring den här uppdateringen? Ett fel i systemets kod gör att serververifiering kan kringgås vid säker överföring i det relationella lagret i ISO/OSI-referensmodellen. Specifikt är felet en dålig SSL-implementering i den del där servercertifikatverifiering äger rum. Innan jag går in på ytterligare förklaringar föredrar jag att beskriva de grundläggande begreppen.

SSL (Secure Socket Layer) är ett protokoll som används för säker kommunikation. Den uppnår säkerhet genom kryptering och autentisering av kommunicerande parter. Autentisering är verifieringen av den presenterade identiteten. I verkliga livet säger du till exempel ditt namn (identitet) och visar ditt ID så att den andra personen kan verifiera det (autenticera). Autentisering delas sedan upp i verifiering, som bara är ett exempel med nationellt identitetskort, eller legitimation, då personen i fråga kan fastställa din identitet utan att du uppvisar den för honom i förväg.

Nu skulle jag kort komma till servercertifikatet. I verkligheten kan ditt certifikat till exempel vara ett ID-kort. Allt bygger på asymmetrisk kryptografi, där varje ämne äger två nycklar – privata och offentliga. Hela skönheten ligger i det faktum att meddelandet kan krypteras med den offentliga nyckeln och dekrypteras med den privata nyckeln. Detta innebär att endast ägaren till den privata nyckeln kan dekryptera meddelandet. Samtidigt finns det ingen anledning att oroa sig för att överföra den hemliga nyckeln till båda kommunicerande parter. Certifikatet är sedan försökspersonens publika nyckel kompletterad med dess information och signerad av certifieringsmyndigheten. I Tjeckien är en av certifieringsmyndigheterna till exempel Česká Pošta. Tack vare certifikatet kan iPhone verifiera att den verkligen kommunicerar med den givna servern.

SSL använder asymmetrisk kryptering vid upprättande av en anslutning, den sk SSL-handslag. I detta skede verifierar din iPhone att den kommunicerar med den givna servern, och samtidigt, med hjälp av asymmetrisk kryptering, upprättas en symmetrisk nyckel, som kommer att användas för all efterföljande kommunikation. Symmetrisk kryptering är snabbare. Som redan skrivits uppstår felet redan under serververifieringen. Låt oss ta en titt på koden som orsakar denna systemsårbarhet.

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

I det andra tillståndet if du kan se två kommandon nedan måste misslyckas;. Och det är stötestenen. Denna kod gör att det andra kommandot körs i det skede då certifikatet ska verifieras måste misslyckas;. Detta gör att det tredje villkoret hoppas över if och det blir ingen serververifiering alls.

Konsekvenserna är att alla med kunskap om denna sårbarhet kan erbjuda din iPhone ett falskt certifikat. Du eller din iPhone kommer du att tro att du kommunicerar krypterat, medan det finns en angripare mellan dig och servern. En sådan attack kallas man-i-mitten attack, vilket ungefär översätts till tjeckiska som man-i-mitten attack Nebo man bland. En attack med denna speciella brist i OS X och iOS kan endast utföras om angriparen och offret är på samma nätverk. Därför är det bättre att undvika offentliga Wi-Fi-nätverk om du inte har uppdaterat din iOS. Mac-användare bör fortfarande vara försiktiga med vilka nätverk de ansluter till och vilka webbplatser de besöker i dessa nätverk.

Det är obegripligt hur ett sådant ödesdigert fel kunde ha gjort det i de slutliga versionerna av OS X och iOS. Det kan ha varit inkonsekvent testning av dåligt skriven kod. Detta skulle innebära att både programmeraren och testarna skulle göra misstag. Detta kan tyckas osannolikt för Apple, och därför dyker det upp spekulationer om att denna bugg faktiskt är en bakdörr, den så kallade. bakdörr. Det är inte för inte som de säger att de bästa bakdörrarna ser ut som subtila misstag. Detta är dock bara obekräftade teorier, så vi kommer att anta att någon helt enkelt gjort ett misstag.

Om du inte är säker på om ditt system eller din webbläsare är immun mot detta fel, besök sidan gotofail.com. Som du kan se på bilderna nedan innehåller Safari 7.0.1 i OS X Mavericks 10.9.1 en bugg, medan i Safari i iOS 7.0.6 är allt bra.

källor: iMore, Reuters
.