CVE-2026-31431 adalah kerentanan peningkatan hak istimewa lokal berseverity tinggi pada kernel Linux. Dokumen ini menjelaskan cara menerapkan mitigasi sementara dengan menonaktifkan pembuatan socket AF_ALG menggunakan RPM livepatch—tanpa perlu reboot. Terapkan mitigasi ini hanya jika layanan Anda tidak bergantung pada socket AF_ALG.
-
Setelah menerapkan solusi ini, proses apa pun yang bergantung pada socket
AF_ALGakan gagal membuatnya, yang dapat menyebabkan layanan Anda tidak tersedia. Jangan terapkan solusi ini kecuali Anda yakin layanan Anda tidak bergantung pada socketAF_ALG. -
Solusi ini membawa risiko stabilitas. Terapkan secara bertahap—jangan langsung diterapkan ke seluruh lingkungan produksi sekaligus.
-
Selama penerapan bertahap, pantau secara ketat stabilitas layanan, log error, dan metrik performa. Segera kembalikan ke kondisi semula jika Anda mendeteksi anomali apa pun.
Latar Belakang
CVE-2026-31431 adalah kerentanan peningkatan hak istimewa lokal berseverity tinggi pada modul algif_aead kernel Linux.
Dengan menyusun urutan tertentu dari panggilan socket AF_ALG yang dikombinasikan dengan panggilan sistem splice(), penyerang dapat melewati pemeriksaan izin standar dan melakukan penulisan tidak sah sebesar 4 byte ke cache halaman file arbitrer. Penyerang mengeksploitasi celah ini untuk mengubah citra dalam memori program setuid seperti /usr/bin/su, sehingga meningkatkan hak dari pengguna biasa menjadi root tanpa mengubah konten file di disk.
Untuk informasi lebih lanjut, lihat [Pemberitahuan Keamanan] Risiko kerentanan peningkatan hak istimewa lokal pada kernel Linux (CVE-2026-31431).
Batasan
Mitigasi ini menonaktifkan semua operasi Enkripsi dan dekripsi yang menggunakan socket AF_ALG di level kernel. Layanan yang bergantung pada operasi tersebut akan berhenti berfungsi. Pastikan apakah layanan Anda bergantung pada socket AF_ALG sebelum menerapkan mitigasi ini. Jika Anda tidak yakin apakah layanan Anda bergantung pada fitur socket AF_ALG, jangan lanjutkan.
Untuk memeriksa apakah layanan Anda menggunakan socket AF_ALG untuk operasi kriptografi tingkat kernel, gunakan auditd atau eBPF (extended Berkeley Packet Filter) untuk memantau pembuatan socket AF_ALG. Contoh berikut menggunakan auditd:
# Pertama, pastikan layanan auditd telah diaktifkan.
systemctl start auditd
# Jika aturan audit lain sudah dikonfigurasi di sistem, backup terlebih dahulu dan evaluasi dampaknya.
# Tambahkan aturan audit untuk socket AF_ALG.
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
# Setelah periode tertentu, periksa hasil audit.
ausearch -k afalg_socket -ts recent -i
# Hasil yang diharapkan: Jika ada proses yang membuat socket AF_ALG selama periode ini, catatan audit akan ditampilkan.
# Setelah selesai, hapus aturan audit untuk socket AF_ALG.
auditctl -d always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
Pemeriksaan ini hanya sebagai referensi dan tidak dapat sepenuhnya menjamin tidak adanya ketergantungan pada AF_ALG. Tinjau juga kode sumber aplikasi, daftar dependensi, dan perilaku waktu proses Anda.
Terapkan mitigasi
Sebelum melanjutkan, pastikan bahwa layanan Anda tidak bergantung pada fungsionalitas socket AF_ALG dan Anda dapat menerima batasan pada fitur terkait AF_ALG.
Langkah 1: Periksa prasyarat
Sebelum menerapkan, verifikasi bahwa sistem Anda memenuhi kedua kondisi berikut:
-
Kernel telah mengaktifkan dukungan livepatch.
-
Paket kernel-devel untuk versi kernel saat ini telah terinstal.
# 1. Periksa apakah paket kernel-devel untuk kernel yang sedang berjalan telah terinstal.
test -d "/lib/modules/$(uname -r)/build" && echo "kernel-devel OK" || echo "Silakan instal kernel-devel-$(uname -r)"
# Jika paket belum terinstal, instal dengan perintah berikut:
sudo yum install -y kernel-devel-$(uname -r)
# 2. Periksa apakah dukungan livepatch telah diaktifkan di kernel.
test -d /sys/kernel/livepatch && echo "livepatch sysfs OK"
Langkah 2: Instal paket RPM
# 1. Unduh paket RPM sesuai versi sistem operasi Anda. (Tautan unduhan dilindungi oleh allowlist. Untuk mendapatkan tautan resmi, bergabunglah ke grup DingTalk 179525012975.)
# 2. Instal paket RPM. Contohnya, pada Alibaba Cloud Linux 3:
sudo yum install disable-af-alg-livepatch-1.0.0-1.al8.noarch.rpm
Jika Anda memperbarui kernel, instal ulang paket RPM yang sesuai agar mitigasi tetap aktif.
Langkah 3: Verifikasi mitigasi
Metode 1: Periksa status livepatch
Metode ini berlaku untuk Alibaba Cloud Linux 3 dan Alibaba Cloud Linux 4:
# Periksa status livepatch.
kpatch list
# Output yang diharapkan: "disable_af_alg [enabled]" muncul dalam daftar "Loaded patch modules:".
Metode 2: Verifikasi pemblokiran socket AF_ALG
Jalankan skrip Python berikut untuk memastikan pembuatan socket AF_ALG diblokir:
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(38, socket.SOCK_SEQPACKET, 0) # 38 = AF_ALG
print("AF_ALG socket create: SUCCESS (Mitigation is not effective)")
s.close()
except OSError as e:
if e.errno == errno.EAFNOSUPPORT:
print(f"AF_ALG socket create: FAILED (Mitigation is effective)")
else:
print(f"AF_ALG socket create: FAILED (Unexpected error),errno={e.errno}, msg={e.strerror}")
PY
Pengembalian (Rollback)
Jika Anda mengalami gangguan layanan setelah penerapan, uninstall mitigasi tersebut:
sudo yum remove disable-af-alg-livepatch
Setelah menguninstall, jalankan skrip verifikasi untuk memastikan intersepsi socket AF_ALG telah dihapus.