Tehnoloģijas

OpenSSL ‘HollowByte’ - klusā kļūda, kas draud ar servera avāriju!

okei.lv redakcija
Dalīties

Bīstamā “HollowByte” ievainojamība: kas tā ir un kā tā darbojas?

Iedomājieties, ka kāds mēģina “iegāzt” jūsu serveri, izmantojot tikai 11 baitu lielu “ļaunu” ziņu. Tieši šāds ir OpenSSL programmatūras ievainojamības “HollowByte” pamatprincips. Šī “paklusām” salabotā kļūda spēj izraisīt “pakalpojuma atteikuma” (Denial-of-Service jeb DoS) uzbrukumus, kas var paralizēt pat lielus serverus, pirms tie vispār paspēj nodibināt drošu savienojumu. Tas ir kā mēģināt atvērt durvis ar nepareizu atslēgu, kas ne tikai neiederas, bet arī salauž slēdzeni.

IT drošības eksperti no Okta atklāja, ka uzbrucēji var nosūtīt īpaši sagatavotas paketes, kuru izmērs ir niecīgi 11 baiti. Šīs paketes izmanto vājību OpenSSL programmatūras vecākajās versijās, kuras pirms drošības “rokasspiediena” (TLS Handshake) uzsākšanas paļaujas uz ienākošās “ClientHello” ziņas garuma deklarāciju. OpenSSL iedala atmiņas apgabalu atbilstoši šim garumam, pat ja paši dati vēl nav pienākuši. Ja šī garuma deklarācija ir viltota, OpenSSL bez pārbaudes iedala pārmērīgi lielu atmiņas apjomu - pat līdz 131 kilobaitiem katrai savienībai, kas nekad nenotiek.

Kāpēc “HollowByte” ir tik bīstams? Atmiņas fragmentācija un servera paralīze

Šis uzbrukums ir īpaši viltīgs, jo tas ne tikai izšķiež servera atmiņu, bet arī bloķē tā dzesēšanas pavedienus (worker threads), kas gaida nekad nepienākošus datus. Rezultātā serveris nonāk stāvoklī, kurā tas kļūst bezjēdzīgi noslogots un neatsaucīgs. Okta veiktie testi parādīja, ka pat pēc uzbrukuma beigām serveris neatgūstas automātiski. Tas ir tāpēc, ka operētājsistēmas atmiņas pārvaldība (piemēram, Glibc) neuzrāda mazākus un vidējus atmiņas apgabalus atpakaļ sistēmai uzreiz, bet patur tos vēlākai izmantošanai. Uzbrucēji, nosūtot pieprasījumus ar nejaušiem izmēriem, traucē šo atmiņas bloku atkārtotu izmantošanu, izraisot spēcīgu “heap” atmiņas fragmentāciju. Vienīgais veids, kā atgūt servera veiktspēju, ir tā procesa piespiedu izslēgšana un atkārtota palaišana.

Praktiskie testi ar Nginx serveri un 1 GB RAM parādīja, ka pēc 547 MB atmiņas fragmentācijas un “iesaldēšanas” radās “Out Of Memory” kļūda. Serveros ar 16 GB RAM līdzīgs stāvoklis iestājās pēc 25% sistēmas atmiņas patēriņa. Turklāt šis uzbrukums nepalielina maksimālo savienojumu skaitu, kas nozīmē, ka standarta DoS aizsardzības mehānismi, kas balstīti uz savienojumu ierobežojumiem, ir neefektīvi.

Klusais labojums: kāpēc bez CVE un kas notika tālāk?

OpenSSL uzturētāji šo problēmu atrisināja “klusībā” ar OpenSSL versiju 4.0.1 un veica atpakaļsaderīgas korekcijas arī versijām 3.6.3, 3.5.7, 3.4.6 un 3.0.21. Atšķirībā no daudzām citām drošības ievainojamībām, šai kļūdai netika piešķirts CVE (Common Vulnerabilities and Exposures) ieraksts, un tā tika apzīmēta kā “hardening fix” (stiprinošs labojums). Tas nozīmē, ka tā nav uzskatīta par kritisku, taču Okta eksperti uzsver tās potenciālo bīstamību un steidzamību.

Aicinājums rīkoties: atjauniniet OpenSSL bez kavēšanās!

Lai gan šis labojums netika izziņots ar lielu pompu, Okta speciālisti stingri iesaka OpenSSL lietotājiem nekavējoties atjaunināt savu programmatūru uz jaunāko pieejamo versiju. Ir svarīgi atcerēties, ka OpenSSL 4.0.1 un iepriekšējās atjauninātās versijas, kas tika izlaistas jūnija sākumā, jau saturēja labojumus vairākām citām nopietnām drošības ievainojamībām, tostarp tādām, kas ļāva attālināti ievietot ļaunprātīgu kodu. Tāpēc, ja jūs vēl neesat veikuši šos atjauninājumus, tagad ir īstais brīdis to izdarīt, lai nodrošinātu jūsu sistēmu maksimālu drošību.

Kādu lomu drošības atjauninājumi spēlē jūsu ikdienas IT pārvaldībā?

✎Kļūda rakstā?
Iezīmē tekstu un spied ziņot par kļūdu.

Seko okei.lv

Tehnoloģiju jaunumi latviski. Izvēlies sev ērto tīklu.

Līdzīgi raksti