cdnjs ۾ ڪمزوري جيڪا Cloudflare سرورز تي ڪوڊ جي عمل جي اجازت ڏني

Cloudflare جي cdnjs مواد پهچائڻ واري نيٽ ورڪ ۾ هڪ نازڪ خطري جي نشاندهي ڪئي وئي آهي، جيڪا جاوا اسڪرپٽ لائبريرين جي ترسيل کي تيز ڪرڻ لاءِ ٺهيل آهي، سي ڊي اين سرورز تي صوابديدي ڪوڊ جي عمل جي اجازت ڏئي ٿي. مسئلي جو خطرو ان حقيقت کان وڌي ويو آهي ته انٽرنيٽ تي لڳ ڀڳ 12.7٪ سڀني سائيٽن جاوا اسڪرپٽ لائبريرين کي ڊائون لوڊ ڪرڻ لاءِ سروس استعمال ڪن ٿيون، ۽ انفراسٽرڪچر جو سمجھوتو انهن سائيٽن مان مهيا ڪيل لائبريرين کي تبديل ڪرڻ ممڪن بڻائي ٿو.

cdnjs سروس Git يا NPM مخزن مان پيڪيجز ڊائون لوڊ ڪري ٿي، جنهن کانپوءِ اها ڪنهن به سائيٽ کي اجازت ڏئي ٿي Cloudflare مواد پهچائڻ واري نيٽ ورڪ کي مفت ۾ استعمال ڪرڻ جي لاءِ جاوا اسڪرپٽ لائبريرين جي لوڊشيڊنگ کي تيز ڪرڻ لاءِ. جڏهن GitHub تي شايع ٿيل cdnjs اجزاء جي ڪوڊ جو مطالعو ڪيو ويو، اهو ظاهر ٿيو ته Tgz آرڪائيوز ۾ NPM پيڪيجز کي کولڻ لاءِ، گو ٻولي ۾ معياري آرڪائيو/ٽار ماڊل استعمال ڪيو ويندو آهي، جيڪو فائلن جي هڪ فهرست ٺاهيندو آهي جيئن ته، رستن کي عام ڪرڻ کان سواءِ. . ان صورت ۾ جڏهن اسڪرپٽ ڏنل فهرست جي بنياد تي مواد کي پيڪ ڪري ٿو، فائلن جي آرڪائيو ۾ موجودگي جهڙوڪ "../../../../../../../tmp/test" ڪري سگھي ٿو. سسٽم ۾ ثالث فائلن کي اوور رائٽنگ ڪرڻ لاءِ، جيستائين رسائي جا حق اجازت ڏين.

اهو تجويز ڪيو ويو ته هڪ حملو ڪندڙ پنهنجي لائبريري کي cdnjs ۾ شامل ڪرڻ لاءِ درخواست ڏئي سگهي ٿو ۽ خاص طور تي ٺهيل آرڪائيو اپ لوڊ ڪري سگهي ٿو جنهن ۾ فائلون شامل آهن “../” اکرن سان NPM مخزن جي رستي ۾. cdnjs سرورز تي، هڪ "آٽو اپ ڊيٽ" آپريشن وقتي طور تي ڪيو ويندو آهي، جنهن دوران هينڊلر تجويز ڪيل لائبريري جا نوان ورزن ڊائون لوڊ ڪري ٿو ۽ مواد کي پيڪ ڪري ٿو. رستن سان فائلن کي استعمال ڪندي "../"، هڪ حملو ڪندڙ فائلن کي اوور رائٽ ڪري سگهي ٿو سروس اسڪرپٽس سان ۽ انهن جي ڪوڊ کي سرور تي عمل ڪري ٿو جنهن تي پيڪنگنگ ڪئي وئي هئي.

Git مان اپڊيٽ ڊائون لوڊ ڪرڻ جي صورت ۾، اهو دريافت ڪيو ويو ته هينڊلر اپڊيٽ ڊائون لوڊ ڪري رهيو هو جڏهن گٽ مان فائلن کي نقل ڪرڻ وقت علامتي لنڪس کي نه ورتو. ھن خصوصيت کي ممڪن بڻايو ته ڪنھن به فائلن جي پڙھڻ کي سرور کان Git ۾ علامتي لنڪ شامل ڪندي.

اهو فيصلو ڪيو ويو ته هيڪنگ cdnjs جي مظاهري سان تجربو شروع ڪيو وڃي هاڪرون تي انعام حاصل ڪرڻ لاءِ فائل پڙهڻ جي حوالي سان مفروضي کي جانچي. هڪ علامتي لنڪ test.js کي شامل ڪيو ويو آهي گٽ مخزن جي جاوا اسڪرپٽ لائبريري جي CDN ذريعي، اشارو ڪندي /proc/self/maps فائل ڏانهن. لائبريري جو نئون ورجن شايع ڪرڻ کان پوءِ، اپڊيٽ هينڊلر هن مخزن تي عمل ڪيو ۽ مخصوص فائل کي cdnjs ۾ شايع ڪيو (test.js هڪ علامتي لنڪ جي طور تي ٺاهيو ويو ۽ جڏهن هن فائل جي درخواست ڪئي وئي ته، /proc/self/maps جو مواد واپس ڪيو ويو. ).

فائل /proc/self/environ ڏانهن هڪ علامتي لنڪ کي تبديل ڪندي، مطالعي جي ليکڪ اهو محسوس ڪيو ته ڏنل ڊيٽا ۾ شامل آهي ماحوليات جي قيمتن جي قيمت GITHUB_REPO_API_KEY ۽ WORKERS_KV_API_TOKEN. پهريون متغير GitHub تي robocdnjs مخزن تائين لکڻ جي رسائي لاءِ API ڪني کي محفوظ ڪيو. ٻئي variable ٽوڪن کي محفوظ ڪيو KV اسٽوريج ۾ cdnjs. مليل معلومات کي استعمال ڪندي، حملو ڪندڙ cdnjs ۾ تبديليون آڻي سگهي ٿو ۽ بنيادي ڍانچي کي مڪمل طور تي سمجهوتو ڪري سگهي ٿو.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو