Haavatavused projektis Pingora, mis vÔimaldavad sekkuda kolmandate osapoolte pÀringutesse

Cloudflare kuulutas vÀlja kolm haavatavust Pingora raamistiku kohta, millest kahe jaoks on mÀÀratud kriitiline ohtlikkuse tase (9,3 10-st). Pingora raamistik on kirjutatud Rusti keeles ja on mÔeldud turvaliste, kÔrge jÔudlusega veebiteenuste arendamiseks. Pingora abil ehitatud proksi kasutatakse Cloudflare'i sisu kohaletoimetamise vÔrgus ning see kÀsitleb rohkem kui 40 miljonit pÀringut sekundis. Haavatavused on kÔrvaldatud Pingora versioonis 0.8.0.

Kaks kĂ”ige ohtlikumat haavatavust vĂ”imaldavad teostada «HTTP Request Smuggling» rĂŒnnakuid, mis vĂ”imaldavad mööda minna juurdepÀÀsu piirangu sĂŒsteemidest ja tungida teiste kasutajate pĂ€ringute sisusse, mida töödeldakse samas voos esifronti ja tagaseina vahel (nĂ€iteks pahatahtliku JavaScripti koodi sisestamiseks teise kasutaja seanssi saidiga). Probleemid tuvastati Bug Bounty programmi osalise poolt, mis pakub auhindade maksmist haavatavuste avastamise eest.

Tagatipuks protokolli kaudu, kus pöördutakse tagaseina kaudu pöördproksi poole, vĂ”tab kliendi pĂ€ringuid vastu lisasĂ”lm, mis loob pikaajalise TCP-ĂŒhenduse tagaseinaga, mis töötleb pĂ€ringuid otse. Selle ĂŒhise ĂŒhenduse kaudu edastatakse tavaliselt erinevate kasutajate pĂ€ringud, mis jĂ€rgivad ĂŒksteise jĂ€rel HTTP protokolli vahenditega jagatuna. «HTTP Request Smuggling» rĂŒnnakud tekivad eri tĂ”lgendustest HTTP-pealkirjade ja HTTP-protokolli mÀÀratlemisel esifrontides ja tagaseintel, nĂ€iteks kui esifront kasutab pĂ€ringu suuruse mÀÀratlemiseks HTTP-pealkirja «Content-Length», ja tagasein «Transfer-Encoding: chunked».

Esimene haavatavus CVE-2026-2835 on olemas HTTP/1.0 pĂ€ringute analĂŒĂŒsimise koodis ja see tuleneb «Transfer-Encoding» pealkirja mitme vÀÀrtuse vale töötlemise tĂ”ttu, samuti ĂŒhenduse sulgemise kasutamisest pĂ€ringute keha lĂ”pu tunnusena (close-delimited). Pingora kontrollis ainult varianti «Transfer-Encoding: chunked» ja ignoreeris seda pealkirja, kui selles oli mitmeid vÀÀrtusi. Sellisel juhul ei arvestanud Pingora pealkirja «Content-Length» suurust ja pidas keha pĂ€ringuks kĂ”iki andmeid, mis saadi enne ĂŒhenduse sulgemist.

TĂ€nu mitme vÀÀrtuse mÀÀramisele pealkirjas „Transfer-Encoding” suutis rĂŒndaja luua tingimused, kus pĂ€ring suunati tagaplaanile, mille tegelik suurus ei vastanud chunked-ahelast arvutatavale suurusele, mis pĂ”hines pealkirjal „Transfer-Encoding”. Pingora suunas kĂ”ik saadud andmed ĂŒheks pĂ€ringuks, kuid tagaplaan, nĂ€iteks Node.js, arvutas pĂ€ringu „Transfer-Encoding: chunked” alusel ja töötles ĂŒlejÀÀnud sabaga kui teise pĂ€ringu algust. GET / HTTP/1.0 Host: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET /admin HTTP/1.1 X:

Haavatavused projektis Pingora, mis vÔimaldavad sekkuda kolmandate osapoolte pÀringutesse

Teine haavatavus CVE-2026-2833 tuleneb HTTP/1.1 pĂ€ringutes HTTP-pealkirja „Upgrade” valest töötlemisest. Kui pĂ€ringus on pealkiri „Upgrade”, edastas vaheproksi koheselt tagaplaanile ka ĂŒlejÀÀnud pĂ€ringu andmed, mis jĂ€rgnesid pealkirjale „Upgrade”, ootamata tagaplaanilt vastust koodiga 101 (Switching Protocols). Selle tĂ”ttu hĂ€iris voogude sĂŒnkroonimine vaheproksi ja tagaplaani vahel ning tagaplaan tajus pĂ€rast pealkirja „Upgrade” saadetud andmeid kui eraldi pĂ€ringut, edastades selle pĂ€ringu tĂ€itmise tulemuse vastuseks jĂ€rgmisel pĂ€ringule teiselt kasutajalt. GET / HTTP/1.1 Host: example.com Upgrade: foo GET /admin HTTP/1.1 Host: example.com

Haavatavused projektis Pingora, mis vÔimaldavad sekkuda kolmandate osapoolte pÀringutesse
Haavatavused projektis Pingora, mis vÔimaldavad sekkuda kolmandate osapoolte pÀringutesse

Probleemid ilmnevad siis, kui Pingorat kasutatakse tagasipöördeproksi (ingress proxy) vormis, mis suunab kasutajate pĂ€ringud tagaplaanidele, kasutades protokolle HTTP/1.0 vĂ”i HTTP/1.1. Cloudflare'i sisu edastamise vĂ”rgus rakendatud Pingora konfiguratsioon ei vĂ”imaldanud haavatavusi Ă€ra kasutada, kuna Pingorat ei kasutata CDN-is ingress-proksina, suunab see pĂ€ringud ainult HTTP/1.1 protokolli alusel, blokeerib pĂ€ringud vale Content-Length vÀÀrtustega, suunab ainult ĂŒhe pealkirja „Transfer-Encoding: chunked” vÀÀrtuse ja lisab pĂ€ringutesse, mille pealkiri on „Upgrade:”, tĂ€iendava pealkirja „Connection: close”, mis ei luba edastada tĂ€iendavaid pĂ€ringuid samas ĂŒhenduses.

Kolmas haavatavus CVE-2026-2836 (ohtude tase 8,4 skaalal 10) viib vahemĂ€lastuse nakatumiseni (cache poisoning) seetĂ”ttu, et vahemĂ€lu andmete paigutamise vĂ”tme (CacheKey) genereerimine pĂ”hineb ainult URI teel, eirates "Host" pĂ€ise sisu. Selline puudujÀÀk toob kaasa sama vahemĂ€lu vĂ”tme loomise sama HTTP tee jaoks erinevate hostide puhul. Haavatavust saab kasutada vahemĂ€lu sisu asendamiseks, kui mitu hosti kasutavad vahemĂ€lustamise reĆŸiimi. Pingoras on vahemĂ€lu katsefunktsioon, mida ei soovitata tootmisrakendustes.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster