- Artikel tentang CVE-2023-38545, masalah keamanan penting yang ditemukan di curl 8.4.0, yang dianggap sebagai masalah keamanan paling serius di curl dalam waktu yang lama
- Masalahnya adalah heap overflow, yang terjadi karena cacat pada fungsi yang terhubung ke proksi SOCKS5
- Masalah ini diperkenalkan pada awal 2020 ketika fungsi tersebut diubah dari pemanggilan blocking menjadi state machine non-blocking, yang dilakukan untuk meningkatkan kinerja transfer paralel dalam jumlah besar melalui SOCKS5
- Cacatnya ada pada status INIT di state machine, tempat variabel lokal disetel untuk menentukan apakah curl akan me-resolve host atau meneruskan nama ke proksi. Jika nama host terlalu panjang, kode akan beralih ke mode resolusi lokal, yang dapat menyebabkan memory overflow jika nama host lebih panjang daripada buffer target
- Overflow dapat terjadi jika ukuran buffer diatur lebih kecil dari 65541 byte dan nama host lebih panjang daripada ukuran buffer. Ini mengharuskan pelaku jahat memasukkan nama host yang sangat besar ke dalam rumus untuk memicu cacat tersebut
- Penyerang yang mengendalikan server HTTPS yang diakses klien pengguna libcurl melalui proksi SOCKS5 dapat mengembalikan redirect yang dimanipulasi ke aplikasi melalui respons HTTP 30x untuk memicu heap buffer overflow
- Masalah ini diperbaiki di curl 8.4.0 dengan membuat curl mengembalikan error jika nama host terlalu panjang, alih-alih beralih dari resolusi jarak jauh ke resolusi lokal. Test case khusus untuk skenario ini juga ditambahkan
- Penulis mengakui bahwa cacat ini tidak akan terjadi jika curl ditulis dalam bahasa yang aman memori alih-alih C, tetapi menyatakan bahwa porting curl ke bahasa lain saat ini tidak direncanakan
- Penulis menyarankan bahwa mengizinkan, menggunakan, dan mendukung lebih banyak dependensi yang ditulis dalam bahasa aman memori adalah pendekatan yang layak, dan secara bertahap mungkin dapat mengganti sebagian curl
- Penulis mengakui kesalahan dan meminta maaf, serta menyatakan bahwa cacat ini bisa dideteksi dengan rangkaian pengujian yang lebih baik. Ia juga menyinggung static code analyzer yang gagal menemukan masalah pada fungsi ini
- Penulis menyimpulkan bahwa merilis heap overflow dalam kode yang terpasang di lebih dari 20 miliar instance bukanlah pengalaman yang direkomendasikan
1 komentar
Komentar Hacker News