Vilnerabilite nan cdnjs ki pèmèt ekzekisyon kòd sou sèvè Cloudflare

Yo te idantifye yon vilnerabilite kritik nan rezo livrezon kontni cdnjs Cloudflare a, ki fèt pou akselere livrezon bibliyotèk JavaScript, sa ki pèmèt egzekisyon kòd abitrè sou sèvè CDN. Danje pwoblèm nan agrave pa lefèt ke apeprè 12.7% nan tout sit sou entènèt la sèvi ak sèvis la pou telechaje bibliyotèk JavaScript, ak konpwomi nan enfrastrikti a fè li posib ranplase bibliyotèk yo bay nenpòt nan sit sa yo.

Sèvis cdnjs telechaje pakè ki soti nan Git oswa yon depo NPM, apre sa li pèmèt nenpòt sit itilize rezo livrezon kontni Cloudflare gratis pou akselere chajman bibliyotèk JavaScript yo. Lè w ap etidye kòd konpozan cdnjs ki te pibliye sou GitHub, li te revele ke pou depake pakè NPM nan achiv tgz yo, yo itilize modil estanda achiv/tar nan lang Go, ki pwodui yon lis fichye jan yo ye, san yo pa nòmalize chemen yo. . Nan ka a lè script la depake sa ki baze sou lis yo bay la, prezans nan achiv la nan dosye tankou "../../../../../../../tmp/test" kapab mennen nan ranplase dosye abitrè nan sistèm, osi lwen ke dwa aksè pèmèt.

Yo te sigjere ke yon atakè ta ka aplike pou ajoute bibliyotèk li nan cdnjs epi telechaje yon achiv ki fèt espesyalman ki gen dosye ak karaktè "../" nan chemen an nan depo NPM la. Sou sèvè cdnjs, yon operasyon "autoupdate" fèt detanzantan, pandan sa moun k ap okipe a telechaje nouvo vèsyon bibliyotèk yo pwopoze a epi depake sa ki ladan yo. Lè l sèvi avèk fichye ki gen chemen "../", yon atakè ka ranplase fichye ki gen script sèvis epi egzekite kòd yo sou sèvè kote yo te fè debalaj la.

Nan ka telechaje mizajou soti nan Git, li te dekouvri ke moun kap telechaje mizajou yo pa t 'pran an kont lyen senbolik lè kopye dosye ki soti nan Git. Karakteristik sa a te fè li posib pou òganize lekti nenpòt ki dosye ki soti nan sèvè a lè w ajoute lyen senbolik nan Git.

Li te deside kòmanse eksperyans ak yon demonstrasyon piratage cdnjs pou resevwa yon pri nan HackerOne pa teste ipotèz la konsènan lekti dosye. Yo te ajoute yon lyen senbolik test.js nan depo Git bibliyotèk JavaScript ki sèvi atravè CDN, ki montre dosye /proc/self/maps la. Apre pibliye yon nouvo vèsyon bibliyotèk la, moun k ap okipe aktyalizasyon an te trete depo sa a epi li te pibliye fichye espesifye a nan cdnjs (test.js te kreye kòm yon lyen senbolik epi lè yo te mande fichye a, sa ki nan /proc/self/maps yo te retounen. ).

Ranplase yon lyen senbolik nan dosye a /proc/self/environ, otè etid la remake ke done yo bay yo gen valè yo nan varyab anviwònman GITHUB_REPO_API_KEY ak WORKERS_KV_API_TOKEN. Premye varyab la estoke kle API a pou aksè ekri nan depo robocdnjs sou GitHub. Dezyèm varyab la estoke siy la nan depo KV nan cdnjs. Sèvi ak enfòmasyon yo resevwa, atakè a te kapab fè chanjman nan cdnjs ak konplètman konpwomèt enfrastrikti a.

Sous: opennet.ru

Add nouvo kòmantè