Dirty Pipe CVE-2022-0847, Celah Root di Kernel Linux
Dirty Pipe membuat pengguna biasa bisa menimpa file read-only dan naik ke root. Cek versi kernel terdampak, versi perbaikan, dan langkah amannya.
Jawaban singkat
Dirty Pipe (CVE-2022-0847) adalah celah kernel Linux sejak versi 5.8 yang memungkinkan pengguna lokal menimpa isi file yang hanya bisa dibaca, termasuk file milik root. Perbaikannya ada di kernel 5.16.11, 5.15.25, dan 5.10.102. Solusinya update kernel lalu reboot.
Daftar isi
Dirty Pipe (CVE-2022-0847) adalah celah di kernel Linux yang membuat pengguna tanpa hak istimewa bisa menimpa isi file yang seharusnya hanya bisa dibaca, lalu memakainya untuk menjadi root. Celah ini ada sejak kernel 5.8 dan diperbaiki di versi 5.16.11, 5.15.25, dan 5.10.102 pada Februari 2022.
Kenapa ini penting untuk pemilik server? Karena celah eskalasi hak akses adalah langkah kedua favorit penyerang. Setelah berhasil masuk lewat plugin website yang bolong atau akun SSH yang lemah, mereka biasanya hanya punya hak pengguna biasa. Dirty Pipe mengubah akses terbatas itu menjadi kendali penuh atas server.
CVE-2022-0847
Tinggi · CVSS 7.8- Produk terdampak
- Linux kernel
- Versi terdampak
- 5.8 sampai sebelum 5.16.11, 5.15.25, 5.10.102
- Versi aman
- 5.16.11, 5.15.25, 5.10.102
- Status
- Patch tersedia
- Diumumkan
- 7 Maret 2022
Bagaimana celah ini ditemukan?
Ceritanya cukup unik. Max Kellermann dari CM4all (bagian dari IONOS) menyelidiki keluhan file log akses yang rusak di server mereka. Tiket pertama masuk April 2021, dan butuh waktu berbulan-bulan sampai ia menyadari bahwa kerusakan itu berasal dari bug kernel, bukan aplikasi.
Pada 20 Februari 2022 ia mengirim laporan, contoh eksploit, dan patch ke tim keamanan kernel. Perbaikan masuk ke kernel stabil pada 23 Februari 2022, dan detailnya diumumkan ke publik pada 7 Maret 2022. Ia juga berhasil mereproduksi bug ini di ponsel Android, sehingga tim keamanan Android ikut dikabari.
Apa yang sebenarnya salah di kernel?
Linux memakai "pipe" untuk mengalirkan data antarproses, dan sistem panggilan splice() bisa memasukkan halaman file dari page cache langsung ke pipe tanpa menyalinnya. Setiap buffer di pipe punya kolom flags.
Bug-nya: saat buffer baru dibuat untuk halaman page cache, kolom flags itu tidak dikosongkan. Sejak kernel 5.8, flag PIPE_BUF_FLAG_CAN_MERGE menentukan apakah data yang ditulis berikutnya boleh digabung ke buffer yang sudah ada. Kalau flag sisa itu masih menyala, data tulisan penyerang ikut masuk ke halaman page cache milik file, padahal file itu hanya dibuka untuk dibaca.
Hasilnya, penyerang bisa menimpa isi file yang bisa ia baca, termasuk file yang tidak boleh ia ubah. Contoh yang dipakai peneliti adalah menambahkan kunci SSH ke /root/.ssh/authorized_keys. Cara lain yang banyak beredar adalah menimpa program SUID atau file sistem seperti /etc/passwd di memori.
Batasan Dirty Pipe yang perlu kamu tahu
Celah ini kuat, tapi tidak tanpa syarat. Menurut tulisan penemunya, ada beberapa batasan:
- Penyerang harus sudah punya akses lokal di server, misalnya akun shell atau kemampuan menjalankan kode lewat aplikasi. Dirty Pipe bukan celah yang bisa dipakai langsung dari internet.
- File harus bisa dibaca oleh penyerang.
- Tidak bisa menulis tepat di awal halaman memori (batas page), dan tulisan tidak bisa melewati batas page.
- Ukuran file tidak bisa diperbesar.
- Perubahan hanya ada di page cache. Setelah reboot atau saat kernel membuang halaman itu, isi file kembali seperti semula, kecuali halaman itu kemudian ditandai berubah dan ditulis ke disk.
Poin terakhir membuat Dirty Pipe sulit dilacak. Isi file di disk bisa terlihat normal, padahal yang dibaca program selama server menyala sudah diubah.
Kernel mana yang terdampak?
Ringkasan berikut memakai data dari penemunya dan NVD. Cek versi kernel dengan uname -r.
| Rentang kernel | Status | Tindakan |
|---|---|---|
| Di bawah 5.8 (misalnya 4.19, 5.4) | Tidak terdampak Dirty Pipe | Tetap update untuk celah lain |
| 5.10 sebelum 5.10.102 | Terdampak | Update ke 5.10.102 atau lebih baru |
| 5.15 sebelum 5.15.25 | Terdampak | Update ke 5.15.25 atau lebih baru |
| 5.16 sebelum 5.16.11 | Terdampak | Update ke 5.16.11 atau lebih baru |
| 5.17 ke atas | Sudah memuat perbaikan | Tidak perlu tindakan khusus |
Satu hal penting: distribusi seperti Ubuntu, Debian, dan RHEL sering memakai nomor kernel sendiri dan memasukkan patch tanpa mengubah angka versi utama. Jadi jangan menilai hanya dari angka uname -r. Cocokkan dengan pengumuman keamanan distribusimu, atau cukup pastikan kernel sudah versi terbaru dari repositori resmi.
Langkah praktis untuk server kamu
Dirty Pipe tercantum di katalog KEV CISA sejak 25 April 2022, artinya sudah terbukti dipakai dalam serangan nyata. Untuk server produksi, urutannya sederhana:
- Cek kernel yang sedang berjalan dengan
uname -r. - Update paket kernel:
sudo apt update && sudo apt full-upgradedi Debian/Ubuntu, atausudo dnf update kerneldi AlmaLinux/Rocky. - Reboot server. Kernel baru tidak aktif sebelum reboot, dan ini langkah yang paling sering terlupa.
- Jalankan
uname -rlagi untuk memastikan kernel baru sudah dipakai. - Periksa akun lokal dan kunci SSH di
/root/.ssh/authorized_keysbila server pernah dipakai bersama atau kamu curiga ada akses tidak sah.
Selain menambal, kurangi peluang penyerang mendapat akses lokal sejak awal. Langkah dasarnya ada di panduan mengamankan VPS Linux baru, dan penjelasan soal skor 7.8 yang "hanya" tinggi (bukan kritis) bisa kamu baca di cara membaca skor CVSS. Skor itu lebih rendah karena butuh akses lokal, tapi dampaknya tetap penuh begitu penyerang sudah di dalam.
Mengapa celah lokal tetap harus diprioritaskan?
Banyak tim menunda patch celah lokal karena merasa servernya tidak punya pengguna lain. Kenyataannya, setiap proses yang berjalan di server adalah "pengguna lokal": web server, PHP, aplikasi Node.js, sampai cron job. Kalau salah satunya berhasil dibobol, Dirty Pipe memberi jalan pintas ke root.
Untuk server hosting bersama, panel dengan banyak akun, atau server CI yang menjalankan kode dari banyak orang, risikonya jauh lebih besar. Di lingkungan seperti itu, celah eskalasi hak akses sebaiknya ditambal secepat celah jarak jauh.
Pertanyaan yang sering diajukan
Apakah Dirty Pipe bisa dipakai menyerang server dari internet?
Tidak secara langsung. Penyerang perlu bisa menjalankan kode di server lebih dulu, misalnya lewat aplikasi web yang bolong. Dirty Pipe dipakai sebagai langkah kedua untuk naik ke root.
Apakah cukup memperbarui paket tanpa reboot?
Tidak. Kernel baru baru dipakai setelah reboot, kecuali kamu memakai layanan live patching dari distribusi yang memang mendukung perbaikan ini.
Apa bedanya dengan Dirty COW?
Dirty COW (CVE-2016-5195) adalah celah lama di mekanisme copy-on-write kernel dengan dampak mirip. Dirty Pipe berasal dari bug yang berbeda di pipe dan lebih mudah dieksploitasi karena tidak bergantung pada race condition.


