Осебпазирӣ дар бастаи NPM гиреҳи шабакавӣ, ки дар 270 ҳазор лоиҳа истифода мешавад

Бастаи NPM node-netmask, ки дар як ҳафта тақрибан 3 миллион боргирӣ дорад ва ҳамчун вобастагӣ аз беш аз 270 ҳазор лоиҳа дар GitHub истифода мешавад, осебпазирӣ (CVE-2021-28918) дорад, ки ба он имкон медиҳад чекҳоро, ки ниқоби шабакаро истифода мебаранд, гузарад. барои муайян кардани пайдоиши диапазони адресҳо ё барои филтркунӣ. Мушкилот дар нашри node-netmask 2.0.0 ҳал карда шудааст.

Ин осебпазирӣ имкон медиҳад, ки суроғаи IP-и беруна ҳамчун суроға аз шабакаи дохилӣ ва баръакс баррасӣ карда шавад ва бо мантиқи муайяни истифодаи модули гиреҳи шабакавӣ дар барнома барои анҷом додани SSRF (қаллобии дархости сервер), RFI Ҳамлаҳои (Inclusion File Remote File) ва LFI (Inclusion File Local) барои дастрасӣ ба захираҳо дар шабакаи дохилӣ ва дохил кардани файлҳои беруна ё маҳаллӣ ба занҷири иҷро. Мушкилот дар он аст, ки тибқи мушаххасот, арзишҳои сатри суроғаҳо, ки аз сифр сар мешаванд, бояд ҳамчун рақамҳои ҳаштгона тафсир карда шаванд, аммо модули гиреҳ-ниқоби шабака инро ба назар намегирад ва онҳоро ҳамчун рақамҳои даҳӣ ҳисоб мекунад.

Масалан, ҳамлакунанда метавонад бо нишон додани арзиши "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-ро убур кунанд. Сенарияи воқеии бештар истифода бурдани осебпазирӣ барои гузаштан аз рӯйхатҳои блокҳои гуногуни барнома мебошад. Масъала инчунин метавонад барои мубодилаи таърифи диапазони интранет дар модули NPM "private-ip" истифода шавад.

Манбаъ: opennet.ru

Илова Эзоҳ