Zehfbûna di pirtûkxaneyên torê yên zimanên Rust û Go de ku dihêle hûn verastkirina navnîşana IP-yê derbas bikin.

Qelsiyên têkildarî pêvajoyek çewt a navnîşanên IP-yê yên bi reqemên oktal ên di fonksiyonên parkirina navnîşan de di pirtûkxaneyên standard ên zimanên Rust û Go de hatine nas kirin. Qelsî dihêle ku meriv kontrolên ji bo navnîşanên derbasdar di serîlêdanan de derbas bike, mînakî, organîzekirina gihîştina navnîşanên navbeynkariya loopback (127.xxx) an jêrtorên intranetê dema ku êrişên SSRF (sextekirina daxwaza ji aliyê serverê) pêk tîne. Qelsî çerxa pirsgirêkên ku berê di pirtûkxaneyên node-netmask (JavaScript, CVE-2021-28918, CVE-2021-29418), taybet-ip (JavaScript, CVE-2020-28360), ipaddress (Python, C) de hatine nas kirin berdewam dikin. 2021-29921 ), Dane::Rastkirin::IP (Perl, CVE-2021-29662) û Net::Netmask (Perl, CVE-2021-29424).

Li gorî diyardeyê, nirxên rêzika navnîşana IP-yê ku bi sifirê dest pê dikin divê wekî hejmarên oktal bêne şîrove kirin, lê gelek pirtûkxane vê yekê li ber çavan nagirin û bi tenê sifirê ji holê radikin, nirxê wekî jimareyek dehiyê digirin dest. Ji bo nimûne, hejmara 0177 di heştê de bi 127-ê re ye. Êrîşkarek dikare çavkaniyek bixwaze bi destnîşankirina nirxa "0177.0.0.1", ku di navnîşana deh de bi "127.0.0.1" re têkildar e. Ger pirtûkxaneya bi pirsgirêk were bikar anîn, serîlêdan dê nas neke ku navnîşana 0177.0.0.1 di binneta 127.0.0.1/8 de ye, lê bi rastî, dema ku daxwazek dişîne, ew dikare bigihîje navnîşana "0177.0.0.1", ku fonksiyonên torê dê wekî 127.0.0.1 pêvajoyê bikin. Bi vî rengî, hûn dikarin bi destnîşankirina nirxên mîna "012.0.0.1" (wekhevî "10.0.0.1") kontrolkirina gihîştina navnîşanên intranetê bixapînin.

Li Rust, pirtûkxaneya standard "std:: net" ji pirsgirêkek (CVE-2021-29922) bandor bû. Parsera navnîşana IP ya vê pirtûkxaneyê berî nirxên navnîşanê sifirek derxist, lê tenê heke ji sê reqeman zêdetir nehatibin diyar kirin, mînakî, "0177.0.0.1" dê wekî nirxek nederbasdar û encamek xelet were dîtin. dê di bersiva 010.8.8.8 û 127.0.026.1 de were vegerandin. Serlêdanên ku std::net::IpAddr bikar tînin dema ku navnîşanên bikarhêner-ê diyarkirî pars dikin, potansiyel ji êrişên SSRF (Selpêkirina daxwaza ji aliyê serverê), RFI (Tevvegirtina pelê ji dûr ve) û LFI (tevlîhevkirina pelê herêmî) ve dibin. Zelalbûn di şaxê Rust 1.53.0 de hate rast kirin.

Zehfbûna di pirtûkxaneyên torê yên zimanên Rust û Go de ku dihêle hûn verastkirina navnîşana IP-yê derbas bikin.

Di Go de, pirtûkxaneya standard "net" tê bandor kirin (CVE-2021-29923). Fonksiyona net.ParseCIDR-ya çêkirî, li şûna ku wan bixebitîne, sifirên pêşîn ên berî hejmarên oktalê diavêje. Mînakî, êrîşkarek dikare nirxa 00000177.0.0.1 derbas bike, ku gava di torê de were kontrol kirin. ParseCIDR(00000177.0.0.1/24) fonksiyona wê wekî 177.0.0.1/24 were pars kirin, û ne 127.0.0.1/24. Pirsgirêk di platforma Kubernetes de jî xwe nîşan dide. Zelalbûn di berdana Go 1.16.3 û beta 1.17 de hatî rast kirin.

Zehfbûna di pirtûkxaneyên torê yên zimanên Rust û Go de ku dihêle hûn verastkirina navnîşana IP-yê derbas bikin.


Source: opennet.ru

Add a comment