Glibc menyertakan pembetulan untuk kelemahan memcpy yang disediakan oleh pembangun OS Aurora

Pembangun sistem pengendalian mudah alih Aurora (cabang OS Sailfish yang dibangunkan oleh syarikat Open Mobile Platform) berkongsi cerita yang mendedahkan tentang penghapusan kelemahan kritikal (CVE-2020 6096-) dalam Glibc, yang muncul hanya pada platform ARMv7. Maklumat tentang kerentanan telah didedahkan pada bulan Mei, tetapi sehingga beberapa hari kebelakangan ini, pembaikan tidak tersedia, walaupun hakikatnya kelemahan itu ditugaskan tahap bahaya yang tinggi dan terdapat prototaip kerja eksploitasi yang membolehkan anda mengatur pelaksanaan kod apabila memproses data yang diformatkan dengan cara tertentu dalam fungsi memcpy() dan memmove(). Pembetulan pakej untuk Debian ΠΈ Ubuntu masih belum dikeluarkan dan kerentanan itu masih belum diperbaiki selama hampir dua bulan dari saat pendedahan awam dan lima bulan dari saat pembangun Glibc dimaklumkan.

Kerentanan itu nyata dalam pelaksanaan memcpy() dan memmove() dalam bahasa himpunan untuk ARMv7 dan disebabkan oleh pemprosesan nilai negatif parameter yang salah yang menentukan saiz kawasan yang disalin. Masalah dengan pembangunan tampalan bermula apabila syarikat SUSE ΠΈ Red Hat mengumumkan bahawa platform mereka tidak terjejas oleh masalah itu, kerana mereka tidak membina untuk sistem ARMv32 7-bit, dan tidak mengambil bahagian dalam membuat pembetulan. Pembangun banyak pengedaran terbenam nampaknya telah bergantung pada pasukan Glibc, dan juga tidak terlibat secara aktif dalam menyediakan pembetulan.

Pilihan tampalan Untuk menyekat masalah itu, Huawei hampir serta-merta mencadangkan bahawa ia cuba menggantikan arahan pemasangan yang beroperasi dengan operan yang ditandatangani (bge dan blt) dengan analog yang tidak ditandatangani (blo dan bhs). Penyelenggara Glibc membangunkan satu set ujian untuk memeriksa pelbagai keadaan ralat, selepas itu ternyata tampung Huawei tidak sesuai dan tidak memproses semua kemungkinan kombinasi data input.

Memandangkan Aurora OS mempunyai binaan 32-bit untuk ARM, pembangunnya memutuskan untuk menutup kelemahan itu sendiri dan menawarkan penyelesaian kepada komuniti. Kesukarannya ialah perlu menulis pelaksanaan bahasa himpunan fungsi yang cekap dan mengambil kira pelbagai pilihan untuk hujah input. Pelaksanaan telah ditulis semula menggunakan arahan yang tidak ditandatangani. Tampalan Ternyata kecil, tetapi masalah utama ialah mengekalkan kelajuan pelaksanaan dan mengelakkan kemerosotan prestasi fungsi memcpy dan memmove, sambil mengekalkan keserasian dengan semua kombinasi nilai input.

Pada awal bulan Jun, dua versi pembetulan telah disediakan, melepasi rangka kerja ujian penyelenggara Glibc dan suite ujian dalaman Aurora. Pada 3 Jun, salah satu pilihan telah dipilih dan dihantar ke senarai mel Glibc. Seminggu kemudian
adalah dicadangkan patch lain yang serupa dalam pendekatan, yang membetulkan masalah dalam pelaksanaan multiarch, yang sebelum ini cuba diperbaiki oleh Huawei. Ujian mengambil masa sebulan dan pendaftaran undang-undang kerana kepentingan tampalan.
pembetulan 8 Julai telah diterima ke cawangan utama keluaran glibc 2.32 yang akan datang. Pelaksanaannya merangkumi dua tampalan βˆ’ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ untuk pelaksanaan multiarch memcpy untuk ARMv7, dan 2 untuk pelaksanaan bahasa perhimpunan umum memcpy() dan memmove() untuk ARM.

Masalahnya menjejaskan berjuta-juta peranti ARMv7 yang menjalankan Linux, dan tanpa kemas kini yang sesuai, pemilik berisiko apabila menyambungkannya ke rangkaian (perkhidmatan dan aplikasi yang boleh diakses rangkaian yang menerima data input tanpa sekatan saiz boleh diserang). Sebagai contoh, eksploitasi yang disediakan oleh penyelidik yang mengenal pasti kelemahan menunjukkan cara menyerang pelayan HTTP yang terbina dalam sistem maklumat kereta dengan menghantar permintaan GET yang sangat besar dan mendapatkan akses root kepada sistem.

Sumber: opennet.ru

Tambah komen