- Pengguna lokal tanpa hak istimewa dapat menggabungkan
authencesn, AF_ALG, dan splice() untuk membuat penulisan 4 byte ke page cache pada file yang dapat dibaca, lalu memanfaatkannya untuk meningkatkan hak akses hingga root
- Tanpa offset spesifik kernel atau kondisi race, cukup dengan satu skrip Python 732 byte yang berjalan apa adanya di berbagai distribusi Linux, dan eksploit yang sama dapat memperoleh root shell
- Cakupan dampaknya mencakup sebagian besar distribusi Linux utama sebelum patch diterapkan, dan karena
AF_ALG aktif pada konfigurasi default, eksposurnya luas dari 2017 hingga waktu patch dirilis
- Pada host multi-tenant, klaster Kubernetes / container, runner CI, dan Cloud SaaS yang mengeksekusi kode pengguna, satu akun biasa atau satu pod dapat berujung pada root host sehingga patch perlu diprioritaskan
- Respons utamanya adalah patch kernel yang mencakup commit mainline
a664bf3d603d, dan sebelum patch diterapkan, penting untuk menonaktifkan algif_aead serta memblokir AF_ALG untuk workload yang tidak tepercaya
Ringkasan kerentanan
- Satu cacat logika linear dapat dirangkai melalui
authencesn, AF_ALG, dan splice() hingga menjadi penulisan 4 byte ke page cache, yang memungkinkan peningkatan hak akses lokal
- Tanpa offset spesifik kernel atau race window, cukup satu skrip Python 732 byte yang bekerja identik di berbagai distribusi Linux yang dirilis sejak 2017
- Biner eksploit yang sama dapat memperoleh root shell di berbagai distribusi tanpa modifikasi
- Cukup memiliki akun lokal tanpa hak istimewa; tidak diperlukan akses jaringan, fitur debugging kernel, atau primitive lain yang sudah terpasang sebelumnya
Cakupan dampak
- Sebagian besar distribusi Linux utama yang menggunakan kernel sebelum patch termasuk dalam cakupan
- Pada konfigurasi default,
AF_ALG milik API kriptografi kernel pada praktiknya aktif di hampir semua distribusi mainstream, sehingga langsung terekspos dari 2017 hingga waktu patch dirilis
- Distribusi yang telah diverifikasi secara langsung adalah Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 14.3, dan SUSE 16
- Debian, Arch, Fedora, Rocky, Alma, Oracle, dan lini embedded juga akan terdampak jika menggunakan kernel yang rentan
Lingkungan yang perlu dipatch lebih dulu
- Pada host Linux multi-tenant, banyak pengguna berbagi kernel yang sama, sehingga akun pengguna mana pun dapat langsung menjadi root
- Pada klaster Kubernetes / container, page cache dibagikan ke seluruh host sehingga satu pod dapat mengambil alih node dan melampaui batas tenant
- Pada runner CI dan build farm, kode PR tidak tepercaya yang dijalankan dengan hak pengguna biasa dapat menjadi root di runner
- Pada Cloud SaaS yang mengeksekusi kode pengguna, container atau skrip yang diunggah tenant dapat berujung pada root host
- Server single-tenant lebih bersifat LPE internal dan bisa digabungkan dengan web RCE atau kredensial yang dicuri
- Laptop dan workstation pengguna tunggal memiliki urgensi lebih rendah, tetapi eksekusi kode lokal tetap dapat langsung berujung pada eskalasi ke root
PoC yang dipublikasikan dan cara penggunaannya
- PoC dipublikasikan agar pihak defensif dapat memanfaatkannya untuk memverifikasi sistem dan memastikan patch vendor
copy_fail_exp.py hanya menggunakan library standar Python 3.10+ yaitu os, socket, dan zlib
- Target default-nya adalah
/usr/bin/su, dan biner setuid lain dapat diberikan melalui argv[1]
- Ia memodifikasi biner setuid di dalam page cache; perubahan tidak bertahan setelah reboot, tetapi root shell yang diperoleh benar-benar berfungsi
- Issue tracker
Mitigasi
- Yang paling utama adalah patch kernel, dan kernel distribusi harus diperbarui ke versi yang mencakup commit mainline
a664bf3d603d
- Patch ini membalikkan optimisasi in-place pada
algif_aead yang diperkenalkan pada 2017, sehingga halaman page cache tidak masuk ke writable destination scatterlist
- Sebelum patch diterapkan, disarankan untuk menonaktifkan modul
algif_aead
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
- Pada container, sandbox, dan CI yang menjalankan workload tidak tepercaya, terlepas dari status patch, perlu memblokir pembuatan socket
AF_ALG dengan seccomp
Dampak saat dinonaktifkan
- Pada sebagian besar sistem, hampir tidak ada dampak yang terukur
dm-crypt / LUKS, kTLS, IPsec/XFRM, in-kernel TLS, build default OpenSSL/GnuTLS/NSS, SSH, dan crypto kernel keyring tidak terdampak
- Mereka menggunakan API kriptografi kernel secara langsung dan tidak melewati jalur
AF_ALG
- Jika engine
afalg di OpenSSL diaktifkan secara eksplisit, beberapa jalur offload kriptografi embedded, atau aplikasi yang langsung melakukan bind ke socket aead/skcipher/hash, dapat terdampak
- Dapat diperiksa dengan
lsof | grep AF_ALG atau ss -xa
- Menonaktifkan
AF_ALG tidak akan memperlambat target yang sejak awal tidak memanggilnya, sedangkan target yang menggunakannya akan kembali ke library kriptografi userspace biasa
Perbedaannya dengan Linux LPE pada umumnya
- Berbeda dari LPE Linux pada umumnya, tidak ada kondisi race dan tidak memerlukan offset khusus per distribusi
- Keandalannya juga diklaim 100% sekali jalan, dan cakupannya bukan rentang versi kernel yang sempit, melainkan periode panjang dari 2017 hingga 2026
- Karena ukurannya hanya 732 byte dan hanya memakai library standar Python, tidak ada payload terkompilasi atau dependensi terpisah
- Jalur penulisannya melewati VFS, dan halaman yang rusak tidak ditandai dirty sehingga tidak ada apa pun yang ditulis ke disk
- Karena page cache dibagikan ke seluruh host, ini bukan sekadar LPE melainkan juga dapat berfungsi sebagai primitive container escape
Cara kerja dan karakteristik deteksi
- Pengguna lokal tanpa hak istimewa dapat menulis 4 byte yang dapat dikendalikan ke page cache file yang dapat dibaca pada sistem Linux, lalu memanfaatkannya untuk memperoleh root
- Targetnya bukan file aktual di disk, melainkan page cache di memori; jika salinan cache dari
/usr/bin/su diubah, dari sudut pandang execve itu sama saja dengan mengubah binernya sendiri
- Karena tidak ada perubahan di disk, inotify tidak akan terpicu, dan setelah reboot atau cache ter-evict, file asli akan dimuat kembali
- Alat hash umum seperti
sha256sum, AIDE, dan Tripwire membaca page cache melalui read(), sehingga selama kerusakan masih berada di cache, hasil hash bisa berbeda dari baseline
- Setelah cache ter-evict atau sistem reboot, hash akan kembali cocok seperti semula, dan citra forensik disk juga hanya akan menyisakan file yang tidak dimodifikasi
- Dalam IMA appraisal enforcing mode, jika every-read measurement aktif, biner yang rusak dapat terdeteksi pada saat
execve sebelum dijalankan
Perbedaan dengan kerentanan lain
- Ini sekeluarga dengan Dirty Pipe, karena sama-sama merusak page cache dari userspace tanpa hak istimewa dan memperoleh root dengan menulis ke biner setuid tanpa perubahan di disk
- Mekanismenya berbeda: Dirty Pipe menyalahgunakan pipe buffer flags, sedangkan Copy Fail menyalahgunakan AEAD scratch write yang melintasi batas chained scatterlist
- Dirty Pipe memerlukan kernel 5.8+ dengan patch tertentu, sedangkan Copy Fail mencakup jendela dari 2017 hingga 2026
- Tidak seperti Dirty Cow, tidak perlu memenangkan race COW berbasis TOCTOU, mencoba berulang kali, atau membuat sistem tidak stabil
Detail tambahan
/usr/bin/su tidak wajib; selama itu adalah biner setuid-root yang dapat dibaca pengguna, passwd, chsh, chfn, mount, sudo, dan pkexec juga bisa digunakan
- Ini bukan kerentanan jarak jauh; terlebih dahulu dibutuhkan eksekusi kode lokal dengan hak pengguna biasa
- Jika web RCE jatuh ke akun layanan tanpa hak istimewa, atau digabungkan dengan foothold SSH maupun PR berbahaya di runner CI, hal itu dapat berujung pada root
- Patch tersebut membalikkan optimisasi in-place pada
algif_aead sehingga req->src dan req->dst kembali menjadi scatterlist yang terpisah
- Halaman page cache hanya tersisa pada source yang read-only, dan target yang bisa ditulisi oleh proses kriptografi tinggal buffer pengguna
Jadwal publikasi dan materi lanjutan
- 2026-03-23 dilaporkan ke tim keamanan kernel Linux
- 2026-03-24 konfirmasi awal dilakukan
- 2026-03-25 patch diusulkan dan ditinjau
- 2026-04-01 patch di-commit ke mainline
- 2026-04-22 CVE-2026-31431 dialokasikan
- 2026-04-29 dipublikasikan di https://copy.fail/
- Analisis teknis blog Xint
- Memuat root cause, diagram scatterlist, kronologi 2011→2015→2017, dan walkthrough eksploit
- Part 2 yang membahas container escape Kubernetes dijadwalkan dipublikasikan kemudian
Informasi terkait Xint Code
- Ditemukan dengan pendekatan AI-assisted, dengan titik awal berupa penelitian manusia bahwa
splice() menyerahkan halaman page cache ke crypto subsystem dan bahwa asal halaman dalam scatterlist bisa menjadi kelas bug yang kurang dieksplorasi
- Setelah itu, Xint Code memperluas audit ke seluruh subsystem Linux
crypto/ dalam skala sekitar 1 jam, dan dari hasil tersebut temuan paling parah adalah Copy Fail
- Xint Code
- Tulisan blog Xint
- Bug berisiko tinggi lain juga ditemukan dalam pemindaian yang sama, dan saat ini masih dalam proses coordinated disclosure
1 komentar
Pendapat Hacker News
Dari sudut pandang orang yang menangani kode crypto kernel Linux, eksploit AF_ALG yang meledak secara berkala ini benar-benar menjengkelkan
AF_ALG sudah lama masuk ke kernel tanpa review yang memadai, strukturnya terlalu rumit, dan membuka permukaan serangan yang sangat besar ke program userspace non-privileged
Selain itu, nyaris tidak diperlukan. Userspace sudah punya kode kriptonya sendiri, dan kode crypto kernel pada awalnya memang ditujukan untuk penggunaan internal kernel seperti dm-crypt
authencesn pada eksploit kali ini juga pada dasarnya adalah detail implementasi internal IPsec, jadi menurut saya sejak awal sudah keliru mengekspos ini sebagai API enkripsi/dekripsi userspace umum
Jika Anda mengelola konfigurasi kernel Linux, saya sangat menyarankan mematikan semua opsi CONFIG_CRYPTO_USER_API_*
Hanya dengan itu saja, bukan cuma bug kali ini, tetapi banyak bug AF_ALG di masa lalu dan masa depan juga akan menjadi tidak bisa dieksploitasi
Kalau ada program userspace yang rusak karenanya, pendekatan yang tepat adalah membantu memindahkannya ke kode crypto userspace, dan pada kenyataannya memang ada yang sudah berubah ke arah itu
Dari awal, AF_ALG memang tidak banyak gunanya selain untuk eksploit
Dulu API userspace seperti ini mungkin masih agak bisa ditoleransi, tetapi sekarang dengan adanya syzbot dan deteksi bug berbantuan LLM, ini rasanya sudah tidak bisa dipertahankan lagi
Alasan yang diajukan adalah memungkinkan akselerator perangkat keras yang hanya bisa diakses dalam mode kernel digunakan dari userspace, memungkinkan kunci diserahkan ke kernel tanpa lama tinggal di memori aplikasi, dan bisa mengurangi footprint dibanding library crypto userspace di lingkungan dengan memori terbatas seperti embedded
Saya tidak bisa menilai apakah itu pembenaran yang cukup kuat, tetapi setidaknya memang ada alasannya
Linus dikenal cukup selektif soal apa yang boleh masuk ke kernel, jadi latar belakang masuknya API seperti ini sepertinya akan jadi cerita yang menarik
Ini memungkinkan hash dan enkripsi ditangani lewat pemanggilan
read(2)/write(2)biasaSepertinya ada kebingungan dalam proses pengungkapannya
Vendor tampaknya tidak menangani kerentanan ini dengan cukup serius, sehingga di banyak distro statusnya masih belum dipatch
https://access.redhat.com/security/cve/cve-2026-31431 menuliskannya sebagai "Moderate severity", "Fix deferred", dan halaman pelacakan Debian, Ubuntu, serta SUSE juga terlihat mirip
Namun upstream tidak mengomunikasikan ini secara jelas sebagai sebuah kerentanan, dan Linus maupun Greg memang cenderung tidak terlalu menganggap penting klasifikasi seperti itu di kernel
Meski begitu, karena ini memungkinkan eskalasi hak akses ke root dari lokal, secara umum rasanya tetap layak dianggap prioritas tinggi
https://ubuntu.com/security/cves/about#priority
Agak disayangkan karena tidak langsung tertulis di artikel utama versi kernel mana yang rentan dan di versi mana sudah dipatch
Terutama karena ini modul builtin sehingga tidak mudah dicabut dengan
rmmodSaat mencari tahu apakah kernel 6.19.14 di Fedora 44 rentan, saya menemukan posting mailing list linux-cve-announce https://lore.kernel.org/linux-cve-announce/2026042214-CVE-2026-31431-3d65@gregkh/T/#u
Di sana tertulis bahwa ini diperbaiki oleh commit terkait masing-masing di 6.18.22, 6.19.12, dan 7.0, jadi itu cukup membantu sebagai referensi
Jika ingin memeriksa apakah modul kernel
algif_aeadbenar-benar diblok lewat konfigurasi modprobe sesuai mitigasi yang direkomendasikan, tidak perlu menjalankan shell code yang diobfuscate bulat-bulatDengan beberapa baris Python seperti di bawah ini, Anda bisa mengecek secara lebih mudah dibaca apakah modulnya benar-benar termuat
python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))")); print("algif_aead probably successfully loaded, mitigation not effective; remove again with: rmmod algif_aead")'Jika mitigasinya diterapkan dengan benar,
modprobe algif_aeadjuga seharusnya gagal dengan errorTentu tidak ada orang yang menjalankan agen AI otonom penuh dengan hak pengguna biasa pada sistem operasi yang terdampak
Jika digabungkan dengan prompt injection zero-day, ini bisa jadi cukup katastrofik
curl | shsebagai standar industriLPE berarti local privilege escalation
Singkatan di bidang keamanan terlalu banyak, dan meskipun bisa ditebak dari konteks, tetap saja sebaiknya ditulis lengkap saat pertama kali muncul
Tetapi saya setuju bahwa untuk tulisan yang ditujukan ke pembaca yang lebih luas, lebih baik didefinisikan secara eksplisit
Apalagi keseluruhan artikel ini juga terlihat seperti hasil generasi AI
Ini agak lucu
Halamannya menulis bahwa ini bekerja di RHEL 14.3, padahal versi seperti itu tidak ada
Saat ini RHEL masih 10.x, jadi rasanya seperti naik TARDIS
Kadang muncul seperti
gcc (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2), dan jejak serupa juga terlihat pada contoh-contoh di bawah inihttps://github.com/anthropics/claude-code/issues/40741
https://docs.oracle.com/en/database/oracle/tuxedo/22/otxig/software-requirements-red-hat-enterprise-linux-10-64-bit.html
6.12.0-124.45.1.el10_1, dan itu jelas kernel RHEL 10Salah ketik seperti ini justru lebih sering dilakukan manusia
Angka panjang hasil copy-paste akurat, tetapi angka yang mudah malah salah karena diketik manual
Ada proses pengumpulan informasi secara terburu-buru untuk menjelaskan isu ini, dan ya, memang ada unsur pemasaran juga
Jadi ada beberapa kesalahan kecil yang ikut masuk, dan saya rasa wajar untuk berterima kasih karena itu ditunjukkan
https://access.redhat.com/articles/red-hat-enterprise-linux-release-dates
Setelah melihat bagian "Talk to our security experts" di bagian bawah halaman, saya jadi merasa jangan-jangan nama ahli keamanannya Claude
Di RHEL 9/10, algif_aead bukan modul melainkan builtin, jadi tidak bisa di-unload
Karena itu saya mencari cara memblokir AF_ALG lewat systemd sebagai opsi terbaik berikutnya, dan diperlukan drop-in untuk tiap layanan yang terekspos
Ada juga playbook Ansible yang biasanya menangani
sshddanuser@yang paling pentinghttps://gist.github.com/m3nu/c19269ef4fd6fa53b03eb388f77464da
initcall_blacklist=algif_aead_initke opsi boot kernel lalu rebootSetelah itu, eksploitnya tidak lagi berjalan
Saya khawatir dengan jalur eksekusi lain seperti
cronjobdanslurmjob, dan akan bagus kalau ada cara agar semua proses mewarisinya secara global di level systemd, alih-alih harus ditambahkan ke tiap layanan satu per satuEksploit ini tampaknya bekerja dengan menukar biner SUID agar dijalankan sebagai PID 0
Namun situsnya mengklaim ini juga bisa kabur dari Kubernetes / container clusters dan CI runners & build farms, sementara saya tidak melihat penjelasan yang benar-benar mendukung skenario kabur dari kontainer, terutama user namespace escape
Saat saya coba di rootless Podman, seperti dugaan, saya tetap tidak bisa keluar dari kontainer
Mereka juga mengklaim bisa "menjadikan root semua distribusi Linux yang dirilis sejak 2017", tetapi pengujian nyatanya hanya empat, dan di Alpine itu tidak bekerja
Mereka sudah memberi teaser:
"Next: "From Pod to Host," how Copy Fail escapes every major cloud Kubernetes platform."https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72548b093ee3
Namun kemungkinan bisa dieksploitasi dalam praktik akan berbeda tergantung apakah itu rilis mayor terbaru atau kernel maintenance pada cabang lama
Meski begitu, setelah saya menjalankan PoC langsung di instance 24.04, kerentanannya tampak nyata dan memang terlihat seperti isu besar
Hanya saja jumlah distro yang terdampak tampaknya jauh lebih sedikit daripada yang diklaim, dan cukup jauh dari pernyataan semua distro sejak 2017
Misalnya, kalau interpretasi saya benar, Ubuntu bahkan sedikit terdampak di 16.04 EOL, dan dampak utama yang nyata tampaknya lebih ke kernel vendor yang baru mulai didistribusikan belakangan, seperti seri 6.17 semacam
linux-gcpdanlinux-oracle-6.7Hanya saja akan butuh tahap tambahan, dan Alpine pun mungkin tetap memiliki kerentanan dasarnya, hanya skripnya saja yang perlu disesuaikan
Pada akhirnya ini bukan eksploit universal yang sudah matang, melainkan PoC
Halamannya sendiri memang terasa agak vibecoded dan seperti iklan, tetapi kerentanannya nyata dan tingkat bahayanya tampak tinggi
Ini menjelaskan kenapa hari ini ada pembaruan keamanan besar, jadi saya harus menaikkan prioritas update
Mereka menemukan bug nyata, membantu mem-patch-nya, sehingga memberi kontribusi yang berarti bagi ekosistem OSS, sambil sekaligus menjual alat keamanan mereka sendiri
Hanya saja sekarang ini siapa yang masih membuat halaman web sepenuhnya manual, apalagi kalau pengembang kernel, jadi itu terasa masuk akal