Kerentanan dina perpustakaan jaringan basa Rust and Go anu ngamungkinkeun anjeun ngalangkungan verifikasi alamat IP

Kerentanan anu aya hubunganana sareng pamrosésan alamat IP anu salah sareng digit oktal dina fungsi parsing alamat parantos diidentifikasi dina perpustakaan standar basa Rust and Go. Kerentanan ngamungkinkeun pikeun ngaliwat pamariksaan alamat anu valid dina aplikasi, contona, pikeun ngatur aksés ka alamat antarmuka loopback (127.xxx) atanapi subnet intranet nalika ngalaksanakeun serangan SSRF (Pemalsuan pamundut sisi server). Kerentanan neruskeun siklus masalah anu diidentipikasi sateuacana dina perpustakaan node-netmask (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipaddress (Python, CVE- 2021-29921 ), Data :: Validasi :: IP (Perl, CVE-2021-29662) jeung Net :: Netmask (Perl, CVE-2021-29424).

Numutkeun spésifikasi, nilai string alamat IP anu dimimitian ku nol kedah diinterpretasi salaku angka octal, tapi seueur perpustakaan henteu nganggap ieu sareng ngan saukur miceun enol, ngarawat nilaina salaku angka decimal. Contona, angka 0177 dina octal sarua jeung 127 dina decimal. Panyerang tiasa nyuhunkeun sumber ku cara nangtukeun nilai "0177.0.0.1", anu dina notasi desimal pakait sareng "127.0.0.1". Upami perpustakaan masalah dianggo, aplikasi moal ngadeteksi yén alamat 0177.0.0.1 aya dina subnet 127.0.0.1/8, tapi dina kanyataanana, nalika ngirim pamundut, éta tiasa ngaksés alamat "0177.0.0.1", anu mana fungsi jaringan bakal ngolah salaku 127.0.0.1. Dina cara anu sami, anjeun tiasa curang cek aksés ka alamat intranet ku netepkeun nilai sapertos "012.0.0.1" (sarua sareng "10.0.0.1").

Dina Rust, perpustakaan standar "std:: net" kapangaruhan ku masalah (CVE-2021-29922). Alamat IP parser perpustakaan ieu dipiceun hiji nol saméméh nilai dina alamat, tapi ngan lamun teu leuwih ti tilu digit anu dieusian, contona, "0177.0.0.1" bakal katarima salaku hiji nilai teu valid, sarta hasilna salah. bakal balik di respon kana 010.8.8.8 jeung 127.0.026.1. Aplikasi anu nganggo std :: net :: IpAddr nalika nga-parsing alamat anu dikhususkeun ku pangguna berpotensi rentan ka serangan SSRF (pemalsuan pamundut sisi server), RFI (Remote File Inclusion) sareng LFI (Local File Inclusion). Kerentanan ieu dibenerkeun dina cabang Rust 1.53.0.

Kerentanan dina perpustakaan jaringan basa Rust and Go anu ngamungkinkeun anjeun ngalangkungan verifikasi alamat IP

Dina Go, perpustakaan standar "net" kapangaruhan (CVE-2021-29923). The net.ParseCIDR diwangun-di fungsi skips ngarah nol saméméh angka octal tinimbang ngolah aranjeunna. Contona, hiji panyerang bisa lulus nilai 00000177.0.0.1, nu, lamun dipariksa di net.ParseCIDR(00000177.0.0.1/24) fungsi, bakal parsed salaku 177.0.0.1/24, sarta lain 127.0.0.1/24. Masalahna ogé muncul dina platform Kubernetes. Kerentanan dibenerkeun dina Go release 1.16.3 sareng beta 1.17.

Kerentanan dina perpustakaan jaringan basa Rust and Go anu ngamungkinkeun anjeun ngalangkungan verifikasi alamat IP


sumber: opennet.ru

Tambahkeun komentar