Logo
grkndev
Blog'a Dön

Linux Çekirdeğinde 9 Yıllık Kritik Açık: Copy Fail ile Root

May 1, 20264 dk okuma
Cyber Security
Linux
CVE
Kernel

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.

  1. Saldırgan normal bir kullanıcı hesabı ile sisteme giriyor (hiçbir ekstra yetki yok).
  2. AF_ALG soketi oluşturup yukarıdaki algoritmaya bağlıyor.
  3. splice() ile sistemdeki önemli bir dosyanın (örneğin /usr/bin/su gibi root yetkisiyle çalışan setuid binary'nin) bellekteki kopyasını (page cache) kripto işlem hattına "akıtıyor".
  4. Kernel, 2017'deki optimizasyon yüzünden bu sayfaları "kaynak" ve "hedef" olarak aynı kabul ediyor.
  5. 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.
  6. 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ımDurum
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


Stay patched. Stay paranoid.

Blog'a Dön