Dua kerentanan telah ditemukan di kernel Linux. Kerentanan ini serupa dengan kerentanan Copy Fail yang diungkapkan beberapa hari lalu, tetapi memengaruhi subsistem yang berbeda—xfrm-ESP dan RxRPC. Serangkaian kerentanan ini diberi kode nama Dirty Frag (juga disebut Copy Fail 2). Kerentanan ini memungkinkan pengguna yang tidak memiliki hak istimewa untuk mendapatkan hak akses root dengan menimpa data proses di cache halaman. Eksploitasi tersedia dan berfungsi di semua distribusi Linux saat ini. Kerentanan ini diungkapkan sebelum patch diterbitkan, tetapi solusi sementara tersedia.
Dirty Frag membahas dua kerentanan berbeda: yang pertama pada modul xfrm-ESP, yang digunakan untuk mempercepat operasi enkripsi IPsec menggunakan protokol ESP (Encapsulating Security Payload), dan yang kedua pada driver RxRPC, yang mengimplementasikan keluarga soket AF_RXRPC dan protokol RPC dengan nama yang sama, yang berjalan melalui UDP. Masing-masing kerentanan, jika dilihat secara terpisah, memungkinkan akses root. Kerentanan xfrm-ESP telah ada di kernel Linux sejak Januari 2017, dan kerentanan RxRPC telah ada sejak Juni 2023. Kedua masalah ini disebabkan oleh optimasi yang memungkinkan penulisan langsung ke cache halaman.
Untuk mengeksploitasi kerentanan xfrm-ESP, pengguna harus memiliki izin untuk membuat namespace, dan untuk mengeksploitasi kerentanan RxRPC, modul kernel rxrpc.ko harus dimuat. Misalnya, di Ubuntu, aturan AppArmor mencegah pengguna yang tidak memiliki hak istimewa untuk membuat namespace, tetapi modul rxrpc.ko dimuat secara default. Beberapa distribusi tidak memiliki modul rxrpc.ko tetapi tidak memblokir pembuatan namespace. Peneliti yang menemukan masalah ini mengembangkan eksploitasi gabungan yang mampu menyerang sistem melalui kedua kerentanan tersebut, sehingga memungkinkan untuk mengeksploitasi masalah ini di semua distribusi utama. Eksploitasi ini telah dikonfirmasi berfungsi pada Ubuntu 24.04.4 dengan kernel 6.17.0-23, RHEL 10.1 dengan kernel 6.12.0-124.49.1, openSUSE Tumbleweed dengan kernel 7.0.2-1, CentOS Stream 10 dengan kernel 6.12.0-224, AlmaLinux 10 dengan kernel 6.12.0-124.52.3, dan Fedora 44 dengan kernel 6.19.14-300.
Seperti halnya kerentanan Copy Fail, masalah pada xfrm-ESP dan RxRPC disebabkan oleh dekripsi data di tempat menggunakan fungsi splice(), yang mentransfer data antara deskriptor file dan pipa tanpa menyalin, dengan meneruskan referensi ke elemen dalam cache halaman. Offset penulisan dihitung tanpa pemeriksaan yang tepat untuk memperhitungkan penggunaan referensi langsung ke elemen dalam cache halaman, memungkinkan permintaan yang dibuat khusus untuk menimpa 4 byte pada offset tertentu dan memodifikasi isi file apa pun dalam cache halaman.
Semua operasi baca file mengambil konten dari cache halaman terlebih dahulu. Jika data dalam cache halaman dimodifikasi, operasi baca file akan mengembalikan data pengganti, bukan informasi sebenarnya yang tersimpan di drive. Eksploitasi kerentanan ini bermuara pada memodifikasi cache halaman untuk file yang dapat dieksekusi dengan flag root suid. Misalnya, untuk mendapatkan hak akses root, seseorang dapat membaca file yang dapat dieksekusi /usr/bin/su untuk menempatkannya di cache halaman, dan kemudian mengganti kode mereka sendiri ke dalam isi file yang dimuat ke dalam cache halaman ini. Eksekusi selanjutnya dari utilitas "su" akan menghasilkan salinan yang dimodifikasi dari cache halaman yang dimuat ke dalam memori, bukan file yang dapat dieksekusi asli dari drive.
Pengungkapan kerentanan dan rilis patch terkoordinasi dijadwalkan pada 12 Mei, tetapi karena kebocoran, informasi kerentanan harus dipublikasikan sebelum patch dirilis. Pada akhir April, patch untuk rxrpc, ipsec, dan xfrm diposting ke milis publik netdev tanpa menyebutkan bahwa patch tersebut terkait dengan kerentanan. Pada 5 Mei, pengelola subsistem IPsec menerima perubahan pada repositori Git netdev dengan usulan perbaikan pada modul xfrm-esp. Deskripsi perubahan tersebut sebagian besar identik dengan deskripsi masalah yang menyebabkan kerentanan Copy Fail pada modul algif_aead. Seorang peneliti keamanan tertarik pada perbaikan ini, berhasil membuat eksploitasi yang berfungsi, dan mempublikasikannya, tanpa menyadari bahwa embargo telah diberlakukan untuk mengungkapkan informasi tentang masalah tersebut hingga 12 Mei.
Pembaruan dengan perbaikan untuk kernel Linux dan paket kernel dalam distribusi belum dipublikasikan, tetapi patch yang mengatasi masalah tersebut sudah tersedia—xfrm-esp dan rxrpc. Pengidentifikasi CVE belum ditetapkan, yang mempersulit pelacakan pembaruan paket dalam distribusi. Sebagai solusi sementara, Anda dapat memblokir pemuatan modul kernel esp4, esp6, dan rxrpc: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Sumber: opennet.ru
