Në pakon NPM node-netmask, e cila ka rreth 3 milion shkarkime në javë dhe përdoret si varësi në më shumë se 270 mijë projekte në GitHub, është identifikuar një dobësi (CVE-2021-28918) që lejon anashkalimin e kontrollimeve, ku maska rrjetit përdoret për të përcaktuar prani në gamat e adresave ose për filtrimin. Problemi është zgjidhur në versionin node-netmask 2.0.0.
Dobësia lejon trajtimin e një adrese IP të jashtme si një adresë brenda rrjetit dhe anasjelltas, dhe me një logjikë të caktuar përdorimi të modulit node-netmask në aplikacion është e mundur të kryhen sulme SSRF (Server-side request forgery), RFI (Remote File Inclusion) dhe LFI (Local File Inclusion) për të kërkuar burime në rrjetin e brendshëm dhe për të përfshirë në zinxhirin ekzekutiv skedarë të jashtëm ose lokalë. Problemi qëndron në faktin se sipas specifikimit, vlerat e adresave që fillojnë me zero duhet të interpretohen si numra oktal, por moduli 'node-netmask' nuk merr parasysh këtë veçori dhe i trajton ato si numra decimal.
Për shembull, një sulmues mund të kërkojë një burim lokal duke treguar vlerën '0177.0.0.1', e cila i korrespondon '127.0.0.1', por moduli 'node-netmask' do të heqë zero-n dhe do ta trajtojë '0177.0.0.1' si '177.0.0.1', gjë që në aplikacion, kur vlerësohen rregullat e aksesit, nuk do të lejojë të përcaktohet identiteti me '127.0.0.1'. Po ashtu, sulmuesi mund të tregojë adresën '0127.0.0.1', e cila duhet të jetë e barabartë me '87.0.0.1', por në modul 'node-netmask' do të trajtohet si '127.0.0.1'. Njësoj, mund të manipulohet kontrolli i qasjes në adresat intranet duke treguar vlera të ngjashme me '012.0.0.1' (ekvivalente '10.0.0.1', por gjatë kontrollit do të trajtohet si '12.0.0.1').
Hulumtuesit që zbuluan problemin e konsiderojnë atë si katastrofik dhe paraqesin disa skenarë sulmesh, por shumica e tyre duken spekulativ. Për shembull, flitet për mundësinë e sulmimit të një aplikacioni në bazë të Node.js, që krijon lidhje të jashtme për të kërkuar një burim në bazë të parametrit ose të dhënave të kërkesës hyrëse, por aplikacioni konkret nuk përmendet dhe nuk jepet detajisht. Edhe nëse gjenden aplikacione që kryejnë shkarkime burimesh në bazë të hyrjeve të dhëna, nuk është krejtësisht e qartë si mund të përdoret dobësia në praktikë pa u lidhur me rrjetin lokal ose pa kontrollin mbi adresat IP "pasqyrë". IP-adresaveHulumtuesit vetëm supozojnë se pronarët e 87.0.0.1 (Telecom Italia) dhe 0177.0.0.1 (Brasil Telecom) kanë mundësinë të anashkalojnë kufizimin e aksesit në 127.0.0.1. Një skenar më realist është përdorimi i dobësisë për të anashkaluar lista të ndryshme bllokimi, të realizuara nga ana e aplikacionit. Problemi gjithashtu mund të përdoret për të ndërruar përcaktimin e gamave intranet në modulin NPM 'private-ip'.
Исследователи лишь предполагают, что владельцы 87.0.0.1 (Telecom Italia) и 0177.0.0.1 (Brasil Telecom) имеют возможность обойти ограничение доступа к 127.0.0.1. Более реалистичным сценарием является использование уязвимости для обхода различных списков блокировки, реализованных на стороне приложения. Проблема также может применяться для обмена определения интранет-диапазонов в NPM-модуле «private-ip».
Burimi: opennet.ru
