Kas ir Heartbleed ievainojamība?

Viena no vispazīstamākajām 2010. gadu vidus ievainojamībām tika saukta par “Heartbleed”. Heartbleed bija īpaši nopietna, jo tā ietekmēja programmatūru “OpenSSL”, kas ir galvenā HTTPS savienojumu kriptogrāfijas bibliotēka, kas tiek plaši izmantota. Vēl ļaunāk, ievainojamība OpenSSL bija jau vairāk nekā divus gadus iepriekš tas tika atklāts, publicēts un salabots, kas nozīmēja, ka daudzi cilvēki izmantoja neaizsargātu versija.

Heartbleed bija datu noplūdes ievainojamība sirdsdarbības paplašinājumā, kas, izmantojot to, nopludināja datus no RAM no servera uz klientu. Sirdsdarbības paplašinājums tiek izmantots, lai uzturētu savienojumu starp tīmekļa serveri un klientu, neveicot parastu lapas pieprasījumu.

OpenSSL gadījumā klients nosūta serverim ziņojumu un informē serveri par ziņojuma ilgumu, līdz 64KB. Pēc tam serverim ir jāatsauc tas pats ziņojums. Tomēr būtiski ir tas, ka serveris faktiski nepārbaudīja, vai ziņojums ir tik garš, cik klients to apgalvoja. Tas nozīmēja, ka klients varēja nosūtīt 10 KB ziņojumu, apgalvot, ka tas ir 64 KB, un saņemt 64 KB atbildi, turklāt papildu 54 KB veido nākamie 54 KB RAM neatkarīgi no tā, kādi dati tajā tika glabāti. Šo procesu labi vizualizē

XKCD komikss #1354.

Attēls pieklājīgi no xkcd.com.

Veicot daudz mazu sirdsdarbības pieprasījumu un apgalvojot, ka tie ir lieli, uzbrucējs varēja izveidot priekšstatu par lielāko daļu servera RAM, apkopojot atbildes. Dati, kas tiek glabāti RAM un var tikt nopludināti, ietver šifrēšanas atslēgas, HTTPS sertifikātus, kā arī nešifrētus POST datus, piemēram, lietotājvārdus un paroles.

Piezīme. Tas ir mazāk zināms, taču sirdsdarbības protokols un izmantošana darbojās arī otrā virzienā. Ļaunprātīgs serveris varēja būt konfigurēts tā, lai nolasītu līdz 64 KB lietotāja atmiņas katram sirdsdarbības pieprasījumam.

Šo problēmu atklāja vairāki drošības pētnieki neatkarīgi 2014. gada pirmajā aprīlī, un tā tika privāti atklāta OpenSSL, lai varētu izveidot ielāpu. Kļūda tika publiskota, kad ielāps tika izlaists 2014. gada septītajā aprīlī. Labākais risinājums problēmas risināšanai bija lietot ielāpu, taču problēmu bija iespējams arī novērst, atspējojot sirdsdarbības paplašinājumu, ja tūlītēja ielāpēšana nebija iespējama.

Diemžēl, neskatoties uz to, ka izmantošana ir publiska un plaši pazīstama, daudzas vietnes joprojām netika atjauninātas nekavējoties, un ievainojamība joprojām tiek dažkārt atrasta pat pēc gadiem. Tas noveda pie tā, ka vairāki ļaunprātīgas izmantošanas gadījumi tika izmantoti, lai piekļūtu kontiem vai nopludinātu datus.