Turvaauk cdnjs, mis vÔimaldas kÀivitada koodi Cloudflare'i serverites

Cloudflare'i pakutud sisu edastamise vÔrgus cdnjs, mis on mÔeldud JavaScripti raamatukogude edastamise kiirus, tuvastati kriitiline haavatavus, mis vÔimaldab tÀita mootorkoodi CDN-i serverites. Probleemi ohtlikkust suurendab see, et umbes 12,7% kÔigist veebilehtedest kasutab seda JavaScripti raamatukogude laadimiseks ja infrastruktuuri kompromiteerimine vÔimaldab asendada kogu nende lehtede edastatavat sisu.

Teenuse cdnjs kaudu laaditakse pakette Git-ist vĂ”i NPM-repositorist, mille jĂ€rel on igal veebilehel tasuta vĂ”imalus kasutada Cloudflare'i sisu edastamise vĂ”rku, et kiirendada JavaScripti raamatukogude laadimist. Cdnjs komponentide, mis on avaldatud GitHub-is, koodi uurimisel leiti, et NPM-pakettide unpackimiseks tgz arhiivides kasutatakse Go keeles kirjutatud standardset moodulit archive/tar, mis annab failide loendi sellisena, nagu nad on, ilma tee normaliseerimata. Kui skript unpackib sisu antud loendi pĂ”hjal, vĂ”ivad arhiivides olevate failide, nĂ€iteks „.. / .. / .. / .. / .. / .. / .. / tmp / test”, olemasolu viia sĂŒsteemis juhuslike failide ĂŒlekirjutamiseni vastavalt juurdepÀÀsuĂ”igustele.

Oletati, et rĂŒndaja vĂ”ib esitada taotluse oma raamatukogu lisamiseks cdnjs-i ja laadida NPM-repositorisse spetsiaalselt koostatud arhiivi, mis sisaldab faile, millel on teedes sĂŒmbolid „.. /”. Cdnjs serverites toimub perioodiliselt „autoupdate” operatsioon, mille kĂ€igus töötleja laadib alla soovitatud raamatukogude uusi versioone ja unpackib sisu. Failide abil, mille teed sisaldavad „.. /”, suudab rĂŒndaja saavutada teenuse skriptifailide ĂŒlekirjutamise ja oma koodi tĂ€itmise. serveris kuhu unpackimist tehti.

Git-ist vĂ€rskenduste laadimise korral selgus, et vĂ€rskendusi laadiv töötleja ei arvestanud sĂŒmboolseid linke faile Git-ist kopeerides. See omadus vĂ”imaldas lugeda kĂ”iki faile, serverid lisades Git-i sĂŒmboolseid linke.

Eksperimendid cdnjs-i hĂ€kkimise demonstreerimisega HackerOne'i auhinna saamiseks otsustati alustada hĂŒpoteesi testimisega seoses failide lugemisega. Git-repositsioonis, mis jagab CDN-i kaudu JavaScripti teeki, lisati sĂŒmboolne link test.js, mis osutas failile /proc/self/maps. PĂ€rast teegi uue versiooni avaldamist töötles vĂ€rskenduste töötleja antud repositsiooni ja avaldas antud faili cdnjs-is (test.js loodi sĂŒmboolse lingina ja faili pĂ€rimise korral anti vĂ€lja sisu /proc/self/maps).

Asendades sĂŒmboolse lingi faili /proc/self/environ, mĂ€rkas uurija, et jagatud andmete seas on keskkonna muutuja GITHUB_REPO_API_KEY ja WORKERS_KV_API_TOKEN vÀÀrtused. Esimeses muutujaid hoiti API vĂ”ti, et pÀÀseda kirjutamisĂ”igusega repositsioonile robocdnjs GitHubis. Teises muutujaid hoiti KV-hoidla token cdnjs-is. Kasutades saadud teavet, suutis rĂŒndaja teha muudatusi cdnjs-is ja tĂ€ielikult kompromiteerida infrastruktuuri.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster