Mereka mendapati kelemahan di perpustakaan rangkaian Rust and Go menghalang pengesahan IP

Baru-baru ini maklumat mengenai kelemahan dilepaskan yang terdapat di perpustakaan standard bahasa Karat dan Pergi, yang mana berkaitan dengan kesalahan alamat IP dengan digit oktal dalam fungsi analisis alamat.

Disebutkan bahawa eKerentanan ini membolehkan anda mengelakkan pengesahan alamat yang sah danaplikasi, misalnya, untuk mengatur akses ke alamat antara muka loopback atau subnet intranet ketika serangan spoofing permintaan dari pelayan dilakukan.

Kerentanan dalam dua bahasa ini Rentetan alamat IP mempunyai realisasi dalam spesifikasi berasaskan sifar, kerana anda berada secara teori mereka harus ditafsirkan sebagai nombor oktal, tetapi masalah yang menyebabkan gangguan ini adalah bahawa banyak perpustakaan mengabaikan ini dan hanya membuang sifar mereka akhirnya menganggap nilai sebagai nombor perpuluhan.

Sebagai contoh, untuk memahami bagaimana alamat IP ditafsirkan dalam bug ini, angka 0177 dalam oktal adalah 127 dalam perpuluhan dan dengan mana penyerang dapat meminta sumber yang menentukan nilai "0177.0.0.1", yang, karena tidak diambil sebagai oktal, notasi perpuluhan untuk ini adalah "127.0.0.1".

Inilah sebabnya sekiranya menggunakan salah satu perpustakaan yang bermasalah, aplikasi tidak akan mengesan berlakunya alamat 0177.0.0.1 di subnet 127.0.0.1, tetapi sebenarnya, ketika mengirim permintaan, alamat "0177.0.0.1" dapat dipanggil yang kerana salah tafsir, fungsi jaringan akan memprosesnya sebagai 127.0.0.1. Begitu juga, akses ke alamat intranet dapat ditipu dan disahkan dengan menentukan pelbagai nilai, yang akan dinilai oleh penyerang untuk kemungkinan eksploitasi.

Di sebelah Karat, masalah itu didapati tertakluk pada pustaka standard "std :: net" dan yang sudah dikatalogkan di bawah "CVE-2021-29922". Ia menerangkan bahawa penghurai alamat IP perpustakaan ini membuang sifar di hadapan nilai alamat, tetapi hanya jika tidak lebih dari tiga digit ditentukan, sebagai contoh, "0177.0.0.1" akan ditafsirkan sebagai nilai yang tidak sah dan hasil yang salah akan dikembalikan sebagai tindak balas.

Pengesahan input rentetan oktal yang salah di pustaka "net" standard rust-lang membolehkan penyerang jarak jauh yang tidak disahkan melakukan serangan SSRF, RFI, dan LFI yang tidak ditentukan pada banyak program yang bergantung pada rust-lang std :: net. Oktet alamat IP dibiarkan dilucutkan dan bukannya dinilai sebagai alamat IP yang sah.

Juga disebutkan bahawa aplikasi yang menggunakan perpustakaan std :: net :: IpAddr semasa menguraikan alamat yang ditentukan oleh pengguna berpotensi terdedah kepada serangan SSRF (spoofing permintaan sisi pelayan), RFI (kemasukan fail jauh) dan BIA (kemasukan fail tempatan). Begitu juga, penyerang boleh memasuki 127.0.026.1, yang sebenarnya 127.0.22

Sebagai contoh, penyerang yang menghantar alamat IP ke aplikasi web yang berdasarkan std :: net :: IpAddr boleh menyebabkan SSRF dengan memasukkan data input oktal; Penyerang boleh menghantar alamat IP yang dapat dieksploitasi jika oktet mempunyai 3 digit, dengan oktet minimum 08 yang dapat dieksploitasi yang menyebabkan penolakan perkhidmatan dan oktet maksimum 099 yang dapat dimanfaatkan yang juga menyebabkan penolakan perkhidmatan. 

Sekiranya anda ingin mengetahui lebih lanjut mengenai kerentanan ini di Rust, anda boleh menyemak butirannya Dalam pautan berikut. Juga disebutkan bahawa kerentanan diperbaiki di cabang Rust 1.53.0.

Sebaik sahaja kepada masalah yang menimpa untuk Go, disebutkan bahawa ini tertakluk pada perpustakaan standard «net» dan ia sudah disenaraikan di bawah CVE-2021-29923. Dalam keterangan disebutkan bahawa membolehkan penyerang jarak jauh yang tidak disahkan untuk melakukan serangan SSRF, RFI dan LFI tidak tentu arah dalam banyak program yang bergantung pada fungsi net.ParseCIDR bawaan golang. Oktet IP CIDR individu dilucutkan dan bukannya menilai sebagai oktet IP yang sah.

Sebagai contoh, penyerang mungkin melepasi nilai 00000177.0.0.1, yang, ketika diperiksa dalam fungsi net.ParseCIDR, akan dihuraikan sebagai 177.0.0.1/24, bukan 127.0.0.1/24. Masalahnya juga menampakkan dirinya di platform Kubernetes. Kerentanan diperbaiki dalam versi Go 1.16.3 dan versi beta 1.17.

Anda boleh mengetahui lebih lanjut mengenainya mengenai kerentanan ini Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.