- Dirty Frag adalah kerentanan eskalasi hak istimewa lokal universal yang memungkinkan perolehan hak root di berbagai distribusi Linux utama, dan karena jadwal responsible disclosure serta embargo telah rusak, belum ada patch maupun CVE
- Sebagai perluasan dari kelas bug seperti Dirty Pipe dan Copy Fail, karena ini adalah bug logika deterministik, race condition tidak diperlukan dan tingkat keberhasilannya sangat tinggi
- Masa berlaku efektif kerentanan ini sekitar 9 tahun, dan telah diuji pada distribusi utama seperti Ubuntu, RHEL, Fedora, dan openSUSE
- Bahkan pada sistem yang telah menerapkan mitigasi Copy Fail yang ada (blacklist
algif_aead), sistem tersebut tetap rentan terhadap Dirty Frag
- Sebagai mitigasi sementara hingga patch distribusi tersedia, disarankan untuk menghapus modul esp4, esp6, dan rxrpc yang memicu kerentanan
Ringkasan
- Kelas bug yang mengotori anggota
frag dari struktur sk_buff, merupakan perluasan dari kelas bug yang sama dengan Dirty Pipe dan Copy Fail
- Dengan merangkai kerentanan xfrm-ESP Page-Cache Write dan RxRPC Page-Cache Write, dimungkinkan memperoleh hak root pada distribusi Linux utama
- Karena merupakan bug logika deterministik, tidak bergantung pada timing window, sehingga race condition tidak diperlukan
- Bahkan saat eksploit gagal, kernel panic tidak terjadi, dan tingkat keberhasilannya sangat tinggi
Alasan merangkai dua kerentanan
- xfrm-ESP Page-Cache Write menyediakan primitif STORE 4-byte arbitrer yang kuat mirip dengan Copy Fail dan disertakan di sebagian besar distribusi, tetapi memerlukan izin pembuatan namespace
- Pada Ubuntu, dalam beberapa kasus kebijakan AppArmor memblokir pembuatan user namespace tanpa hak istimewa, sehingga dalam lingkungan ini xfrm-ESP Page-Cache Write tidak dapat dipicu
- RxRPC Page-Cache Write tidak memerlukan izin pembuatan namespace, tetapi modul
rxrpc.ko sendiri tidak disertakan di sebagian besar distribusi
- Namun, pada Ubuntu modul
rxrpc.ko dimuat secara default
- Dengan merangkai kedua kerentanan tersebut, kelemahan masing-masing saling melengkapi, sehingga perolehan hak root dimungkinkan di semua distribusi utama
Hubungan dengan Copy Fail
- Copy Fail adalah motivasi yang memulai riset ini
- xfrm-ESP Page-Cache Write berbagi sink yang sama dengan Copy Fail, tetapi dapat dipicu terlepas dari ketersediaan modul
algif_aead
- Bahkan pada sistem yang telah menerapkan mitigasi Copy Fail yang dipublikasikan (blacklist
algif_aead), sistem tetap rentan terhadap Dirty Frag
Cakupan dampak
- xfrm-ESP Page-Cache Write: dari commit
cac2661c53f3 (2017-01-17) hingga upstream
- RxRPC Page-Cache Write: dari commit
2dc334f1a63a (2023-06) hingga upstream
- Masa berlaku efektif kerentanan sekitar 9 tahun
- Versi distribusi yang telah diuji:
- Ubuntu 24.04.4: 6.17.0-23-generic
- RHEL 10.1: 6.12.0-124.49.1.el10_1.x86_64
- openSUSE Tumbleweed: 7.0.2-1-default
- CentOS Stream 10: 6.12.0-224.el10.x86_64
- AlmaLinux 10: 6.12.0-124.52.3.el10_1.x86_64
- Fedora 44: 6.19.14-300.fc44.x86_64
Mitigasi
Latar belakang publikasi
- Setelah berdiskusi dengan para maintainer linux-distros@vs.openwall.org, dokumen Dirty Frag dipublikasikan atas permintaan mereka
- Embargo telah rusak karena faktor eksternal, dan saat ini belum ada patch maupun CVE
- PoC dipublikasikan melalui koordinasi dengan linux-distros untuk memberikan informasi yang akurat, dan dilarang digunakan pada sistem tanpa izin
2 komentar
Komentar Hacker News
Ini sangat mirip dengan Copy Fail baik dari akar penyebab maupun cara eksploitnya.
Menurut saya ini contoh yang bagus tentang hal yang mudah hilang ketika terlalu banyak menyerahkan pekerjaan ke LLM, yaitu eksplorasi. Saat meneliti kerentanan dengan AI, terasa kreativitas cukup terhambat. Dalam alur di mana jawaban langsung muncul begitu bertanya, kita jadi tidak melihat apa yang ada di sekeliling. Seperti jin, ia hanya memberi tepat apa yang diminta dan tidak lebih
Peneliti yang menemukan Copy Fail sangat bergantung pada AI setelah melihat sesuatu yang mencurigakan, tetapi jika ia sendiri membongkar lebih banyak kode, mungkin akan ada lebih banyak peluang menemukan bug kembar seperti ini. Di saat yang sama, kalau prompt-nya dibuat sedikit kurang mengarahkan, LLM terbaru pun tampaknya bisa menemukan bug-bug ini. Ini contoh sinergi negatif yang cukup aneh: bekerja bersama tetapi hasilnya justru menurun
pada copy.fail yang diperbaiki justru hal yang salah, dan orang-orang terlalu cepat menyalahkan AF_ALG
[edit: benar, ini masalah authencesn yang sama. Di kode https://github.com/V4bel/dirtyfrag/blob/892d9a31d391b7f0fccb... authencesn hanya muncul di komentar, tetapi tetap masalah yang sama]
[edit2: masalah RxRPC itu terpisah, yang dimaksud di sini adalah sisi ESP]
Saya paham soal kreativitas. Seperti alat apa pun, AI bisa mempersempit pandangan. Sulit memakainya hanya sebagai pendamping tanpa menyerahkan seluruh alur kerja
Selain jika kedua kerentanan itu diungkap bersamaan sebagai satu paket, saya penasaran dalam situasi kontrafaktual seperti apa ini akan dianggap sebagai “eksplorasi yang cukup baik”
“Karena embargo bocor, tidak ada patch atau CVE untuk kerentanan-kerentanan ini”
Tautan: https://github.com/V4bel/dirtyfrag
Analisis rinci: https://github.com/V4bel/dirtyfrag/blob/master/assets/write-...
Bagian pentingnya adalah ini: “Copy Fail adalah motivasi awal riset ini. Secara khusus, xfrm-ESP Page-Cache Write dalam rantai kerentanan Dirty Frag memakai sink yang sama dengan Copy Fail. Namun, ia terpicu terlepas dari apakah modul algif_aead dapat digunakan atau tidak. Dengan kata lain, bahkan pada sistem yang sudah menerapkan mitigasi Copy Fail yang dipublikasikan, yaitu blacklist algif_aead, Linux tetap rentan terhadap Dirty Frag”
Mitigasinya disebut sebagai berikut, walau saya sendiri belum menguji atau memverifikasinya: “Karena jadwal responsible disclosure dan embargo sudah bocor, tidak ada patch untuk distro mana pun. Hapus modul pemicu kerentanan dengan perintah berikut”
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"Dalam pembahasan mitigasi disebutkan bahwa reboot mungkin diperlukan, atau pada mesin yang sudah dieksploitasi, setelah perintah di atas harus menjalankan:
sudo echo 3 > /prox/sys/vm/drop_cachessudo echo 3 > /prox/sys/vm/drop_caches, sudo tidak ada efeknya. sudo hanya menjalankan echo, bukan penulisan aktualnyaDan kalau mesin sudah dieksploitasi, itu sudah terlambat. Apa pun di dalam disk bisa saja sudah rusak, jadi seluruh image disk harus dibangun ulang
sudo echodan redirection tidak bisa dipakai seperti ituecho 3 | sudo tee /proc/sys/vm/drop_cachesatau
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'Dan typo
/procjuga sudah saya perbaikiecho 1 > .... Tidak perlu mengosongkan semuanya, cukup hapus page cache dengan1Saya uji lokal di Ubuntu 26.04: saya menjalankan exploit dan mendapat root, memasang mitigasi, lalu menjalankan lagi
sutanpa argumen dan langsung jadi root tanpa kata sandi. Setelah page cache dibersihkan,sukembali meminta kata sandiKita butuh cara mudah untuk memastikan hanya modul kernel yang ada di whitelist yang bisa dimuat. Saya lelah terus memasukkan modul yang bahkan tidak diperlukan ke blacklist
Saya tanya lagi, kenapa di copy.fail yang kena semua tuduhan itu algif_aead? Yang bodoh itu authencesn
authencesn tidak diperbaiki, dan sekarang inilah akibatnya. Ternyata lewat soket jaringan biasa pun bisa mengakses penulisan di luar batas yang sama, atau mungkin memang yang sama persis
Seharusnya ini terpikirkan, tetapi ternyata tidak
[edit: yang saya maksud adalah masalah lewat ESP. Masalah RxRPC, setahu saya, sepenuhnya terpisah]
Kalau ini benar-benar bekerja di semua distro besar, saya terus dibuat heran oleh betapa tidak bertanggung jawabnya para maintainer. Kenapa fitur kernel opsional yang mungkin berguna bagi kurang dari 0,1% pengguna justru aktif secara default?
Rasanya seperti praktik distro Linux tahun 1999 yang mengirim instalasi default dengan puluhan layanan jaringan terbuka ke internet. Padahal sekarang bukan 1999
Saya ingat masa awal Linux dulu saat menjalankan
make menuconfiguntuk memilih persis fitur yang diinginkan di kernel. Jujur saja, saya tidak ingin kembali ke masa ituMeski begitu, target yang mudah diperbaiki di sini adalah RHEL. RHEL tidak menjadikan banyak hal sebagai modul yang bisa dimuat, tetapi langsung mengompilasinya ke dalam kernel, sehingga mitigasi seperti copy fail tidak mungkin dilakukan. Mungkin bagian-bagian seperti itu bisa sedikit dikurangi
Maintainer distro Linux adalah maintainer perangkat lunak paling bertanggung jawab di planet ini. Praktik keamanannya jauh lebih baik daripada package manager bahasa pemrograman yang bodoh, mereka memelihara daftar paket yang dikurasi, meninjau perubahan, menambal bug, menyelesaikan masalah packaging yang rumit, melakukan backport perbaikan, memakai rilis bertahap, mendistribusikan file lewat mirror di seluruh dunia, dan memverifikasi semua file secara kriptografis. Dan jangan lupa semua itu mereka lakukan gratis
Kalau penyerang sudah bisa melakukan semua itu, kondisinya memang sudah buruk. Naik hak akses menjadi root lewat ini hanyalah masalah kecil pada titik tersebut
Seperti yang diposting orang lain di bawah: https://xkcd.com/1200/
Sebelum panik, orang-orang perlu memahami dulu sebenarnya kerentanan ini itu apa
Setelah sekian lama, akhirnya kita sampai juga pada kondisi “dengan cukup banyak mata, semua bug itu dangkal”, dan rasanya tidak enak. Mulai sekarang apakah kita harus melakukan pembaruan kernel beberapa kali seminggu?
Saya penasaran bagaimana embargo ini bocor. Apakah ada kebocoran, atau pihak ketiga menemukannya secara independen?
Linux itu open source, jadi semua patch yang memperbaiki bug keamanan langsung terlihat oleh semua orang. Dengan cara kerja pengembangan kernel, tidak ada cara untuk menghindarinya. Yang orang sebut “embargo” itu adalah gagasan agak bodoh bahwa jika deskripsi patch tidak secara terang-terangan menulis “THIS IS A LPE” dan semua orang tutup mulut, maka kita bisa pura-pura kerentanannya belum bocor sampai pesan “resmi” dikirim ke mailing list
Dulu pendekatan ini mungkin masih bisa sedikit dibela, tetapi di era LLM, diff dari mailing list bisa dimasukkan ke pipeline otomatis ke model terbaru untuk mengidentifikasi apakah itu patch yang memperbaiki isu keamanan, sehingga pendekatan ini bukan hanya bodoh tetapi juga berbahaya
https://x.com/encrypted_past/status/2052409822998392962
Ada yang tahu apakah Debian rentan? Saya mencoba exploit pada mesin Debian 12 dan Debian 13, tetapi tidak berhasil mereproduksinya sendiri
Bagi orang di Bookworm yang tidak memakai security stream paket Debian, kernel 6.1.0-42-amd64 ternyata memang kebal terhadap copy.fail. Mengejutkan bahwa ia juga tampak kebal terhadap dirtyfrag. Jika security stream belum menambalnya, Anda bisa memilih versi kernel yang masih mempertahankan commit 2b8bbc64b5c2. Saya menduga commit yang sama juga mungkin secara tidak sengaja membuat beberapa versi kernel Debian 12 aman dari dirtyfrag
Menjalankannya dari kontainer
ubuntu:latestsebagai pengguna default barugit clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./expHasil:
dirtyfrag: failed (rc=3)Kabar baik!
copy fail bisa dipakai untuk container escape (https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kuber...), jadi saya menduga exploit ini juga hanya butuh sedikit perubahan
Komentar Lobste.rs
Benar-benar minggu yang luar biasa untuk mengelola server Linux bersama. Meski begitu, saya suka karena pengungkapan kali ini langsung menjelaskan inti masalahnya
Tapi saya tidak paham kenapa semua orang menyembunyikan
stderrdalam panduan mitigasiEdit: ini katanya dilaporkan pada 30 April dengan “inspirasi” dari copy.fail, jadi ditemukan bahkan belum sampai sehari kemudian? Mengesankan
Sebagai orang yang punya hak sudo di server bersama yang cukup besar, saya juga penasaran apakah mengompilasi kernel sendiri dengan menyertakan modul sesedikit mungkin adalah ide yang bagus. Saya belum benar-benar menimbang plus minusnya secara mendalam, tetapi rasanya itu mungkin bisa menghindari dua kerentanan eskalasi hak akses lokal minggu ini
Edit 2:
Oh, yang ini tidak butuh
setuid. Senang ini disertakanApakah memungkinkan dan masuk akal untuk mengambil daftar modul kernel yang dimuat pada sistem yang sedang berjalan lalu menetapkannya sebagai allowlist
modprobeuntuk sistem itu?Baik CopyFail maupun DirtyFrag tampaknya mengeksploitasi modul kernel yang tidak dimuat di sistem mana pun yang saya periksa. Kalau begitu, memblokir modul yang jelas-jelas tampak tidak diperlukan mungkin bisa memitigasi sebagian serangan lebih awal, bukan?
2026-05-07: Detailed information and the exploit for this vulnerability were published publicly by an unrelated third party, breaking the embargo.Saya tidak mengerti bagaimana hal seperti ini bisa dibiarkan. Rasanya benar-benar tidak masuk akal bahwa informasi sebesar ini berada di lingkungan yang sulit dipercaya seperti itu
Pihak ketiga mana pun yang memantau commit Linux mungkin saja menangkap petunjuk yang sama dan membuat exploit
“Lingkungan yang sulit dipercaya” di sini adalah seluruh internet, dan pada praktiknya hampir tidak ada yang bisa disebut benar-benar terisolasi. Dulu memang sudah begitu, sekarang hanya makin jelas. Tulisan terbaru Stefan Eissing tentang bug Apache httpd yang ditemukan ulang dua kali sebelum diperbaiki juga layak dibaca
Apakah ada cara untuk menguji apakah modul yang terdampak benar-benar tidak bisa dimuat?
Saat CopyFail, saya sempat salah saat pertama menerapkan mitigasi. Nama file di
/etc/modprobe.d/tidak diakhiri dengan.conf, dan saya tidak menyadarinya sampai menjalankan perintah pengujian dari https://news.ycombinator.com/item?id=47954159. Apakah ada perintah serupa untuk modulesp4/esp6/rxrpc?modprobedan muncul error yang sama seperti sebelumnyaAda juga kode proof-of-concept yang dilampirkan, tetapi saya belum mencobanya