Copy Fail – CVE-2026-31431
(copy.fail)- 2017’den bu yana tüm Linux dağıtımlarında root yetkisi elde etmeyi mümkün kılan bir konteyner kaçışı / yetki yükseltme açığı
- Linux çekirdeğinin kriptografi modülündeki (
authencesn) basit bir mantık hatasından yararlanıyor; karmaşık zamanlama ayarı (race condition) ya da çekirdek sürümüne göre ince ayar gerektirmeden yalnızca 732 baytlık tek bir Python betiğiyle çalıştırılabiliyor - Temel mekanizma, Linux’un dosya çalıştırırken başvurduğu bellek içi önbelleğin (page cache) manipüle edilmesi;
AF_ALG(çekirdek kripto soketi) ilesplice()(veri kopyalama sistem çağrısı) birleştirilerek setuid ikilisinin önbellekteki kopyasının 4 baytı üzerine yazılıyor- Disk üzerindeki gerçek dosya değiştirilmediği için adli disk imajında iz bırakmayan gizli bir saldırı
- Yeniden başlatma ya da belleğin serbest bırakılması sonrası önbellek özgün haline döndüğünden, geleneksel dosya bütünlüğü kontrolleriyle olay sonrası tespit zor
- Page cache tüm host genelinde paylaşıldığı için, Kubernetes ortamında tek bir pod bu açıktan yararlanırsa host düğümü ele geçirip diğer kiracıların konteynerlerine de sıçrayabilen bir konteyner kaçışı mümkün
- Ubuntu 24.04, Amazon Linux 2023, RHEL 10.1 ve SUSE 16 üzerinde doğrudan doğrulandı; ayrıcalıksız bir yerel kullanıcı hesabı yeterli ve ağ erişimi ya da çekirdek hata ayıklama özellikleri olmadan anında çalışıyor
- Mevcut Linux yerel yetki yükseltme (LPE) açıkları deneme başına genelde %30~80 başarı oranına sahip olup yalnızca belirli çekirdek aralıklarında çalışırken, Copy Fail tek denemede %100 başarıyla 9 yıl boyunca (2017~2026) tüm dağıtımları hedefleyebiliyor
- Aynı page cache manipülasyonu ailesindeki Dirty Pipe (pipe buffer flag istismarı) ve Dirty Cow’dan (zamanlama yarışı gerekir) farklı olarak; race condition olmaması, dağıtıma özgü offset gerektirmemesi ve yeniden derleme istememesi nedeniyle çok daha basit ve güçlü
- En acil risk altındaki ortamlar: çok kiracılı Linux host’ları, Kubernetes/konteyner kümeleri, CI runner’ları (GitHub Actions self-hosted, GitLab runner vb.), kullanıcı kodu çalıştıran bulut SaaS’leri — güvenilmeyen kodun paylaşılan bir çekirdek üzerinde çalıştığı tüm ortamlar
- Birinci öncelik çekirdek yaması uygulamak (
a664bf3d603dmainline commit’i) — 2017’de eklenen kriptografi modülündeki in-place optimizasyon geri alınarak page cache sayfalarının kriptografik işlemlerin yazma hedefi olmasının önüne geçiliyor - Yama öncesi geçici önlem olarak
algif_aeadmodülü devre dışı bırakılabilir; dm-crypt/LUKS, kTLS, IPsec ve SSH gibi yaygın şifreleme işlevleri etkilenmez - Konteyner, sandbox ve CI runner gibi güvenilmeyen iş yükü ortamlarında, yama durumundan bağımsız olarak seccomp ile
AF_ALGsoketi oluşturulmasının engellenmesi öneriliyor - Xint’ten Taeyang Lee, "
splice()ın page cache sayfalarını kriptografi alt sistemine aktarma yapısının keşfedilmemiş bir hata sınıfı" olduğuna dair ilk içgörüyü ortaya koydu; Xint Code ise çekirdeğincrypto/alt sistemini yaklaşık 1 saat içinde otomatik tarayarak bunun yapay zeka destekli güvenlik açığı tespiti örneği olmasını sağladı
5 yorum
Rocky Linux için henüz bir yama çıkmamış gibi görünüyor
RHEL
Almalinux
Rocky Linux
Rocky Linux kullanıyorsanız ve sistemi yeniden başlatamıyorsanız, https://github.com/wgnet/wg.copyfail.patch içindeki
bpftoolile engelleme yapmak işe yarar.https://kb.ciq.com/article/rocky-linux/rl-cve-2026-31431-mitigation
Yama var ama... yalnızca abonelik hizmeti deposu üzerinden sağlanıyor. CE sürümü yamalanmamış. (9.7, 10.1 doğrulandı)
2026-05-05 yaması çıktı.
2026-05-10 tarihinde yeni bir güvenlik seçeneği var.
https://forums.rockylinux.org/t/…
sudo dnf --enablerepo=security update
Güvenlik deposunu eklerseniz, görünüşe göre RHEL kaynaklarının yansıtılmasından bağımsız olarak güvenlik önlemleri almak mümkün.
Ubuntu kullananlar için uygulanacak yöntemlere dair bir rehber yayımlandı; isterseniz ona göz atabilirsiniz.
https://discourse.ubuntu.com/t/…
Hacker News görüşleri
Linux çekirdeği crypto kodu ile uğraşan biri olarak, periyodik olarak patlayan AF_ALG exploit'leri gerçekten sinir bozucu
AF_ALG, yeterli inceleme olmadan uzun zaman önce çekirdeğe girdi; yapısı gereğinden fazla karmaşık ve ayrıcalıksız userspace programlarına devasa bir saldırı yüzeyi açıyor
Üstelik neredeyse gereksiz. userspace tarafında zaten kendi şifreleme kodları var ve çekirdekteki crypto kodu aslında dm-crypt gibi çekirdek içi kullanım senaryoları için tasarlanmıştı
Bu exploit'teki authencesn de esasen IPsec'in iç implementasyon detaylarından biri; bunu genel amaçlı bir userspace şifreleme/şifre çözme API'si olarak dışarı açmak baştan hataymış gibi geliyor
Linux çekirdek yapılandırmasını yönetiyorsanız, tüm CONFIG_CRYPTO_USER_API_* seçeneklerini kapatmanızı şiddetle tavsiye ederim
Sadece bunu yapmak bile bu hatanın yanı sıra geçmişteki ve gelecekteki AF_ALG açıklarının önemli bir kısmını istismar edilemez hale getirirdi
Eğer bir userspace programı bozulursa, onu userspace crypto koduna taşımaya yardımcı olmak daha doğru olur; nitekim bazıları zaten bu şekilde değişti
Zaten AF_ALG'nin exploit dışında pek fazla kullanım alanı yoktu
Eskiden bu tür userspace API'leri bir şekilde tolere ediliyor olabilirdi ama syzbot ve LLM destekli hata tespiti çağında bunu sürdürmek artık zor
Yalnızca çekirdek modundan erişilebilen donanım hızlandırıcıları userspace'ten kullanabilmek, anahtarları uygulama belleğinde uzun süre tutmak yerine çekirdeğe aktarabilmek ve gömülü sistemler gibi belleğin kısıtlı olduğu ortamlarda userspace crypto kütüphanelerine kıyasla footprint'i azaltabilmek bunlar arasında sayılmış
Bunun yeterince güçlü bir gerekçe olup olmadığını değerlendiremiyorum ama en azından ortada bir sebep var
Linus'un çekirdeğe neyin gireceği konusunda oldukça seçici olduğu bilindiğinden, böyle bir API'nin kabul edilme hikâyesi ilginç olurdu
Hash ve şifreleme işlemlerini sıradan
read(2)/write(2)çağrılarıyla ele almayı sağlıyorAçıklama sürecinde bir tür karışıklık yaşanmış gibi görünüyor
Vendor'lar bu zafiyeti pek ciddiye almıyor gibi ve bu yüzden birçok dağıtımda hâlâ yamasız durumda kalmış
https://access.redhat.com/security/cve/cve-2026-31431 sayfasında "Moderate severity", "Fix deferred" yazıyordu; Debian, Ubuntu ve SUSE takip sayfaları da benzer görünüyordu
Ama upstream bunu açıkça bir zafiyet olarak iletmedi ve Linus ile Greg çekirdekte bu tür sınıflandırmaları kavramsal olarak çok da önemsemiyor gibi görünüyor
Yine de yerelden root yetkisi yükseltmeye imkân verdiği için, genel olarak yüksek öncelikli görülmesi daha doğru olur gibi duruyor
https://ubuntu.com/security/cves/about#priority
Hangi çekirdek sürümlerinin etkilendiği ve hangi sürümlerde düzeltildiği ana yazıda doğrudan belirtilmemiş; bu biraz eksik kalmış
Özellikle bunun builtin bir modül olması ve
rmmodile kolayca çıkarılamaması nedeniyleFedora 44'ün kernel 6.19.14 sürümünün etkilenip etkilenmediğini anlamaya çalışırken linux-cve-announce posta listesinde şu iletiyi buldum: https://lore.kernel.org/linux-cve-announce/2026042214-CVE-2026-31431-3d65@gregkh/T/#u
Orada sırasıyla 6.18.22, 6.19.12 ve 7.0 sürümlerinde ilgili commit ile düzeltildiği yazıyor; referans olarak faydalı
Önerilen azaltma yöntemine uygun olarak çekirdek modülü
algif_aeadmodprobe yapılandırmasıyla engellenmiş mi diye kontrol etmek istiyorsanız, karartılmış shell kodunu olduğu gibi çalıştırmaya gerek yokAşağıdaki gibi birkaç satır Python ile modülün gerçekten yüklenip yüklenmediğini daha okunaklı biçimde kontrol edebilirsiniz
python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))")); print("algif_aead probably successfully loaded, mitigation not effective; remove again with: rmmod algif_aead")'Azaltma önlemi doğru uygulandıysa
modprobe algif_aeadkomutu da hata verip başarısız olmalıEtkilenen işletim sistemlerinde tam otonom yapay zeka ajanlarını normal kullanıcı yetkileriyle çalıştıran kimse yoktur herhalde
Zero-day prompt injection ile birleşirse oldukça felaket olabilir
curl | shile kurulum yapmayı sektör standardı haline getirmedikLPE, local privilege escalation anlamına geliyor
Güvenlik tarafında çok fazla kısaltma var; bağlamdan tahmin etmek mümkündü ama yine de ilk geçtiğinde açık yazılması iyi olurdu
Yine de daha geniş bir okur kitlesine yönelik bir metinde açıkça tanımlanmasının daha iyi olacağına katılıyorum
Üstelik bu yazının tamamı da biraz AI üretimi gibi görünüyor
Bu biraz komik
Sayfada RHEL 14.3 üzerinde çalıştığı yazıyor ama böyle bir sürüm yok
Şu anda RHEL 10.x seviyesinde, o yüzden sanki bir TARDIS'e binilmiş gibi hissettirdi
Bazen
gcc (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2)gibi görünüyor ve aşağıdaki örneklerde de benzer izler varhttps://github.com/anthropics/claude-code/issues/40741
https://docs.oracle.com/en/database/oracle/tuxedo/22/otxig/software-requirements-red-hat-enterprise-linux-10-64-bit.html
6.12.0-124.45.1.el10_1de yazıyor; bu ise açıkça RHEL 10 çekirdeğiBu tür hataları aslında insanlar daha sık yapar
Uzun ve kopyala-yapıştır sayı dizileri doğru kalır ama kolay sayılar elle yazılırken yanlış girilir
Sorunu anlatmak için bilgileri aceleyle topladığımız bir süreç oldu ve evet, işin biraz pazarlama tarafı da vardı
Bu yüzden birkaç küçük hata girdi; işaret ettiğiniz için teşekkürler
https://access.redhat.com/articles/red-hat-enterprise-linux-release-dates
Sayfanın altındaki "Talk to our security experts" kısmını da görünce, o güvenlik uzmanının adının acaba Claude olup olmadığını düşünmeden edemedim
RHEL 9/10'da algif_aead modül değil builtin olduğu için unload edilemedi
Bu yüzden ikinci en iyi çözüm olarak systemd üzerinden AF_ALG'yi engellemenin bir yolunu aradım ve maruz kalan her servis için ayrı bir drop-in gerekiyor
Genellikle kritik olan
sshdveuser@için hazırlanmış bir Ansible playbook'u da varhttps://gist.github.com/m3nu/c19269ef4fd6fa53b03eb388f77464da
initcall_blacklist=algif_aead_initekleyip yeniden başlatmak da mümkündüBunu yaptıktan sonra exploit artık çalışmadı
cronjob,slurmjobgibi diğer çalıştırma yolları ne olacak diye endişeleniyorum; tek tek servis eklemek yerine systemd düzeyinde tüm süreçlere kalıtılacak bir mekanizma olsa iyi olurduBu exploit'in, bir SUID binary'yi değiştirip PID 0 olarak çalışacak hale getirmeye dayandığı anlaşılıyor
Ama site Kubernetes / container clusters ve CI runners & build farms ortamlarından kaçışı da iddia ediyor; buna rağmen konteynerden, özellikle de user namespace'ten çıkışı destekleyen gerçek bir açıklama göremedim
Rootless Podman üzerinde denedim ve beklendiği gibi konteyner dışına çıkamadı
Ayrıca "2017'den bu yana çıkan tüm Linux dağıtımlarını root yapar" iddiasında bulunuyor ama fiili test sayısı dörtle sınırlı ve Alpine üzerinde çalışmamış
"Next: "From Pod to Host," how Copy Fail escapes every major cloud Kubernetes platform."diye duyurmuşlarhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72548b093ee3
Ama pratikte istismar edilebilirlik, güncel büyük sürümler ile eski bakım çekirdekleri arasında farklılık gösterecektir
Yine de PoC'yi 24.04 instance üzerinde bizzat çalıştırınca açığın gerçek olduğu ve ciddi bir konu gibi göründüğü anlaşılıyor
Ancak etkilenen dağıtım sayısı iddia edilenden çok daha az gibi duruyor ve 2017'den beri tüm dağıtımlar söylemiyle pek uyuşmuyor
Örneğin benim yorumum doğruysa Ubuntu'da 16.04 EOL bile bir miktar etkileniyor, ama asıl belirgin etki son dönemde dağıtılmaya başlayan
linux-gcp,linux-oracle-6.7gibi 6.17 serisi vendor çekirdeklerinde görünüyorYine de bunun için ek adımlar gerekir ve Alpine'de de temel açık bulunuyor olabilir; sadece betiğin uyarlanması gerekiyordur
Sonuçta bu, tamamlanmış genel amaçlı bir exploit değil, bir PoC
Sayfanın kendisi biraz vibecoded ve reklam kokuyor ama açık gerçek ve risk seviyesi de yüksek görünüyor
Bugün gelen büyük güvenlik güncellemesinin nedenini açıklıyor; güncelleme önceliğini yükseltmek gerekecek
Gerçek bir bug bulup yamalayarak OSS ekosistemine anlamlı katkı sağlıyorlar ve aynı zamanda kendi güvenlik araçlarını satıyorlar
Yine de artık kim web sayfasını elle tek tek hazırlıyor ki; hele çekirdek geliştiricileri söz konusuysa daha da öyle