Ne oldu?
29 Nisan 2026’da güvenlik şirketi Theori, Linux çekirdeğinde Copy Fail adını verdiği bir açığı duyurdu (CVE-2026-31431). Bilgisayarda normal bir hesabı olan herkes, 732 baytlık küçük bir Python betiğiyle root, yani tam yönetici yetkisi alabiliyordu. Araştırmacılar betiği Ubuntu 24.04, Amazon Linux 2023, RHEL 10.1 ve SUSE 16’da denedi; hiçbir ayar değiştirmeden hepsinde çalıştı.
Önemli bir sınır var: Bu bir yerel açık. İnternetten doğrudan saldırılamıyor. Saldırganın önce makinede kod çalıştırabilmesi gerekiyor: bir kullanıcı hesabı, bir SSH girişi ya da ele geçirilmiş bir web uygulaması gibi. Ama sunucularda bu ilk adım çoğu zaman en kolay kısım.
Nasıl çalışıyor?
Önce bir kavram: Sayfa önbelleği (page cache). Linux bir dosyayı okuduğunda içeriğini bellekte tutar. Bir sonraki okuma diske gitmez, bu kopyadan gelir. /usr/bin/su gibi sık kullanılan programlar da aslında çoğu zaman bellekteki bu kopyadan çalışır.
Açık üç parçanın birleştiği yerde:
- AF_ALG: Çekirdeğin şifreleme fonksiyonlarını sıradan programlara açan bir arayüz. Kullanmak için özel yetki gerekmiyor.
- splice(): Bir dosyanın verisini kopyalamadan, bellekteki sayfalara referans vererek başka bir yere aktaran sistem çağrısı.
- authencesn: IPsec için yazılmış bir şifreleme şablonu. Çalışırken çıktı alanını karalama kâğıdı gibi kullanıyor ve sınırın 4 bayt ötesine yazıyor.
2017’deki bir performans iyileştirmesiyle AF_ALG, şifre çözmeyi “yerinde” yapmaya başladı. Bu sayede splice ile gelen, aslında salt okunur bir dosyaya ait önbellek sayfaları yazılabilir çıktı alanına bağlanabildi. authencesn o 4 baytı yazdığında, değişiklik doğrudan o dosyanın bellekteki kopyasına düşüyordu. Saldırgan hangi dosyaya, hangi konuma ve hangi 4 baytın yazılacağını seçebiliyordu. Bunu tekrarlayarak su programının bellekteki kopyasını değiştiriyor, programı bir sonraki çalıştırdığında root kabuğu alıyor.
İşin sinsi yanı şu: Diskteki dosya hiç değişmiyor. Sayfa “değişti” diye işaretlenmediği için diske geri yazılmıyor. Yani diskteki dosyaların özetini karşılaştıran kontroller hiçbir şey görmüyor.
Konteynerler de korumuyor
Sayfa önbelleği bütün sistemde ortak. Aynı makinedeki konteynerler de aynı çekirdeği ve aynı önbelleği paylaşıyor. Theori, Mayıs’ta yayımladığı ikinci yazıda bir Kubernetes pod’undan çıkıp sunucunun kendisinde root almayı gösterdi. Konteynerin iyi bir sınır olduğunu ama çekirdek açıklarına karşı tek başına yetmediğini hatırlatıyor. Konteyner ile sanal makine farkını kod izolasyonu yazısında anlatmıştık.
Yapay zekânın rolü
Fikir, Theori araştırmacısı Taeyang Lee’den geldi: splice’ın salt okunur dosyaların önbellek sayfalarını şifreleme koduna taşıyabileceğini fark etti. Sonra şirketin yapay zekâ destekli tarama aracı Xint Code’a bu ipucunu verip kripto alt sistemini taradı. Tarama yaklaşık bir saat sürdü ve Copy Fail en yüksek riskli sonuç olarak çıktı. Yani insan sezgisi ile otomatik taramanın birleşimi.
Ne yapmalısın?
- Çekirdeği güncelle. Düzeltme ana dala 1 Nisan’da girdi; düzeltilmiş sürümler 6.18.22, 6.19.12 ve 7.0. Dağıtımlar düzeltmeyi kendi çekirdek paketlerine taşıdı, normal güncellemeyle gelir. Güncelledikten sonra yeniden başlatmayı unutma.
- Hemen güncelleyemiyorsan,
algif_aeadmodülünün yüklenmesini engelle ya da seccomp ile AF_ALG soketi açılmasını yasakla. Çoğu uygulama bu arayüzü hiç kullanmıyor. - Çok kiracılı sunucularda (paylaşımlı hosting, CI makineleri, Kubernetes düğümleri) önceliği en üste koy.
Sonra ne oldu?
Duyurudan iki gün sonra, 1 Mayıs’ta ABD siber güvenlik ajansı CISA açığı “aktif olarak istismar edilen açıklar” (KEV) listesine ekledi. Kısa sürede betiğin Go ve Rust sürümleri de çıktı. 19 Mayıs’ta Theori konteynerden sunucuya kaçışın ayrıntılarını yayımladı; önerisi, kiracıları birbirinden gerçekten ayırmak gerekiyorsa gVisor, Kata Containers ya da mikro sanal makine gibi ayrı çekirdekli çözümler kullanmak. Çekirdek, sayfa önbelleği ve yetki halkaları gibi kavramları sıfırdan merak ediyorsan işletim sistemi kavramları yazısına bakabilirsin.
Çekirdek açıkları arttıkça konteyner izolasyonunun nasıl sorgulandığını konteyner güvenlik sınırı yazısında anlattık.
Aynı deseni çekirdeğin ağ kodunda iki yerde daha bulan Dirty Frag’i ve ardından gelen Bad Epoll’u Dirty Frag ve Bad Epoll yazısında anlattık.
Düşün
- Sunucunda kimlerin, hangi uygulamaların “sıradan kullanıcı” olarak kod çalıştırabildiğini biliyor musun?
- Konteynerlerini birbirinden ayırırken neye güveniyorsun: çekirdeğe mi, sanal makineye mi?
Videoyu izle
Kaynaklar (7, İngilizce)
- Fireship: 732 bytes of Python just borked every Linux machine on earth… (video) (yeni sekmede açılır)
- Xint (Theori): Copy Fail, teknik yazı ve zaman çizelgesi (yeni sekmede açılır)
- copy.fail: Projenin sayfası ve SSS (yeni sekmede açılır)
- NVD: CVE-2026-31431 (yeni sekmede açılır)
- The Hacker News: CISA adds actively exploited Linux root flaw to KEV (yeni sekmede açılır)
- heise: Copy Fail, Linux root in all major distributions with 732 bytes of Python (yeni sekmede açılır)
- Xint (Theori): Copy Fail, From Pod to Host (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.