270 мың жобада пайдаланылған NPM түйін-желі маскасы пакетіндегі осалдық

Аптасына 3 миллионға жуық жүктеп алынатын және GitHub-тағы 270 мыңнан астам жобаларға тәуелділік ретінде пайдаланылатын түйін-желі маскасы NPM пакетінде желі маскасын қолданатын тексерулерді айналып өтуге мүмкіндік беретін осалдық бар (CVE-2021-28918). мекенжай диапазондарының орын алуын анықтау немесе сүзу үшін. Мәселе node-netmask 2.0.0 шығарылымында шешілді.

Осалдық сыртқы IP мекенжайын ішкі желі мекенжайы ретінде және керісінше өңдеуге мүмкіндік береді және SSRF (Сервер жағындағы сұрауды жалған жасау), RFI орындау үшін қосымшада түйін-желі маскасы модулін пайдаланудың белгілі бір логикасы бар. (Қашықтағы файлды қосу) және LFI (жергілікті файлды қосу) шабуылдары ) ішкі желідегі ресурстарға қол жеткізу және сыртқы немесе жергілікті файлдарды орындау тізбегіне қосу. Мәселе мынада, спецификацияға сәйкес нөлден басталатын мекенжай жолының мәндері сегіздік сандар ретінде түсіндірілуі керек, бірақ түйін-желі маскасы модулі мұны ескермейді және оларды ондық сандар ретінде қарастырады.

Мысалы, шабуылдаушы "0177.0.0.1" мәніне сәйкес келетін "127.0.0.1" мәнін көрсету арқылы жергілікті ресурсты сұрауы мүмкін, бірақ "түйін-желі маскасы" модулі нөлді алып тастайды және 0177.0.0.1" мәнін " ретінде қарастырады. 177.0.0.1", ол қол жеткізу ережелерін бағалау кезінде қолданбада "127.0.0.1" сәйкестендіруді анықтау мүмкін болмайды. Сол сияқты, шабуылдаушы «0127.0.0.1» мекенжайын көрсете алады, ол «87.0.0.1» бірдей болуы керек, бірақ «түйін-желі маскасы» модулінде «127.0.0.1» ретінде қарастырылады. Сол сияқты, «012.0.0.1» («10.0.0.1» баламасы, бірақ тексеру кезінде 12.0.0.1 ретінде өңделеді) сияқты мәндерді көрсету арқылы интранет мекенжайларына кіруді тексеруді алдауға болады.

Мәселені анықтаған зерттеушілер проблеманы апатты деп атайды және бірнеше шабуыл сценарийлерін ұсынады, бірақ олардың көпшілігі алыпсатарлық болып көрінеді. Мысалы, ол кіріс сұрауының параметрлері немесе деректері негізінде ресурсты сұрау үшін сыртқы қосылымдарды орнататын Node.js негізіндегі қолданбаға шабуыл жасау мүмкіндігі туралы айтады, бірақ қолданба арнайы аталмаған немесе егжей-тегжейлі көрсетілмеген. Енгізілген IP мекенжайлары негізінде ресурстарды жүктейтін қолданбаларды тапсаңыз да, жергілікті желіге қосылмай немесе «айна» IP мекенжайларын бақылаусыз осалдықты іс жүзінде қалай пайдалануға болатыны толық түсініксіз.

Зерттеушілер тек 87.0.0.1 (Telecom Italia) және 0177.0.0.1 (Brasil Telecom) иелері 127.0.0.1 қолжетімділік шектеуін айналып өте алады деп болжайды. Неғұрлым шынайы сценарий - әртүрлі қолданбалар жағындағы блоктау тізімдерін айналып өту үшін осалдықты пайдалану. Бұл мәселені "private-ip" NPM модулінде интранет ауқымдарының анықтамасын ортақ пайдалану үшін де қолдануға болады.

Ақпарат көзі: opennet.ru

пікір қалдыру