Mereka menemukan kerentanan di perpustakaan jaringan Rust and Go mencegah validasi IP

Baru-baru ini informasi tentang kerentanan dirilis yang ditemukan di perpustakaan standar bahasa karat dan pergi, yang mana terkait dengan kesalahan penanganan alamat IP dengan digit oktal dalam fungsi analisis alamat.

Disebutkan bahwa eKerentanan ini memungkinkan Anda untuk menghindari pemeriksaan alamat yang valid dann aplikasi, misalnya, untuk mengatur akses ke alamat antarmuka loopback atau subnet intranet saat serangan spoofing permintaan sisi server dilakukan.

Kerentanan dalam dua bahasa ini String alamat IP memiliki realisasi dalam spesifikasi berbasis nol, karena Anda dalam teori mereka harus ditafsirkan sebagai bilangan oktal, tapi masalah yang menyebabkan gangguan ini adalah banyak perpustakaan mengabaikan ini dan hanya membuang nol, jadi mereka akhirnya memperlakukan nilai sebagai angka desimal.

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

Itulah sebabnya dalam hal menggunakan salah satu perpustakaan yang bermasalah, aplikasi tidak akan mendeteksi terjadinya alamat 0177.0.0.1 di subnet 127.0.0.1, tetapi pada kenyataannya, saat mengirim permintaan, alamat "0177.0.0.1" dapat dipanggil yang karena salah tafsir, fungsi jaringan akan memproses ini sebagai 127.0.0.1. Demikian pula, akses ke alamat intranet dapat diakali dan diverifikasi dengan menentukan berbagai nilai, yang akan dievaluasi penyerang untuk kemungkinan eksploitasi.

Di sisi Rust, masalahnya ditemukan tunduk pada perpustakaan standar "std :: net" dan yang sudah dikatalogkan di bawah "CVE-2021-29922". Ini menggambarkan bahwa parser alamat IP perpustakaan ini membuang angka nol di depan nilainya alamat, tetapi hanya jika tidak lebih dari tiga digit yang ditentukan, misalnya, "0177.0.0.1" akan ditafsirkan sebagai nilai yang tidak valid dan hasil yang salah akan dikembalikan sebagai tanggapan.

Validasi input string oktal yang salah di pustaka "net" standar rust-lang memungkinkan penyerang jarak jauh yang tidak diautentikasi untuk melakukan serangan SSRF, RFI, dan LFI yang tidak dapat ditentukan pada banyak program yang bergantung pada rust-lang std :: net. Oktet alamat IP dibiarkan dilucuti alih-alih dievaluasi sebagai alamat IP yang valid.

Disebutkan juga bahwa aplikasi yang menggunakan std :: net :: IpAddr library saat menguraikan alamat yang ditentukan oleh pengguna berpotensi rentan terhadap serangan SSRF (spoofing permintaan sisi server), RFI (penyertaan file jarak jauh) dan BIA (penyertaan file lokal). Demikian pula, penyerang dapat memasukkan 127.0.026.1, yang sebenarnya adalah 127.0.22

Misalnya, penyerang yang mengirimkan alamat IP ke aplikasi web berbasis std :: net :: IpAddr dapat menyebabkan SSRF dengan memasukkan data input oktal; Seorang penyerang dapat mengirim alamat IP yang dapat dieksploitasi jika oktet memiliki 3 digit, dengan oktet minimum yang dapat dieksploitasi 08 yang mengarah ke penolakan layanan dan oktet 099 yang dapat dieksploitasi maksimum yang juga mengarah ke penolakan layanan. 

Jika Anda ingin tahu lebih banyak tentang kerentanan ini di Rust, Anda dapat memeriksa detailnya Di tautan berikut. Disebutkan juga bahwa kerentanan telah diperbaiki di cabang Rust 1.53.0.

Sesegera terhadap masalah yang mempengaruhi to Go, disebutkan bahwa ini tunduk pada perpustakaan standar «net» dan sudah terdaftar di bawah CVE-2021-29923. Dalam deskripsi disebutkan bahwa memungkinkan penyerang jarak jauh yang tidak diautentikasi untuk melakukan serangan SSRF, RFI, dan LFI tak tentu di banyak program yang bergantung pada fungsi net.ParseCIDR bawaan golang. Oktet IP CIDR individual dihapus alih-alih mengevaluasinya sebagai oktet IP yang valid.

Misalnya, penyerang mungkin memberikan nilai 00000177.0.0.1, yang ketika diperiksa di fungsi net.ParseCIDR, akan diuraikan sebagai 177.0.0.1/24, bukan 127.0.0.1/24. Masalahnya juga muncul di platform Kubernetes. Kerentanan telah diperbaiki di Go versi 1.16.3 dan beta versi 1.17.

Anda dapat mempelajari lebih lanjut tentang itu tentang kerentanan ini Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.