Glibc menyertakan perbaikan untuk kerentanan memcpy yang disiapkan oleh pengembang Aurora OS

Pengembang sistem operasi seluler Aurora (cabang dari Sailfish OS yang dikembangkan oleh perusahaan Open Mobile Platform) berbagi cerita yang mengungkap tentang penghapusan kerentanan kritis (CVE-2020-6096) di Glibc, yang hanya muncul di platform ARMv7. Informasi tentang kerentanan ini diungkapkan pada bulan Mei, namun hingga beberapa hari terakhir, perbaikan belum tersedia, meskipun faktanya kerentanan tersebut ditugaskan tingkat bahaya yang tinggi dan terdapat prototipe eksploitasi yang berfungsi yang memungkinkan Anda mengatur eksekusi kode saat memproses data yang diformat dengan cara tertentu dalam fungsi memcpy() dan memmove(). Perbaikan paket untuk Debian ΠΈ Ubuntu belum dirilis dan kerentanannya masih belum diperbaiki selama hampir dua bulan sejak pengungkapan publik dan lima bulan sejak pengembang Glibc diberitahu.

Kerentanan terwujud dalam implementasi memcpy() dan memmove() dalam bahasa assembly untuk ARMv7 dan disebabkan oleh kesalahan pemrosesan nilai negatif dari parameter yang menentukan ukuran area yang disalin. Masalah dengan pengembangan patch dimulai ketika perusahaan SUSE ΠΈ Red Hat mengumumkan bahwa platform mereka tidak terpengaruh oleh masalah ini, karena mereka tidak membuat sistem ARMv32 7-bit, dan tidak berpartisipasi dalam pembuatan perbaikan. Pengembang dari banyak distribusi tertanam tampaknya mengandalkan tim Glibc, dan juga tidak terlibat secara aktif dalam mempersiapkan perbaikannya.

Option tambalan Untuk mengatasi masalah ini, Huawei segera mengusulkan agar mereka mencoba mengganti instruksi perakitan yang beroperasi dengan operan yang ditandatangani (bge dan blt) dengan analog yang tidak ditandatangani (blo dan bhs). Pengelola Glibc mengembangkan serangkaian pengujian untuk memeriksa berbagai kondisi kesalahan, setelah itu ternyata patch Huawei tidak sesuai dan tidak memproses semua kemungkinan kombinasi data masukan.

Karena Aurora OS memiliki versi 32-bit untuk ARM, pengembangnya memutuskan untuk menutup sendiri kerentanannya dan menawarkan solusi kepada komunitas. Kesulitannya adalah perlunya menulis implementasi fungsi bahasa assembly yang efisien dan mempertimbangkan berbagai opsi untuk argumen masukan. Implementasinya telah ditulis ulang menggunakan instruksi yang tidak ditandatangani. Tambalan Ternyata kecil, namun masalah utamanya adalah menjaga kecepatan eksekusi dan menghindari penurunan kinerja fungsi memcpy dan memmove, sekaligus menjaga kompatibilitas dengan semua kombinasi nilai input.

Pada awal Juni, dua versi perbaikan telah disiapkan, melewati kerangka pengujian pengelola Glibc dan rangkaian pengujian internal Aurora. Pada tanggal 3 Juni, salah satu opsi dipilih dan terkirim ke milis Glibc. Seminggu kemudian
itu diajukan patch lain yang memiliki pendekatan serupa, yang memperbaiki masalah dalam implementasi multiarch, yang sebelumnya telah coba diperbaiki oleh Huawei. Pengujian memakan waktu satu bulan dan pendaftaran hukum karena pentingnya patch.
Koreksi 8 Juli diterima ke cabang utama rilis glibc 2.32 mendatang. Implementasinya mencakup dua patch - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ untuk implementasi multiarch memcpy untuk ARMv7, dan kedua untuk implementasi bahasa rakitan umum memcpy() dan memmove() untuk ARM.

Masalah ini mempengaruhi jutaan perangkat ARMv7 yang menjalankan Linux, dan tanpa pembaruan yang sesuai, pemilik berisiko saat menghubungkannya ke jaringan (layanan yang dapat diakses jaringan dan aplikasi yang menerima data masukan tanpa batasan ukuran dapat diserang). Misalnya, eksploitasi yang disiapkan oleh para peneliti yang mengidentifikasi kerentanan menunjukkan cara menyerang server HTTP yang dibangun ke dalam sistem informasi mobil dengan mengirimkan permintaan GET yang sangat besar dan mendapatkan akses root ke sistem.

Sumber: opennet.ru

Tambah komentar