Hoşgeldin Misafir

Linux Kernel Use-After-Free: Race Condition'larla Privilege Escalation

Conrado Sol

29 Nis 2026
59 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Selam, bugün linux tarafında baya derin bi konuya dalalım. Use-after-free (UAF) zafiyetleri kernel seviyesinde hâlâ en tehlikeli şeylerden biri. Bazen (baxen) race condition'larla birleşince direkt root'a giden yol açabiliyor. Normal kullanıcı modunda bi struct'ı free'leyip sonra aynı pointer'ı kullanırsan crash alırsın ama kernelde iş değişiyor, slab allocator ve kmalloc detayları devreye giriyor.

Temelde şöyle çalışıyor: Bir yapı (mesela struct cred) allocate ediliyor, bir thread onu kullanıyo, diğer thread ise onu free'liyor. Eğer timing tam tutturulursa free'lenen alan başka bir yapı için yeniden allocate ediliyor ve eski pointer üzerinden yazma/oku yapabiliyorsun. Bu sayede cred struct'ını overwrite edip uid/gid değerlerini 0 yapabiliyorsun.

Pratikte çoğu exploit, setxattr + userfaultfd kombinasyonuyla race'i stabilize ediyor. Kernel 5.10-5.15 arası birçok distroda benzer pattern'lar hâlâ exploit edilebiliyor.

5uvx1q9.png


Python:
import ctypes
import os

# Basit bir UAF tetikleyici PoC iskeleti (gerçek exploit değil)
libc = ctypes.CDLL("libc.so.6")
# userfaultfd + madvise ile sayfa fault taklidi
print("[*] Race condition penceresi oluşturuluyor...")
# exploit kodu burada kmalloc/free + setxattr loop'u olurdu

Bu tarz açıklar genelde kernelde SLUB allocator'ın freelist pointer'larını bozarak da sömürülüyo. Blue team tarafı için en etkili savunma, kernel'i mümkün olduğunca güncel tutmak ve grsecurity/PaX patch'lerini uygulamak. Senin sisteminde de /proc/sys/kernel/unprivileged_userns_clone gibi ayarları kapatırsan saldırı yüzeyini baya daraltırsın.
İsterseniz bu konuyu daha da derinleştirip belirli bir CVE'nin (mesela CVE-2022-2588 tarzı) exploit akışını da anlatırım..