Düşünün… Siz ya da herhangi biri, bir kurumun (veya sizin) bir Linux sunucusuna sadece normal kullanıcı hesabıyla giriş yapmışsınız. Firewall'lar var, SELinux açık, her şey "güvenli" görünüyor. Ve sonra… saniyeler içinde o makine tamamen sizin oluyor. Root. Tam yetki.
Theori ekibi, Linux çekirdeğinin en temel taşlarından birinde, tam 9 yıldır gizlenmiş devasa bir güvenlik açığı ortaya çıkardı: CVE-2026-31431 — kod adı "Copy Fail". CVSS skoru 7.8 (HIGH) değil, bu skor bu sefer yetersiz kalıyor. Çünkü bu açık, "yerel kullanıcı" diye küçümsediğimiz herkesi saniyeler içinde root yapıyor. Evet, okuduğunuz doğru: saniyeler içinde.
Bu Açık Tam Olarak Nedir?
Linux çekirdeğinde, kullanıcıların (yani bizim gibi normal hesapların) kriptografik işlemleri (şifreleme, doğrulama vb.) yapabilmesi için özel bir arayüz var: AF_ALG soket ailesi. Bu arayüz sayesinde programlar kernel'deki güçlü kripto motorunu kullanabiliyor.
2017 yılında kernel'e bir "performans iyileştirmesi" yapılmış. Bu iyileştirme, AEAD (Authenticated Encryption with Associated Data) adı verilen şifreleme türünde veriyi "yerinde" (in-place) işlemeye yönelikti. Yani veriyi kopyalamadan, doğrudan mevcut bellek sayfaları üzerinde çalışmak hedeflenmişti.
Ancak bu değişiklik, yıllar sonra beklenmedik bir yan etki yarattı. Özellikle authencesn(hmac(sha256),cbc(aes)) adlı algoritma kullanıldığında ve splice() sistem çağrısı devreye girdiğinde sorun ortaya çıkıyor.
Peki Mekanizma Nasıl Çalışıyor?
Adım adım, basitçe anlatalım.
- Saldırgan normal bir kullanıcı hesabı ile sisteme giriyor (hiçbir ekstra yetki yok).
- AF_ALG soketi oluşturup yukarıdaki algoritmaya bağlıyor.
splice()ile sistemdeki önemli bir dosyanın (örneğin/usr/bin/sugibi root yetkisiyle çalışan setuid binary'nin) bellekteki kopyasını (page cache) kripto işlem hattına "akıtıyor".- Kernel, 2017'deki optimizasyon yüzünden bu sayfaları "kaynak" ve "hedef" olarak aynı kabul ediyor.
- Kripto algoritması çalışırken, HMAC etiketi için 4 baytlık küçük bir "geçici alan" (scratch space) kullanıyor. Bu 4 bayt, yanlışlıkla setuid dosyasının page cache sayfasına yazılıyor.
- Saldırgan,
recvmsg()ile bu 4 baytı istediği gibi kontrol edebiliyor.
Sonuç: Dosya diskte hiç değişmiyor ama bellekteki kopyası bozuluyor. Saldırgan, bu bozulmayı tekrar tekrar yaparak dosyanın bellekteki haline küçük parçalar halinde kendi kodunu (shellcode) yerleştirebiliyor. Dosya çalıştırıldığında (mesela su komutu girildiğinde) bu kod devreye giriyor ve root yetkisi elde ediliyor.
Kernel "kopyalama" işini doğru yapmadığı için (Copy Fail), bellekteki setuid dosyalar saldırgana açılıyor. Hiç race condition (yarış durumu) yok, ekstra araç veya modül gerekmiyor. Sadece standart sistem çağrıları (socket, splice, sendmsg, recvmsg) kullanılıyor.
Theori ekibinin hazırladığı PoC (kanıt kodu) sadece 700 satır Python. Oldukça basit ve hızlı çalışıyor.
LTS Yanılgısı: Neden Sadece "Güncel" Olmak Yetmiyor?
Bu noktada çok kritik bir detayın altını çizmek gerekiyor. Birçoğumuz sunucularımızı kurarken "en kararlı ve güvenilir" olduğu için Long Term Support (LTS) sürümlerini tercih ediyoruz. Sisteminizin en güncel pakette olduğunu düşünüp rahatlayabilirsiniz, ancak bu büyük bir yanılgı olabilir.
Örneğin; şu an pek çok kurumun "güvenli" kabul ederek production ortamlarında kullandığı ve düzenli apt upgrade yaptığı Ubuntu 24.04 LTS sürümü de bu açıktan doğrudan etkileniyor. Çünkü açık, kernel'in çok temel bir mimari bileşeninde yatıyor ve yamaların (patch) bu kararlı LTS sürümlerine geriye dönük olarak (backport) hatasız bir şekilde uyarlanması zaman alabiliyor.
Yani sisteminizin kendi repolarına göre "güncel" olması, o an güvende olduğunuz anlamına gelmiyor. Zafiyetin doğasını anlamak ve resmi yamalar dağıtılana kadar proaktif geçici önlemleri (mitigation) almak bu yüzden hayati önem taşıyor.
Etkilenen Sistemler
Kernel Aralığı: Linux kernel 4.14'ten 7.0-rc'ye kadar neredeyse tüm sürümler etkileniyor.
| Dağıtım | Durum |
|---|---|
| Ubuntu 24.04 LTS | 🔴 Etkileniyor |
| RHEL 10 | 🔴 Etkileniyor |
| Amazon Linux 2023 | 🔴 Etkileniyor |
| SUSE | 🔴 Etkileniyor |
Ne Yapmalıyız? — Pratik Adımlar
1. Kernel güncellemesi yapın
En az 6.18.22, 6.19.12 veya Linux 7.0 ve üstü sürümlere geçin. Dağıtımınızın bu yamayı kendi LTS kernel'ine port edip etmediğini bültenlerinden kontrol edin.
2. Geçici koruma — bugün uygulayabilirsiniz
CONFIG_CRYPTO_USER_API_AEAD seçeneğini devre dışı bırakın (eğer kripto API'sini aktif kullanmıyorsanız).
3. Falco kuralını ekleyin
Sysdig'in Falco kuralını sunuculara ekleyin — AF_ALG soketlerinin anormal kullanımını izliyor.
4. Container ortamlarını sıkılaştırın
Docker, Kubernetes vb. kullanıyorsanız: AF_ALG soketlerini varsayılan olarak engelleyin (seccomp profili).
Özetle
Bu açık, kernel'in bellek yönetimindeki küçük bir hesaplama hatasından kaynaklanıyor. 9 yıldır orada duruyormuş ama şimdi fark edildi ve yaması yayınlandı. Tehlikeli evet, ama LTS rehavetine kapılmadan farkında olup sistemlerimizi proaktif olarak korursak tehlikeyi kolayca önleyebiliriz.
Kaynaklar
- NVD Resmi Kaydı: nvd.nist.gov/vuln/detail/CVE-2026-31431
- Sysdig Teknik Analiz: sysdig.com — CVE-2026-31431 Copy Fail
- Theori PoC: github.com/theori-io/copy-fail-CVE-2026-31431
Stay patched. Stay paranoid.