Sebezhetőségek a Pingora projektben, amelyek lehetővé teszik harmadik fél kérésekbe való beavatkozást.

A Cloudflare bejelentette a Pingora keretrendszerében három sebezhetőség megszüntetését, amelyek közül kettő kritikus szintű veszélyességgel bír (9.3 a 10-ből). A Pingora keretrendszer Rust nyelven íródott, és biztonságos, nagy teljesítményű hálózati szolgáltatások fejlesztésére szolgál. A Pingora segítségével épített proxy a Cloudflare tartalomszolgáltató hálózatában található, és több mint 40 millió kérést kezel másodpercenként. A sebezhetőségeket a Pingora 0.8.0 verziójában orvosolták.

A két legveszélyesebb sebezhetőség lehetővé teszi az "HTTP Request Smuggling" támadások végrehajtását, amelyek megkerülhetik a hozzáférési korlátozó rendszereket, és begyűrhetik magukat más felhasználók által, ugyanabban a folyamatban kezelt kérések tartalmába (például káros JavaScript kód beillesztésével egy másik felhasználó webböngészési sessionjába). A problémákat a Bug Bounty program résztvevője fedezte fel, amely jutalmat biztosít a sebezhetőségek felfedezéséért.

A backendhez visszaáramló proxy által végzett kéréseknél egy kiegészítő csomópont fogadja a kliens kérelmeit, amely tartós TCP-kapcsolatot létesít a backenddel, amely ténylegesen kezeli a kéréseket. Ezen a közös kapcsolaton általában különböző felhasználók kéréseit továbbítják, amelyek egymás után következnek, elkülönítve az HTTP protokoll segítségével. Az HTTP Request Smuggling típusú támadások a HTTP fejlécek és a protokoll specifikációk eltérő értelmezéséből fakadnak a frontendek és backendek között, például amikor a frontend a kérés méretének meghatározására a "Content-Length" HTTP-üzenetet használja, míg a backend a "Transfer-Encoding: chunked"-ot.

Az első sebezhetőség, a CVE-2026-2835, az HTTP/1.0 kérések elemzésének kódjában található, és a "Transfer-Encoding" fejléc több értékének helytelen kezeléséből, valamint a kapcsolat lezárásának a kérés törzsének végét jelző jelzésként való használatából ered (close-delimited). A Pingora csak a "Transfer-Encoding: chunked" változatot ellenőrizte, és figyelmen kívül hagyta ezt a fejlécet, ha abban több érték szerepelt. Ilyen helyzetben a Pingora nem vette figyelembe a "Content-Length" fejléc méretét, és a kérés törzsét az összes adatként kezelte, amely a kapcsolat megszakításáig érkezett.

A támadó a „Transfer-Encoding” fejlécben több érték megadásával olyan körülményeket teremtett, amelyek esetén a backend-re irányított kérés tényleges mérete nem felelt meg a „Transfer-Encoding” fejléc alapján kiszámított chunked lánc méretének. A Pingora az összes kapott adatot egyetlen kérésként irányította át, míg a backend, például a Node.js, a „Transfer-Encoding: chunked” alapján számolta ki a kérést, és a fennmaradó részt egy másik kérés kezdeteként kezelte. GET / HTTP/1.0 Host: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET /admin HTTP/1.1 X:

Sebezhetőségek a Pingora projektben, amelyek lehetővé teszik harmadik fél kérésekbe való beavatkozást.

A második CVE-2026-2833 sebezhetőség a HTTP/1.1 kérések „Upgrade” fejlécének helytelen feldolgozásából ered. Ha a kérésben szerepelt az „Upgrade” fejléc, a proxy azonnal átirányította a backend felé, és a kérés további adatait, amelyek a „Upgrade” fejléc után követték, nem várta meg a backend válaszát a 101 (Switching Protocols) kóddal. Emiatt megszakadt a szinkronizáció a proxy és a backend között, és a backend a „Upgrade” fejléc után küldött adatokat külön kérésként kezelte, és a másik felhasználó által beküldött következő kérésre a végrehajtott kérés eredményét küldte vissza. GET / HTTP/1.1 Host: example.com Upgrade: foo GET /admin HTTP/1.1 Host: example.com

Sebezhetőségek a Pingora projektben, amelyek lehetővé teszik harmadik fél kérésekbe való beavatkozást.
Sebezhetőségek a Pingora projektben, amelyek lehetővé teszik harmadik fél kérésekbe való beavatkozást.

A problémák a Pingora használatakor jelentkeznek, amikor visszafordított proxy (ingress proxy) formájában működik, és a felhasználói kéréseket a backendek felé továbbítja HTTP/1.0 vagy HTTP/1.1 protokollal. A Cloudflare tartalomterjesztő hálózatában alkalmazott Pingora konfiguráció nem tette lehetővé a sebezhetőségek kihasználását, mivel a Pingora CDN-ben nem működik ingress-proxy-ként, csak a HTTP/1.1 protokoll használatával irányítja a kéréseket, blokkolja a hibás Content-Length értékű kéréseket, csak egy értéket enged a „Transfer-Encoding: chunked” fejlécben, és a „Upgrade:” fejlécű kérésekhez kiegészítő „Connection: close” fejlécet ad hozzá, amely megakadályozza további kérések továbbítását ugyanazon a kapcsolaton.

A harmadik sebezhetőség CVE-2026-2836 (veszélyességi szint: 8,4 a 10-ből) a gyorsítótár mérgezéséhez (cache poisoning) vezet, mivel a gyorsítótárazott adatok kulcsának generálása (CacheKey) kizárólag az URI-ból származó útvonal alapján történik, figyelmen kívül hagyva a "Host" fejléc tartalmát. Ez a hiányosság azonos gyorsítótár kulcsok létrehozásához vezet az azonos HTTP-útvonalakhoz, de különböző gazdagépeknél. A sebezhetőség arra használható, hogy megváltoztassa a gyorsítótárazott tartalmat több gazdagép általi gyorsítótárazás használata esetén. A Pingorában a gyorsítótárazás kísérleti funkció, amely nem ajánlott éles bevezetéshez.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster