Limpahan penampan dalam curl dan libcurl, ditunjukkan apabila mengakses melalui proksi SOCKS5

Kerentanan (CVE-2023-38545) telah dikenal pasti dalam utiliti untuk menerima dan menghantar data melalui rangkaian curl dan perpustakaan libcurl, yang sedang dibangunkan secara selari, yang boleh menyebabkan limpahan penimbal dan berkemungkinan melaksanakan kod penyerang pada bahagian klien apabila diakses menggunakan utiliti curl atau aplikasi menggunakan libcurl, ke pelayan HTTPS yang dikawal oleh penyerang. Masalah hanya muncul jika akses melalui proksi SOCKS5 didayakan dalam curl. Apabila mengakses terus tanpa proksi, kelemahan tidak muncul. Kerentanan diperbaiki dalam keluaran curl 8.4.0. Penyelidik keselamatan yang menemui pepijat menerima ganjaran $4660 sebagai sebahagian daripada inisiatif Internet Bug Bounty Hackerone.

Kerentanan disebabkan oleh ralat dalam kod resolusi nama hos sebelum mengakses proksi SOCKS5. Jika nama hos adalah sehingga 256 aksara panjang, curl serta-merta menyerahkan nama kepada proksi SOCKS5 untuk resolusi di sisinya, dan jika nama itu lebih daripada 255 aksara, ia bertukar kepada penyelesai tempatan dan menyerahkan alamat yang telah ditetapkan kepada SOCKS5 . Disebabkan ralat dalam kod, bendera yang menunjukkan keperluan untuk resolusi tempatan boleh ditetapkan kepada nilai yang salah semasa rundingan perlahan sambungan melalui SOCKS5, yang membawa kepada rakaman nama hos yang panjang dalam penimbal yang diperuntukkan dengan jangkaan menyimpan alamat IP atau nama , tidak melebihi 255 aksara.

Pemilik tapak yang diakses dengan curl melalui proksi SOCKS5 boleh mencetuskan limpahan penimbal sisi klien dengan mengembalikan kod ubah hala permintaan (HTTP 30x) dan menetapkan pengepala "Lokasi:" kepada URL dengan nama hos dalam julat 16 ke atas hingga 64 KB (16 KB ialah saiz minimum yang diperlukan untuk melimpah penimbal yang diperuntukkan dan 65 KB ialah panjang nama hos maksimum yang dibenarkan dalam URL). Jika pengalihan permintaan didayakan dalam tetapan libcurl dan proksi SOCKS5 yang digunakan cukup perlahan, maka nama hos yang panjang akan ditulis pada penimbal kecil, jelas saiz yang lebih kecil.

Kerentanan terutamanya mempengaruhi aplikasi berdasarkan libcurl dan muncul dalam utiliti curl hanya apabila menggunakan pilihan "--limit-rate" dengan nilai kurang daripada 65541 - libcurl secara lalai memperuntukkan penimbal bersaiz 16 KB dan dalam utiliti curl ia adalah 100 KB, tetapi saiz ini berubah bergantung pada nilai parameter "-limit-rate".

Daniel Stenberg, pengarang projek itu, menyebut bahawa kelemahan itu kekal tidak dapat dikesan selama 1315 hari. Ia juga mengatakan bahawa 41% daripada kelemahan yang dikenal pasti sebelum ini dalam curl berkemungkinan dapat dielakkan jika curl telah ditulis dalam bahasa yang selamat memori, tetapi tidak ada rancangan untuk menulis semula curl ke dalam bahasa lain pada masa hadapan yang boleh dijangka. Sebagai langkah untuk meningkatkan keselamatan pangkalan kod, adalah dicadangkan untuk mengembangkan alat untuk menguji kod dan lebih aktif menggunakan kebergantungan yang ditulis dalam bahasa pengaturcaraan yang memastikan operasi selamat dengan memori. Ia juga mempertimbangkan kemungkinan menggantikan bahagian curl secara beransur-ansur dengan pilihan yang ditulis dalam bahasa selamat, seperti bahagian belakang Hyper HTTP eksperimen yang dilaksanakan dalam Rust.

Sumber: opennet.ru

Tambah komen