HollowByte

Editors' Pick

Az Okta Red Team által felfedezett HollowByte egy DoS-t okozó OpenSSL-hiba, amelyet már 11 bájtos rosszindulatú TLS-kéréssel ki lehet használni. A sérülékenység oka, hogy a régebbi OpenSSL-verziók a TLS ClientHello üzenet fejlécében szereplő, támadó által megadott hosszmezőt megbízhatónak tekintik, és még a tényleges adatok beérkezése előtt lefoglalják a kért memóriát. Egyetlen kapcsolat akár 131 KB memória lefoglalását is kiválthatja, miközben a kiszolgáló a soha meg nem érkező adatokra várakozik. A támadás hitelesítés nélkül végrehajtható, és ismételt kapcsolatokkal jelentős memóriafoglalást, illetve worker szálak blokkolását okozhatja. A probléma súlyosságát növeli, hogy a glibc memóriakezelője a felszabadított memóriablokkokat nem adja vissza az operációs rendszernek, hanem újrafelhasználásra megtartja. A támadó eltérő méretű foglalásokkal fragmentálja a heapet, ezért a folyamat memóriahasználata a kapcsolatok lezárása után is tartósan magas marad, és csak a szolgáltatás újraindításával állítható helyre. Az Okta tesztjeiben egy 1 GB memóriájú NGINX-kiszolgáló 547 MB beragadt memória miatt összeomlott, míg egy 16 GB-os rendszeren a memória 25%-át sikerült tartósan lefoglalni anélkül, hogy a kapcsolatszám elérte volna a szokásos DoS-védelmi küszöböket.

A hibát az OpenSSL fejlesztői csendes javításként orvosolták a 3.0.21, 3.4.6, 3.5.7, 3.6.3 és 4.0.1 verziókban úgy, hogy a fogadó puffer méretét már fokozatosan, a ténylegesen beérkező adatokkal együtt növelik. Érdekesség, hogy a projekt nem adott ki CVE-azonosítót és biztonsági figyelmeztetést, mivel a módosítást hardening jellegű javításnak tekintette. Ez azonban megnehezíti a sérülékenység nyomon követését, különösen azoknál a Linux-disztribúcióknál, amelyek visszaportolják a javításokat anélkül, hogy az OpenSSL főverziója megváltozna. A HollowByte jól mutatja, hogy egy látszólag jelentéktelen implementációs hiba is komoly rendelkezésre állási kockázatot jelenthet az internet legelterjedtebb titkosítási könyvtárában, ezért az OpenSSL frissítése akkor is indokolt, ha a javítás nem szerepel hivatalos CVE-listán.

FORRÁS