Rust eta Go hizkuntzen sareko liburutegietan ahultasuna, IP helbidearen egiaztapena saihesteko aukera ematen duena

Rust eta Go lengoaien liburutegi estandarretan identifikatu dira helbide-analisi funtzioetan zortziko zifrak dituzten IP helbideen prozesamendu okerrekin lotutako ahultasunak. Ahultasunek aplikazioetan baliozko helbideen egiaztapenak saihestea ahalbidetzen dute, adibidez, loopback interfazearen helbideetarako sarbidea (127.xxx) edo intraneteko azpisareetarako sarbidea antolatzeko SSRF (Server-side request forgery) erasoak egitean. Ahuleziek liburutegien nodo-sare-maskara (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipaddress (Python, CVE-) aurrez identifikatutako arazoen zikloa jarraitzen dute. 2021-29921 ), Data::Validate::IP (Perl, CVE-2021-29662) eta Net::Netmask (Perl, CVE-2021-29424).

Zehaztapenaren arabera, zero batekin hasten diren IP helbide-kateen balioak zenbaki octal gisa interpretatu behar dira, baina liburutegi askok ez dute hori kontuan hartzen eta zeroa baztertzen dute, balioa zenbaki hamartar gisa tratatuz. Adibidez, 0177 zenbakia zortzikolean 127ren berdina da hamartarren. Erasotzaileak baliabide bat eska dezake "0177.0.0.1" balioa zehaztuz, zeina idazkera hamartarrez "127.0.0.1"-ri dagokiona. Liburutegi problematikoa erabiltzen bada, aplikazioak ez du detektatuko 0177.0.0.1 helbidea 127.0.0.1/8 azpisarean dagoenik, baina, hain zuzen ere, eskaera bat bidaltzean, "0177.0.0.1" helbidera sar daiteke. sareko funtzioak 127.0.0.1 gisa prozesatuko dira. Era berean, intraneteko helbideetarako sarbidearen egiaztapena iruzurra egin dezakezu "012.0.0.1" bezalako balioak zehaztuz ("10.0.0.1"-ren baliokidea).

Rust-en, "std::net" liburutegi estandarrak arazo batek eragin zuen (CVE-2021-29922). Liburutegi honen IP helbide analizatzaileak zero bat baztertu zuen helbidean balioen aurretik, baina hiru zifra baino gehiago zehaztu ez baziren, adibidez, "0177.0.0.1" balio ez duen balio gisa hautemango litzateke eta emaitza oker bat. 010.8.8.8 eta 127.0.026.1 erantzunez itzuliko litzateke. Erabiltzaileak zehaztutako helbideak analizatzerakoan std::net::IpAddr erabiltzen duten aplikazioek SSRF (Zerbitzariaren aldeko eskaera faltsutzea), RFI (Urruneko Fitxategien Inklusioa) eta LFI (Fitxategi lokala barneratzea) erasoak jasan ditzakete. Ahultasuna Rust 1.53.0 adarrean konpondu zen.

Rust eta Go hizkuntzen sareko liburutegietan ahultasuna, IP helbidearen egiaztapena saihesteko aukera ematen duena

Go-n, liburutegi estandarra "sarea" eragiten du (CVE-2021-29923). Net.ParseCIDR integratutako funtzioak hasierako zeroak saltatzen ditu zortziko zenbakien aurretik, horiek prozesatu beharrean. Adibidez, erasotzaileak 00000177.0.0.1 balioa pasa dezake, net.ParseCIDR(00000177.0.0.1/24) funtzioan egiaztatutakoan, 177.0.0.1/24 gisa analizatuko baita, eta ez 127.0.0.1/24. Arazoa Kubernetes plataforman ere agertzen da. Ahultasuna Go 1.16.3 bertsioan eta 1.17 beta-n konpondu da.

Rust eta Go hizkuntzen sareko liburutegietan ahultasuna, IP helbidearen egiaztapena saihesteko aukera ematen duena


Iturria: opennet.ru

Gehitu iruzkin berria