Խոցելիություն node-netmask NPM փաթեթում, որն օգտագործվում է 270 հազար նախագծերում

Node-netmask NPM փաթեթը, որն ունի շաբաթական մոտ 3 միլիոն ներբեռնում և օգտագործվում է որպես կախվածություն GitHub-ի ավելի քան 270 հազար նախագծերից, ունի խոցելիություն (CVE-2021-28918), որը թույլ է տալիս շրջանցել ցանցային դիմակն օգտագործող ստուգումները: որոշելու տիրույթները հասցեագրելու կամ զտելու պատահականությունը: Խնդիրը շտկված է node-netmask 2.0.0-ի թողարկման մեջ:

Խոցելիությունը հնարավորություն է տալիս արտաքին IP հասցեն դիտարկել որպես հասցե ներքին ցանցից և հակառակը, և հավելվածում node-netmask մոդուլն օգտագործելու որոշակի տրամաբանությամբ՝ իրականացնելու SSRF (Սերվերի կողմից հարցումների կեղծում), RFI: (Remote File Inclusion) և LFI (Local File Inclusion) գրոհներ)՝ մուտք գործելու ներքին ցանցի ռեսուրսներ և ներառելու արտաքին կամ տեղական ֆայլերը կատարողական շղթայում: Խնդիրն այն է, որ ըստ ճշգրտման՝ զրոյից սկսվող հասցեի տողերի արժեքները պետք է մեկնաբանվեն որպես օկտալ թվեր, սակայն հանգույց-ցանցային մոդուլը դա հաշվի չի առնում և դրանք վերաբերվում է որպես տասնորդական թվեր:

Օրինակ՝ հարձակվողը կարող է տեղական ռեսուրս պահանջել՝ նշելով «0177.0.0.1» արժեքը, որը համապատասխանում է «127.0.0.1»-ին, սակայն «node-netmask» մոդուլը կվերացնի զրոյականը և կվերաբերվի 0177.0.0.1″-ին որպես « 177.0.0.1», որը հավելվածում մուտքի կանոնները գնահատելիս հնարավոր չի լինի նույնականությունը որոշել «127.0.0.1»-ով: Նմանապես, հարձակվողը կարող է նշել «0127.0.0.1» հասցեն, որը պետք է նույնական լինի «87.0.0.1»-ին, բայց «node-netmask» մոդուլում կդիտվի որպես «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» մոդուլում ներցանցային տիրույթների սահմանումը կիսելու համար:

Source: opennet.ru

Добавить комментарий