Copy Fail: Kerentanan Linux yang memberikan akses root melalui caching halaman.

Poin kunci:
  • Penyerang membuka soket AF_ALG dan meminta algoritma otentikasi.
  • Penyerang menggunakan fungsi splice() untuk memasukkan halaman-halaman dari cache file target (misalnya, /usr/bin/su) ke dalam soket. Halaman-halaman ini kemudian menjadi bagian dari daftar hash keluaran (dapat ditulis).
  • Penyerang mengirimkan pesan (sendmsg) dengan Associated Authenticated Data (AAD) yang dirancang secara jahat, di mana byte 4-7 berisi data yang ingin mereka tulis (misalnya, kode berbahaya).
  • Saat dekripsi dipicu, authencesn mengambil 4 byte tersebut dari AAD dan untuk sementara menuliskannya ke akhir buffer. Karena optimasi di tempat, ujung buffer ini menunjuk langsung ke halaman cache file.
  • Operasi kriptografi gagal (teks sandi tidak valid), tetapi penulisan 4-byte telah terjadi dan tidak pernah dibatalkan.
  • Penyerang mengulangi proses tersebut untuk menyuntikkan kode mereka. Ketika /usr/bin/su dieksekusi, kernel memuat versi yang dimodifikasi dari memori, mengeksekusi kode yang disuntikkan dengan hak akses root.

salinan gagal

Keamanan Linux menghadapi tantangan lain setelah ditemukannya kerentanan CVE-2026-31431, yang dijuluki "Copy Fail" oleh para peneliti Xint Code. Jauh dari sekadar kelemahan teoretis, masalah desain ini memungkinkan pengguna lokal yang tidak memiliki hak istimewa untuk meningkatkan hak akses mereka dan mendapatkan akses superuser penuh secara terprediksi dan tanpa terdeteksi.

Para peneliti menyebutkan bahwa celah keamanan ini telah berhasil dieksploitasi pada distribusi terkemuka seperti Ubuntu, Amazon Linux, RHEL, dan SUSE, yang menegaskan bahwa sistem apa pun yang menjalankan kernel versi lebih baru dari 4.14 dan mempertahankan dukungan untuk soket AF_ALG berpotensi rentan terhadap serangan ini.

Operasi di Tempat dan Luapan Cache Halaman

Terkait kerentanan tersebut, disebutkan bahwa hal itu bermula dari optimasi yang diperkenalkan pada tahun 2017 dalam API kriptografi kernel (AF_ALG). Modifikasi ini bertujuan untuk menghilangkan buffering yang tidak perlu dengan mengeksekusi operasi enkripsi terautentikasi (AEAD) langsung di ruang memori yang sama, yang dikenal sebagai operasi "in-place".

Masalah kritis muncul ketika menggabungkan optimasi ini dengan fungsi splice(), yang mentransfer data antar deskriptor file dengan mentransfer referensi langsung ke cache halaman kernel alih-alih menyalin data secara fisik. Saat meminta dekripsi, struktur memori dikonfigurasi sedemikian rupa sehingga buffer tujuan, yang seharusnya merupakan ruang sementara untuk pengguna, akhirnya terhubung langsung ke halaman cache yang berisi data file sistem.

Autentikasi dan penulisan di luar batas memori.

Pemicu utama kerentanan ini terletak pada perilaku anomali algoritma otentikasi. Tidak seperti rutinitas kriptografi lainnya yang secara ketat menghormati batasan buffer targetnya, algoritma khusus ini menggunakan memori pengguna sebagai ruang kerja sementara (scratch pad) untuk mengatur ulang urutan byte selama perhitungan tag otentikasi.

Dalam proses ini, algoritma menulis empat byte melampaui batas yang telah ditetapkan untuk wilayah keluaran. Karena optimasi di tempat dan rantai referensi yang dibuat oleh splice(), penulisan yang tampaknya tidak berbahaya ini melintasi batas memori pengguna dan langsung masuk ke halaman cache kernel yang terkait dengan file yang sedang diproses.

Rangkaian kelemahan logika ini memberi penyerang kemampuan untuk secara sewenang-wenang menimpa empat byte pada posisi tertentu dalam cache halaman untuk file apa pun yang dapat mereka baca. Dengan mengirimkan serangkaian permintaan yang telah dihitung, penyerang dapat menyuntikkan kode berbahaya ke dalam versi memori dari file eksekusi penting dengan bit suid yang diatur, seperti alat pengalih pengguna.

Karena semua operasi baca pertama-tama menanyakan cache halaman, saat utilitas yang sah dipanggil lagi, sistem akan mengeksekusi kode yang disuntikkan dari memori, memberikan hak akses root secara instan tanpa pernah mengubah file fisik di hard drive. Yang lebih mengkhawatirkan, karena isolasi kontainer berbagi cache halaman host yang mendasarinya, kerentanan ini berfungsi sebagai pintu masuk langsung untuk keluar dari lingkungan virtualisasi seperti klaster Kubernetes dan membahayakan node utama.

Perbaikan darurat dan solusi mitigasi

Mengingat parahnya kelemahan ini, tim pemeliharaan telah meluncurkan pembaruan darurat, di mana solusi pastinya terletak pada pengembalian optimasi in-place di dalam file algif_aead.c, dengan memisahkan secara ketat daftar memori sumber dan tujuan untuk mencegah halaman cache berakhir di jalur yang dapat ditulis.

Patch ini telah diintegrasikan ke dalam kernel 6.18.22, 6.19.12, dan 7.0, dan sedang di-backport ke cabang dukungan jangka panjang. Bagi administrator yang tidak dapat segera memulai ulang atau memperbarui server mereka, disarankan untuk menonaktifkan modul kernel algif_aead jika dikompilasi secara eksternal, atau untuk membatasi secara ketat pembuatan soket AF_ALG menggunakan kebijakan keamanan seperti SELinux, sebuah perisai yang, misalnya, telah menjaga perangkat Android saat ini aman dari ancaman ini.

Terakhir, jika Anda tertarik untuk mempelajari lebih lanjut, Anda dapat menemukan detailnya di tautan berikut.


Tambahkan sebagai sumber pilihan di Google