Egy új HTTP/2 DoS támadás az internet 70%-át megbéníthatja
A HTTP/2 protokoll újonnan felfedezett, „CONTINUATION Flood” elnevezésű sebezhetősége DoS-támadásokhoz (Denial of Service) vezethet, amely egyes implementációk esetében egyetlen TCP-kapcsolattal képesek leállítani a webszervereket.
A HTTP/2 a 2015-ben szabványosított HTTP protokoll frissítése. A célja a webes teljesítmény javítása a bevezetett bináris keretezéssel a hatékony adatátvitel érdekében. Ez a multiplexelésen keresztül lehetővé teszi a többszörös kéréseket és válaszokat egyetlen kapcsolaton keresztül. Egyúttal a header tömörítésével a többletköltségek csökkentését is lehetővé teszi.
Az új CONTINUATION Flood sebezhetőségeket Barket Nowotarski kiberbiztonsági elemző fedezte fel. Elmagyarázta, hogy a HTTP/2 CONTINUATION keretek használatával kapcsolatosak, ezek a sebezhetőségek, amelyek a protokoll számos implementációjában nincsenek megfelelően korlátozva vagy ellenőrizve.
A HTTP/2 üzenetek blokkokba rendezett header- és tréler részeket tartalmaznak. Ezek a blokkok az átvitelhez több keretre is feldarabolhatók, a CONTINUATION-keretek pedig a stream összefűzésére szolgálnak.
A megfelelő keretellenőrzés elhagyása számos implementációban lehetővé teszi a támadók számára, hogy rendkívül hosszú keretsorozatokat küldjenek, ha egyszerűen nem állítják be az „END_HEADERS” flag-et. Ez a memóriaszivárgáshoz vagy a CPU-erőforrások kimerülése miatt szerverleálláshoz vezet, míg ezeket a kereteket feldolgozzák.
Az elemző figyelmeztetett, hogy a memóriaszivárgás egyes implementációkban egyetlen HTTP/2 TCP-kapcsolat használatával szerverösszeomlásokhoz vezethet.
„Az Out of Memory talán a legunalmasabb, mégis legsúlyosabb esetek közé tartozik. Semmi különös nincs benne: nincs furcsa logika, nincs érdekes feltétel.” – magyarázza Nowotarski. „Az OOM-ot lehetővé tevő implementációk egyszerűen nem korlátozták a CONTINUATION keretek segítségével felépített headerlista méretét.”
A CERT koordinációs központ (CERT-CC) közzétett figyelmeztetése több CVE-azonosítót is felsorol. Ezek különböző HTTP/2 implementációknak felelnek meg, amelyek sebezhetőek ezekkel a támadásokkal szemben.
Ezek az implementációk különböző szintű Denial of Service támadásokat tesznek lehetővé, beleértve a memóriaszivárgást, memóriaelfogyást és a CPU kimerülését, az alábbiakban leírtak szerint:
Súlyos hatás van ennek a sebezhetőségnek
A CERT-CC szerint eddig a következő programozási nyelvek és HTTP/2 könyvtárak alkalmazói erősítették meg, hogy érintettek a fenti sebeshetőségek legalább egyikében: Red Hat, a SUSE Linux, az Arista Networks, az Apache HTTP Server Project, az nghttp2, a Node.js, az AMPHP és a Go.
Nowotarski szerint a probléma súlyosabb, mint a nagy felhőszolgáltatók által tavaly októberben felfedezett „HTTP/2 Rapid Reset” támadás.
„Tekintettel arra, hogy a Cloudflare Radar becslése szerint a HTTP forgalmi adatok az összes internetes átvitel 70%-át teszik ki, és az érintett projektek jelentősége miatt úgy vélem, feltételezhetjük, hogy az internet nagy részét érinti ez a sebezhetőség. Sok esetben egyetlen TCP-kapcsolat is elég volt a szerver összeomlásához.” – figyelmeztetett Nowotarski.
Az elemző arra is figyelmeztet, hogy a probléma debugálása és javítása a szerveradminisztrátorok számára megfelelő HTTP/2 ismeretek nélkül bonyolult lenne. Ez azért van, mert a rosszindulatú kérések nem lennének láthatóak a hozzáférési logokban, ha a fejlett keretelemzés nincs engedélyezve a kiszolgálón, ami a legtöbb esetben nincs.
Mivel a támadók általában figyelik az újonnan felfedezett DDoS-technikákat, amelyeket a támadásaikban is használhatnak, kritikus fontosságú az érintett kiszolgálók és könyvtárak frissítése, mielőtt a sebezhetőségeket aktívan kihasználnák ezek a rosszindulatú hackerek.