Varnarleysi í cdnjs sem leyfði keyrslu kóða á Cloudflare netþjónum

Mikilvægur varnarleysi hefur fundist í cdnjs efnisafhendingarneti Cloudflare, sem er hannað til að flýta fyrir afhendingu JavaScript bókasöfna, sem gerir kleift að keyra handahófskennda kóða á CDN netþjónum. Hættan á vandanum eykst af því að um 12.7% allra vefsvæða á Netinu nota þjónustuna til að hlaða niður JavaScript bókasöfnum og málamiðlun á innviðum gerir það mögulegt að skipta um bókasöfn sem einhver þessara vefsvæða býður upp á.

cdnjs þjónustan hleður niður pakka frá Git eða NPM geymslu, eftir það gerir hún hvaða síðu sem er að nota Cloudflare efnisafhendingarnetið ókeypis til að flýta fyrir hleðslu á JavaScript bókasöfnum. Þegar kóðinn á cdnjs íhlutunum sem birtir voru á GitHub kom í ljós að til að taka upp NPM pakka í tgz skjalasafni er venjulegt skjalasafn/tar eining á Go tungumálinu notað, sem framleiðir skrá yfir skrár eins og þær eru, án þess að staðla slóðirnar . Í því tilviki þegar handritið pakkar upp innihaldinu á grundvelli tiltekins lista getur tilvist í skjalasafni skráa eins og „../../../../../../../tmp/test“ leiða til þess að yfirskrifa handahófskenndar skrár í kerfinu, eftir því sem aðgangsréttur leyfir.

Lagt var til að árásarmaður gæti sótt um að bæta bókasafni sínu við cdnjs og hlaðið upp sérhönnuðu skjalasafni sem inniheldur skrár með „../“ stöfum á slóðinni að NPM geymslunni. Á cdnjs netþjónum er „sjálfvirk uppfærsla“ aðgerð reglulega framkvæmd, þar sem stjórnandinn halar niður nýjum útgáfum af fyrirhuguðu bókasafni og pakkar upp innihaldinu. Með því að nota skrár með slóðina „../“ getur árásarmaður skrifað yfir skrár með þjónustuforskriftum og keyrt kóðann þeirra á þjóninum sem upptakan var framkvæmd á.

Þegar um að hlaða niður uppfærslum frá Git kom í ljós að stjórnandinn sem hleður niður uppfærslunum tók ekki tillit til táknrænna tengla þegar skrár voru afritaðar frá Git. Þessi eiginleiki gerði það mögulegt að skipuleggja lestur allra skráa frá þjóninum með því að bæta táknrænum tenglum við Git.

Ákveðið var að hefja tilraunir með sýnikennslu á hakka cdnjs til að fá verðlaun hjá HackerOne með því að prófa tilgátuna varðandi lestur skráa. Táknrænum hlekk test.js hefur verið bætt við Git geymslu JavaScript bókasafnsins sem þjónað er í gegnum CDN, sem bendir á /proc/self/maps skrána. Eftir að ný útgáfa af bókasafninu var birt, vann uppfærslustjóri þessa geymslu og birti tilgreinda skrá í cdnjs (test.js var búið til sem táknrænn hlekkur og þegar óskað var eftir þessari skrá var innihald /proc/self/maps skilað til baka ).

Þegar höfundur rannsóknarinnar kom í staðinn fyrir táknrænan hlekk á skrána /proc/self/environ, tók höfundur rannsóknarinnar eftir því að tilgreind gögn innihéldu gildi umhverfisbreytanna GITHUB_REPO_API_KEY og WORKERS_KV_API_TOKEN. Fyrsta breytan geymdi API lykilinn fyrir skrifaðgang að robocdnjs geymslunni á GitHub. Önnur breytan geymdi táknið í KV geymslunni í cdnjs. Með því að nota upplýsingarnar sem berast gæti árásarmaðurinn gert breytingar á cdnjs og algjörlega komið í veg fyrir innviðina.

Heimild: opennet.ru

Bæta við athugasemd