Vulnerabilitet në cdnjs, që lejon ekzekutimin e kodit në serverat Cloudflare

Në rrjetin e ofruar nga Cloudflare për shpërndarjen e përmbajtjes cdnjs, i cili është i destinuar për të përshpejtuar shpërndarjen e biblioteka JavaScript, është zbuluar një dobësi kritike që lejon ekzekutimin e kodit të rastësishëm në serverat e CDN. Rreziku i problemit përkeqësohet nga fakti se 12.7% e të gjithë faqeve në internet përdorin shërbimin për të ngarkuar biblioteka JavaScript dhe kompromitimi i infrastrukturës lejon zëvendësimin e biblioteka që ofrohen nga çdo njëra nga këto faqe.

Shërbimi cdnjs ngarkohet nga pakot nga Git ose nga repository NPM, duke ofruar kështu mundësinë që çdo faqe të përdorë falas rrjetin e shpërndarjes së përmbajtjes Cloudflare për të përshpejtuar ngarkesat e bibliotekave JavaScript. Gjatë studimit të kodit të komponentëve cdnjs, të publikuar në GitHub, u zbulua se për shpërndarjen e pakove NPM në arkivat tgz përdoret moduli i standardit archive/tar në gjuhën Go, i cili jep një listë skedash ashtu siç janë, pa normalizimin e rrugëve. Në rastin kur skripti shpërndan përmbajtjen duke u bazuar në listën e dhënë, pranimi i skedave në arkiv me forma të tilla si "..\/..\/..\/..\/..\/..\/..\/tmp\/test" mund të çojë në mbivendosjen e skedave të rastësishme në sistem, për aq sa e lejojnë të drejtat e aksesit.

I është supozuar se sulmuesi mund të aplikojë për të shtuar bibliotekën e tij në cdnjs dhe të ngarkojë në repository NPM një arkiv të formuar posaçërisht, që përmban skeda me simbole "..\/" në rrugë. Në serverët cdnjs kryhet periodikisht operacioni "autoupdate", gjatë të cilit një procesor ngarkon versionet e reja të bibliotekës së propozuar dhe shpërndan përmbajtjen. Me ndihmën e skedave me rrugë "..\/" sulmuesi mund të arrijë të mbivendosë skedat me skripte të shërbimit dhe të ekzekutojë kodin e tij në serveri në të cilin u krye shpërberja.

Në rastin e ngarkimit të përditësimeve nga Git, është zbuluar se procesori që ngarkon përditësimet nuk merr parasysh lidhet simbolike kur kopjon skedarë nga Git. Ky veçori lejonte organizimin e leximit të skedarëve të çdo lloji server përmes shtimit të lidhjeve simbolike në Git.

Eksperimentet me demonstrimin e shkeljes së cdnjs për të marrë një shpërblim në HackerOne u vendos të fillojë me verifikimin e hipotezës në lidhje me leximin e skedarëve. Në depo Git të biblioteke JavaScript të ofruar përmes CDN u shtua një lidhje simbolike test.js, e cila tregonte për skedarin /proc/self/maps. Pas publikimit të versionit të ri të bibliotekës, menaxheri i përditësimeve trajtoi këtë depo dhe publikoi skedarin e caktuar në cdnjs (test.js u krijua si një lidhje simbolike dhe kur kërkohej ky skedar, shfaqej përmbajtja e /proc/self/maps).

Duke futur lidhjen simbolike për skedarin /proc/self/environ, autori i hulumtimit vuri re se brenda të dhënave të dhëna ishin vlera të variablave mjedisorë GITHUB_REPO_API_KEY dhe WORKERS_KV_API_TOKEN. Në variablën e parë ruhej çelësi i API për qasje me të drejta shkruese në depo robocdnjs në GitHub. Në variablën e dytë ruhej tokeni për magazinën KV në cdnjs. Duke shfrytëzuar informacionin e marra, sulmuesi mund të bënte ndryshime në cdnjs dhe të kompromentonte plotësisht infrastrukturën.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster