Node.js تي حملو جاوا اسڪرپٽ اعتراض پروٽوٽائپس جي هٿرادو ذريعي

هيلم هولٽز سينٽر فار انفارميشن سيڪيورٽي (سي آءِ ايس پي اي) ۽ رائل انسٽيٽيوٽ آف ٽيڪنالاجي (سويڊن) جي محققن جاوا اسڪرپٽ جي پروٽوٽائپ آلودگي ٽيڪنڪ جي لاڳو ٿيڻ جو تجزيو ڪيو ته جيئن Node.js پليٽ فارم تي حملا ڪيا وڃن ۽ ان جي بنياد تي مشهور ايپليڪيشنون، ڪوڊ جي عمل جي نتيجي ۾.

پروٽوٽائپ آلودگي جو طريقو استعمال ڪري ٿو جاوا اسڪرپٽ ٻولي جي هڪ خاصيت جيڪا توهان کي اجازت ڏئي ٿي نيون خاصيتون شامل ڪرڻ جي روٽ پروٽوٽائپ ۾ ڪنهن به اعتراض. ايپليڪيشنن ۾ ڪوڊ بلاڪ (گئجيٽ) شامل ٿي سگھن ٿا جن جي آپريشن کي متبادل ملڪيت سان متاثر ڪيو ويو آھي؛ مثال طور، ڪوڊ ھڪڙي تعمير تي مشتمل ٿي سگھي ٿو جهڙوڪ 'const cmd = options.cmd || "/bin/sh"'، جنهن جو منطق تبديل ٿي ويندو جيڪڏهن حملو ڪندڙ روٽ پروٽوٽائپ ۾ "cmd" ملڪيت کي متبادل ڪرڻ جو انتظام ڪري ٿو.

هڪ ڪامياب حملي جي ضرورت آهي ته ايپليڪيشن خارجي ڊيٽا استعمال ڪري سگهي ٿي اعتراض جي روٽ پروٽوٽائپ ۾ نئين ملڪيت ٺاهڻ لاءِ، ۽ اهو عمل هڪ گيجٽ سان ملي ٿو جيڪو تبديل ٿيل ملڪيت تي منحصر آهي. پروٽوٽائپ کي تبديل ڪرڻ "__proto__" ۽ "constructor" سروس پراپرٽيز کي Node.js ۾ پروسيس ڪندي مڪمل ڪيو ويندو آهي. "__proto__" ملڪيت اعتراض جي طبقي جي پروٽوٽائپ کي واپس ڏئي ٿو، ۽ "constructor" ملڪيت واپسي کي ڪم ڪرڻ لاء استعمال ڪيو ويو اعتراض ٺاھڻ لاء.

جيڪڏهن ايپليڪيشن ڪوڊ ۾ تفويض شامل آهي "obj[a][b] = value" ۽ قيمتون خارجي ڊيٽا مان سيٽ ڪيون ويون آهن، هڪ حملو ڪندڙ "a" کي قيمت "__proto__" تي سيٽ ڪري سگهي ٿو ۽ پنهنجي ملڪيت جي تنصيب حاصل ڪري سگهي ٿو. نالي سان "b" ۽ قدر "قيمت" اعتراض جي روٽ پروٽوٽائپ ۾ (obj.__proto__.b = value؛)، ۽ پروٽوٽائپ ۾ مقرر ڪيل ملڪيت سڀني شين ۾ نظر ايندي. اهڙي طرح، جيڪڏهن ڪوڊ ۾ "obj[a][b][c] = value" وانگر اظهار شامل آهن، "a" کي "constructor" جي قيمت تي، ۽ "b" کي "prototype" سڀني موجود شين ۾ ترتيب ڏيڻ سان، توهان ڪري سگهو ٿا. نالي سان نئين ملڪيت جي وضاحت ڪريو "c" ۽ قدر "قدر".

پروٽوٽائپ کي تبديل ڪرڻ جو مثال: const o1 = {}; const o2 = نئون اعتراض ()؛ o1.__proto__.x = 42; // روٽ پروٽوٽائپ console.log (o2.x) ۾ ملڪيت "x" ٺاهيو؛ // رسائي جي ملڪيت "x" ٻئي شئي مان // آئوٽ 42 ٿيندو، ڇو ته روٽ پروٽوٽائپ اعتراض o1 ذريعي تبديل ڪيو ويو، جيڪو پڻ اعتراض o2 ۾ استعمال ٿيندو آهي.

ڪمزور ڪوڊ جو مثال: فنڪشن entryPoint (arg1, arg2, arg3){ const obj = {}; const p = obj[arg1]؛ p[arg2] = arg3؛ واپسي p؛ }

جيڪڏهن entryPoint فنڪشن جا دليل ان پٽ ڊيٽا مان ٺاهيا وڃن ٿا، ته پوءِ هڪ حملو ڪندڙ قدر پاس ڪري سگهي ٿو "__proto__" arg1 ڏانهن ۽ هڪ ملڪيت ٺاهي سگهي ٿو ڪنهن به نالي سان روٽ پروٽوٽائپ ۾. جيڪڏھن توھان پاس ڪريو arg2 جي قدر "toString" ۽ arg3 قدر 1 کي، توھان "toString" ملڪيت جي وضاحت ڪري سگھو ٿا (Object.prototype.toString=1) ۽ ڪال ڪرڻ دوران ايپليڪيشن کي ڪريش ڪري سگھو ٿا toString().

حالتن جا مثال جيڪي حملي ڪندڙ ڪوڊ جي عمل جي نتيجي ۾ ٿي سگھن ٿا، "مکين"، "شيل"، "ايڪسپورٽس"، "context Extensions" ۽ "env" ملڪيتن جي تخليق شامل آھن. مثال طور، هڪ حملو ڪندڙ هڪ اعتراض جي روٽ پروٽوٽائپ ۾ هڪ "مکيه" ملڪيت ٺاهي سگهي ٿو، ان ۾ لکندو پنهنجي اسڪرپٽ ڏانهن رستو (Object.prototype.main = "./../../pwned.js") ۽ ھن پراپرٽي کي سڏيو ويندو ان وقت تي عمل جي وقت جي ڪوڊ آف Construction Requirement ("my-package")، جيڪڏھن شامل ٿيل پيڪيج واضح طور تي "main" ملڪيت کي package.json ۾ بيان نٿو ڪري (جيڪڏھن ملڪيت جي وضاحت نه ڪئي وئي آھي، اهو روٽ پروٽوٽائپ مان حاصل ڪيو ويندو). "شيل"، "ايڪسپورٽ" ۽ "env" خاصيتون ساڳي طرح متبادل ٿي سگهن ٿيون: let rootProto = Object.prototype؛ rootProto["exports"] = {".":"./changelog.js"}؛ rootProto["1"] = "/path/to/npm/scripts/"؛ // ٽارگيٽ ڪال جي ضرورت آهي (."/target.js")؛ Object.prototype.main = "/path/to/npm/scripts/changelog.js"; Object.prototype.shell = "نوڊ"؛ Object.prototype.env = {}; Object.prototype.env.NODE_OPTIONS = "-inspect-brk=0.0.0.0:1337"؛ // ٽرگر ڪال جي ضرورت آهي ("بائيٽ")؛

محققن 10 NPM پيڪيجز جو تجزيو ڪيو جنهن ۾ سڀ کان وڏي تعداد ۾ انحصار ۽ ڏٺائين ته انهن مان 1958 وٽ بنيادي ملڪيت ناهي package.json، 4420 انهن جي گهربل بيانن ۾ لاڳاپا رستا استعمال ڪن ٿا، ۽ 355 سڌو استعمال ڪن ٿا ڪمانڊ متبادل API.

ھڪڙو ڪم ڪندڙ مثال ھڪڙو استحصال آھي جيڪو پارس سرور جي پس منظر تي حملو ڪري ٿو جيڪو evalFunctions ملڪيت کي ختم ڪري ٿو. اهڙن خطرن جي سڃاڻپ کي آسان ڪرڻ لاءِ، هڪ ٽول ڪٽ ٺاهي وئي آهي جيڪا جامد ۽ متحرڪ تجزيي جي طريقن کي گڏ ڪري ٿي. Node.js جي جاچ دوران، 11 گيجٽس جي نشاندهي ڪئي وئي جيڪي حملن کي منظم ڪرڻ لاءِ استعمال ڪري سگھجن ٿيون جيڪي حملي آور جي ڪوڊ تي عمل ڪرڻ لاءِ رهن ٿيون. پارس سرور جي علاوه، اين پي ايم سي ايل آئي ۾ ٻه استحصالي خطرات پڻ سڃاڻپ ڪيا ويا.

جو ذريعو: opennet.ru

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