Aizvērt sludinājumu

Pirms dažām dienām Apple izlaida simto iOS 7.0.6 atjauninājums, par kura iznākšanu mēs jūs informējām. Iespējams, daudzi bija pārsteigti, ka atjauninājums tika izlaists arī vecākai iOS 6 (versija 6.1.6) un Apple TV (versija 6.0.2). Šis ir drošības ielāps, tāpēc Apple nevarēja atļauties atjaunināt tikai daļu savu ierīču. Turklāt šī problēma skar arī OS X. Pēc Apple pārstāves Trūdijas Mulleres teiktā, OS X atjauninājums tiks izlaists pēc iespējas ātrāk.

Kāpēc ap šo atjauninājumu ir tik daudz ažiotāžu? Sistēmas koda trūkums ļauj apiet servera verifikāciju drošas pārraides laikā ISO/OSI atsauces modeļa relāciju slānī. Konkrēti, vaina ir slikta SSL ieviešana daļā, kurā notiek servera sertifikāta pārbaude. Pirms iedziļināties sīkākos skaidrojumos, es gribētu aprakstīt pamatjēdzienus.

SSL (Secure Socket Layer) ir protokols, ko izmanto drošai saziņai. Tas nodrošina drošību, izmantojot saziņas pušu šifrēšanu un autentifikāciju. Autentifikācija ir uzrādītās identitātes pārbaude. Piemēram, reālajā dzīvē jūs sakāt savu vārdu (identitāti) un parādāt savu ID, lai otra persona varētu to pārbaudīt (autentificēt). Pēc tam autentifikācija tiek sadalīta pārbaudē, kas ir tikai piemērs ar valsts personas apliecību jeb identifikāciju, kad attiecīgā persona var noteikt jūsu identitāti, jums to viņam iepriekš neuzrādot.

Tagad es īsumā nonākšu pie servera sertifikāta. Reālajā dzīvē jūsu sertifikāts varētu būt, piemēram, ID karte. Visa pamatā ir asimetriskā kriptogrāfija, kur katram subjektam pieder divas atslēgas – privātā un publiskā. Viss skaistums slēpjas apstāklī, ka ziņojumu var šifrēt ar publisko atslēgu un atšifrēt ar privāto atslēgu. Tas nozīmē, ka ziņojumu var atšifrēt tikai privātās atslēgas īpašnieks. Tajā pašā laikā nav jāuztraucas par slepenās atslēgas nodošanu abām saziņas pusēm. Sertifikāts pēc tam ir subjekta publiskā atslēga, kas papildināta ar tās informāciju un ko parakstījusi sertifikācijas iestāde. Čehijā viena no sertifikācijas iestādēm ir, piemēram, Česká Pošta. Pateicoties sertifikātam, iPhone var pārbaudīt, vai tas patiešām sazinās ar doto serveri.

SSL savienojuma izveides laikā izmanto asimetrisku šifrēšanu, tā saukto SSL rokasspiediens. Šajā posmā jūsu iPhone pārbauda, ​​vai tas sazinās ar doto serveri, un tajā pašā laikā ar asimetriskas šifrēšanas palīdzību tiek izveidota simetriska atslēga, kas tiks izmantota visai turpmākajai saziņai. Simetriskā šifrēšana ir ātrāka. Kā jau rakstīts, kļūda rodas jau servera verifikācijas laikā. Apskatīsim kodu, kas izraisa šīs sistēmas ievainojamību.

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

Otrajā stāvoklī if zemāk var redzēt divas komandas goto fail;. Un tas ir klupšanas akmens. Šis kods pēc tam izraisa otrās komandas izpildi posmā, kad ir jāpārbauda sertifikāts goto fail;. Tas izraisa trešā nosacījuma izlaišanu if un servera verifikācijas vispār nebūs.

Tas nozīmē, ka ikviens, kam ir zināšanas par šo ievainojamību, var piedāvāt jūsu iPhone tālrunim viltotu sertifikātu. Jūs vai jūsu iPhone, jūs domājat, ka sazināties šifrēti, kamēr starp jums un serveri ir uzbrucējs. Tādu uzbrukumu sauc uzbrukums vīrietim vidū, kas aptuveni tulko čehu valodā kā uzbrukums vīrietim vidū vai vīrietis starp. Uzbrukumu, izmantojot šo konkrēto OS X un iOS trūkumu, var izpildīt tikai tad, ja uzbrucējs un upuris atrodas vienā tīklā. Tāpēc labāk izvairīties no publiskiem Wi-Fi tīkliem, ja neesat atjauninājis savu iOS. Mac lietotājiem joprojām ir jābūt uzmanīgiem attiecībā uz kuriem tīkliem viņi izveido savienojumu un kādas vietnes apmeklē šajos tīklos.

Nav neticami, kā tik liktenīga kļūda varēja iekļūt OS X un iOS galīgajās versijās. Tā varēja būt nekonsekventa slikti uzrakstīta koda pārbaude. Tas nozīmētu, ka kļūdas pieļautu gan programmētājs, gan testētāji. Apple tas var šķist maz ticams, un tāpēc parādās spekulācijas, ka šī kļūda patiesībā ir aizmugures durvis, tā sauktā. sētas durvis. Ne velti saka, ka labākās aizmugures durvis izskatās kā smalkas kļūdas. Taču tās ir tikai neapstiprinātas teorijas, tāpēc pieņemsim, ka kāds vienkārši ir kļūdījies.

Ja neesat pārliecināts, vai jūsu sistēma vai pārlūkprogramma ir imūna pret šo kļūdu, apmeklējiet lapu gotofail.com. Kā redzams zemāk esošajos attēlos, Safari 7.0.1 operētājsistēmā OS X Mavericks 10.9.1 satur kļūdu, savukārt Safari operētājsistēmā iOS 7.0.6 viss ir kārtībā.

Resursi: iMore, Reuters
.