Kopyalama Hatası: Sayfa önbelleklemesi yoluyla root erişimi sağlayan Linux güvenlik açığı

Anahtar noktaları:
  • Saldırgan bir AF_ALG soketi açar ve kimlik doğrulama algoritmasını talep eder.
  • Saldırgan, hedef dosyanın önbelleğinden (örneğin, /usr/bin/su) sayfaları sokete iletmek için splice() işlevini kullanır. Bu sayfalar daha sonra çıktı karma listesinin (yazılabilir) bir parçası haline gelir.
  • Saldırgan, kötü amaçlı tasarlanmış İlişkili Kimlik Doğrulanmış Veri (AAD) içeren bir mesaj (sendmsg) gönderir; bu mesajın 4-7. baytları, yazmak istedikleri verileri (örneğin, kötü amaçlı kod) içerir.
  • Şifre çözme tetiklendiğinde, authencesn bu 4 baytı AAD'den alır ve geçici olarak arabelleğin sonuna yazar. Yerinde optimizasyon nedeniyle, arabelleğin bu sonu doğrudan dosya önbellek sayfasına işaret eder.
  • Kriptografik işlem başarısız olur (şifreli metin geçersizdir), ancak 4 baytlık yazma işlemi zaten gerçekleşmiştir ve asla geri alınmaz.
  • Saldırgan, kodunu enjekte etmek için işlemi tekrarlar. /usr/bin/su komutu çalıştırıldığında, çekirdek değiştirilmiş sürümü bellekten yükler ve enjekte edilen kodu root ayrıcalıklarıyla yürütür.

kopyalama hatası

Linux güvenliği, yeni bir güvenlik açığının keşfedilmesinin ardından bir başka zorlukla karşı karşıya kaldı. "Copy Fail" olarak adlandırılan CVE-2026-31431 güvenlik açığı Xint Code'daki araştırmacılar tarafından. Teorik bir kusur olmaktan çok uzak olan bu tasarım problemi Bu, yetkisi olmayan yerel bir kullanıcının yetkilerini yükseltmesine ve tam erişim elde etmesine olanak tanır. Öngörülebilir ve sessiz bir şekilde süper kullanıcı olarak.

Araştırmacılar, bu güvenlik açığının Ubuntu, Amazon Linux, RHEL ve SUSE gibi önde gelen dağıtımlarda başarıyla istismar edildiğini belirterek, bunun doğruluğunu teyit ediyorlar. 4.14'ten daha yeni bir çekirdek sürümü çalıştıran herhangi bir sistem ve sürdür AF_ALG soketleri için desteğin etkinleştirilmesi potansiyel olarak güvenlik açığı içermektedir. Bu saldırıya.

Yerinde İşlemler ve Sayfa Önbelleği Taşması

Karara ilişkin olarak şunlar belirtilmiştir: Bu özellik, çekirdeğin kriptografik API'sinde (AF_ALG) 2017 yılında yapılan bir optimizasyona dayanmaktadır. Bu değişiklik Gereksiz ara belleğe alma işlemlerini ortadan kaldırmak istiyordum. Kimlik doğrulamalı şifreleme (AEAD) işlemlerinin doğrudan aynı bellek alanında yürütülmesi, "yerinde" işlemler olarak bilinir.

El Bu optimizasyonu splice() fonksiyonuyla birleştirdiğimizde kritik bir sorun ortaya çıkıyor, Bu yöntem, verileri fiziksel olarak kopyalamak yerine çekirdek sayfa önbelleğine doğrudan referanslar aktararak dosya tanımlayıcıları arasında veri aktarımı yapar. Şifre çözme isteği sırasında, kullanıcı için geçici bir alan olması gereken hedef arabellek, sistem dosyası verilerini içeren önbellek sayfalarına doğrudan bağlanacak şekilde bellek yapısı yapılandırılmıştır.

Bellek sınırlarının dışında kimlik doğrulama ve yazma

El Güvenlik açığının nihai tetikleyicisi, kimlik doğrulama algoritmasının anormal davranışında yatmaktadır. Hedef arabelleklerinin sınırlarına kesinlikle saygı gösteren diğer kriptografik rutinlerin aksine, Bu algoritma, kullanıcının bellek alanını geçici bir çalışma alanı olarak kullanır. (geçici bellek) Kimlik doğrulama etiketi hesaplaması sırasında bayt dizilerini yeniden düzenlemek için kullanılır.

Bu işlemde, algoritma çıktı bölgesi için belirlenen sınırın dört bayt ötesine veri yazar. Yerinde optimizasyon ve splice() tarafından oluşturulan referans zinciri sayesinde,Görünüşte zararsız olan bu yazı, kullanıcının hafızasının sınırlarını aşıyor. ve doğrudan işlenen dosyayla ilişkili çekirdek önbellek sayfasına iner.

Bu mantıksal hatalar zinciri Bu, saldırgana önbellekteki belirli konumlarda dört baytı keyfi olarak üzerine yazma olanağı sağlar. Okuyabildiği her dosya için sayfa sayısı. Bir dizi hesaplanmış istek göndererek, Bir saldırgan kötü amaçlı kod enjekte edebilir. Kullanıcı değiştirme aracı gibi, suid biti ayarlanmış kritik yürütülebilir dosyaların bellek içi sürümünde.

Tüm okuma işlemleri önce sayfa önbelleğini sorguladığından, meşru yardımcı program bir sonraki çağrıldığında, Sistem, belleğe enjekte edilen kodu çalıştırarak anında root ayrıcalıkları sağlayacaktır. Sabit sürücüdeki fiziksel dosyayı hiç değiştirmeden. Daha da endişe verici olanı, konteyner izolasyonu altta yatan ana bilgisayarın sayfa önbelleğini paylaştığı için, bu güvenlik açığı Kubernetes kümeleri gibi sanallaştırılmış ortamlardan kaçmak ve birincil düğümü tehlikeye atmak için doğrudan bir geçit görevi görüyor.

Acil durum yamaları ve hafifletme çözümleri

Bu kararın ciddiyeti göz önüne alındığında, Bakım ekipleri acil durum güncellemelerini devreye aldı. Kesin çözümün bulunduğu yer algif_aead.c dosyasındaki yerinde optimizasyonu geri alın ve kaynak ile hedef bellek listelerini kesinlikle birbirinden ayırın. Önbelleğe alınmış sayfaların yazılabilir yollara girmesini önlemek için.

Bu yamalar halihazırda 6.18.22, 6.19.12 ve 7.0 çekirdeklerine entegre edildi ve uzun vadeli destek dallarına geri aktarılıyor. Sunucularını hemen yeniden başlatamayan veya güncelleyemeyen yöneticiler için, harici olarak derlenmişse algif_aead çekirdek modülünü devre dışı bırakmaları veya örneğin mevcut Android cihazlarını bu tehditten koruyan bir kalkan olan SELinux gibi güvenlik politikaları kullanarak AF_ALG soketlerinin oluşturulmasını ciddi şekilde kısıtlamaları önerilir.

Son olarak, daha fazla bilgi edinmek isterseniz, ayrıntıları aşağıdaki bağlantıda bulabilirsiniz.


Google'da tercih edilen kaynak olarak ekleyin.