Bregusrwydd yn y pecyn NPM nod-netmask a ddefnyddir mewn 270 mil o brosiectau

Mae'r pecyn NPM nod-netmask, sydd â thua 3 miliwn o lawrlwythiadau yr wythnos ac a ddefnyddir fel dibyniaeth ar fwy na 270 mil o brosiectau ar GitHub, yn agored i niwed (CVE-2021-28918) sy'n caniatáu iddo osgoi gwiriadau sy'n defnyddio'r mwgwd rhwyd i benderfynu ar y digwyddiad i fynd i'r afael ystodau neu ar gyfer hidlo. Mae'r mater yn sefydlog wrth ryddhau nod-netmask 2.0.0.

Mae'r bregusrwydd yn ei gwneud hi'n bosibl trin cyfeiriad IP allanol fel cyfeiriad o'r rhwydwaith mewnol ac i'r gwrthwyneb, a chyda rhesymeg benodol o ddefnyddio'r modiwl nod-rwydrwyd yn y cymhwysiad i gyflawni SSRF (ffugio cais ochr y gweinydd), RFI (Cynhwysiant Ffeil o Bell) ac ymosodiadau LFI (Cynhwysiant Ffeil Lleol) ) i gael mynediad i adnoddau ar y rhwydwaith mewnol a chynnwys ffeiliau allanol neu leol yn y gadwyn weithredu. Y broblem yw, yn ôl y fanyleb, y dylid dehongli gwerthoedd llinynnol cyfeiriad sy'n dechrau gyda sero fel rhifau wythol, ond nid yw'r modiwl nod-netmask yn cymryd hyn i ystyriaeth ac yn eu trin fel rhifau degol.

Er enghraifft, gallai ymosodwr ofyn am adnodd lleol trwy nodi'r gwerth "0177.0.0.1", sy'n cyfateb i "127.0.0.1", ond bydd y modiwl "node-netmask" yn taflu'r null, ac yn trin 0177.0.0.1 ″ fel " 177.0.0.1", sydd yn y cais wrth werthuso rheolau mynediad, ni fydd yn bosibl pennu hunaniaeth gyda “127.0.0.1”. Yn yr un modd, gall ymosodwr nodi'r cyfeiriad “0127.0.0.1”, a ddylai fod yn union yr un fath â “87.0.0.1”, ond a fydd yn cael ei drin fel “127.0.0.1” yn y modiwl “node-netmask”. Yn yr un modd, gallwch dwyllo'r siec am fynediad i gyfeiriadau mewnrwyd trwy nodi gwerthoedd fel "012.0.0.1" (sy'n cyfateb i "10.0.0.1", ond bydd yn cael ei brosesu fel 12.0.0.1 yn ystod y siec).

Mae'r ymchwilwyr a nododd y broblem yn galw'r broblem yn drychinebus ac yn darparu sawl senario ymosodiad, ond mae'r rhan fwyaf ohonynt yn edrych yn hapfasnachol. Er enghraifft, mae'n sôn am y posibilrwydd o ymosod ar raglen Node.js sy'n sefydlu cysylltiadau allanol i ofyn am adnodd yn seiliedig ar baramedrau neu ddata'r cais mewnbwn, ond nid yw'r cais wedi'i enwi'n benodol nac yn fanwl. Hyd yn oed os dewch o hyd i gymwysiadau sy'n llwytho adnoddau yn seiliedig ar y cyfeiriadau IP a gofnodwyd, nid yw'n gwbl glir sut y gellir manteisio ar y bregusrwydd yn ymarferol heb gysylltu â rhwydwaith lleol neu heb ennill rheolaeth ar gyfeiriadau IP “drych”.

Mae'r ymchwilwyr ond yn tybio bod perchnogion 87.0.0.1 (Telecom Italia) a 0177.0.0.1 (Brasil Telecom) yn gallu osgoi'r cyfyngiad mynediad i 127.0.0.1. Senario mwy realistig yw ecsbloetio'r bregusrwydd i osgoi amryw restrau bloc ochr-cais. Gellir cymhwyso'r mater hefyd i rannu'r diffiniad o ystodau mewnrwyd yn y modiwl NPM "private-ip".

Ffynhonnell: opennet.ru

Ychwanegu sylw