io_uring'deki bir güvenlik açığı, izinleri olmayan bir kullanıcının kapsayıcılarda bile root olmasına izin verdi

geçenlerde Açıklanan güvenlik açığı bilgileri (CVE-2022-29582) io_uring asenkron I/O arabiriminin uygulanmasında, sürüm 5.1'den beri Linux çekirdeğinde bulunur ve bu, ayrıcalıksız bir kullanıcının bir kapsayıcı istismarı yürütürken bile sistemde kök olmasına izin verir.

Bahsetmeye değer söz konusu güvenlik açığı 3 aydan daha uzun bir süre önce rapor edildi (yaklaşık olarak bu yılın Mayıs ayı başlarında), ancak tam bilgi ve açıklama ancak yakın zamanda yayınlandı.

Güvenlik açığı ile ilgili olarak, bu zaten serbest bırakılmış bir bellek bloğuna erişirken oluşur, 5.10 dalı ile başlayan Linux çekirdeklerinde kendini gösterir.

CVE-2022-29582 güvenlik açığı hakkında

Bu güvenlik açığı serbest belleğe erişim sağlar io_flush_timeouts() işlevinde zaman aşımlarını işlerken bir yarış koşulunun sonucu olarake zaman aşımı girişini kaldırır listeden çıkarır ve o noktada zaman aşımının oluşturulmasını ve silinmesini doğrulamadan iptal eder.

io_uring'in güncellenmiş bir genel açıklaması zaten başkaları tarafından sağlanmıştır. Bunu bizden bin kat daha iyi açıklıyorlar, bu yüzden alt sistemi daha kapsamlı bir şekilde ele alacağız (harika bir giriş için bu Grapl Security makalesine ve bu Flatt Security makalesine bakın).

Ne daha önemli, opcode alanı, ne tür bir işlemin gerçekleştirileceğini belirler. Bunu gerektiren her "işlem kodu" için fd alanı, üzerinde istenen G/Ç'nin gerçekleştirileceği dosya tanıtıcısını belirtir. Hemen hemen tüm normal G/Ç sistem çağrıları (okuma, gönderme, vb.) eşdeğer bir eşzamansız işlem koduna sahiptir. Her alan, operasyona bağlı olarak farklı roller üstlenebilir.

SQ'dan alındıktan sonra, bir SQE, struct io_kiocb(çekirdek giriş/çıkış geri çağrısı) tarafından açıklanan dahili bir temsile dönüştürülür. Bu nesneler genellikle istekler olarak bilinir.

struct io_kiocb, temel aldığı SQE "lansmana hazır" ile eşdeğer olarak kullanılır, bu sayede herhangi bir dosya tanıtıcı struct file*s olarak çözümlenir, kullanıcı kimlik bilgileri eklenir, kişilik (çekirdeklerin çalışacağı), vb. .

İstenen işlem tamamlandıktan sonra tamamlama kuyruğuna yazılır (CQ) SQE'ye karşılık gelen bir giriş. Böyle bir giriş, tamamlama kuyruğu girişi (CQE) olarak adlandırılır ve hata kodu ve sonuç değeri gibi alanlar içerir. Kullanıcı alanı uygulaması, gönderilen SQE'lerin işlemeyi bitirip bitirmediğini ve sonuçlarının ne olduğunu belirlemek için yeni girişler için CQ'yu yoklayabilir.

deniliyor ki bir nesneyi değiştirmenin kolay olduğu bazı senaryolar vardır ilerleme hakkında. Ancak iki sınırlama vardır:

  • LT' bir yarış penceresinde atanmalı ve başlatılmalıdır. Yani, LT serbest bırakıldıktan sonra ancak LT'de artık erişilmeyen bir noktaya ulaşmadan önce.
  • LT' yalnızca başka bir struct io_kiocb nesnesi olabilir. Yığın içindeki nesnelerin türlerine göre ayrıldığı yığın yalıtımı nedeniyle, bunları yarış penceresinde farklı bir nesne türü olarak yeniden atamak çok zordur.

Araştırmacılar işlevsel bir istismar hazırladı Bu, çalışması için kullanıcı tanımlayıcı ad alanlarının (kullanıcı ad alanlarının) dahil edilmesini gerektirmez ve ayrıcalığı olmayan bir kullanıcı istismarı yalıtılmış bir kapsayıcıda başlattığında ana bilgisayara kök erişimi sağlayabilir.

İstismarımız, Google'ın o sırada uzaktan çalıştırdığı çekirdek sürümü 5.10.90'ı hedefliyor. İstismarımızı sunucunun belirli özelliklerine göre ayarlamak zorunda kaldık (4 Skylake Xeon çekirdeği @ 2.80Ghz, 16GiB RAM), ancak biraz ince ayar yaparak, savunmasız bir çekirdek çalıştıran herhangi bir makineden yararlanılabilir olmalıdır.

İstismar, nsjail ortamında da çalışır Chromium OS tabanlı Google COS (Container Optimized OS) dağıtımında izole edilmiş ve Compute Engine sanal makinelerinde Google Cloud Platform'da kullanılmıştır. İstismar, 5.10'dan 5.12'ye kadar çekirdek dallarıyla çalışmak üzere tasarlanmıştır. Son olarak şunu belirtmekte fayda var. Nisan ayında 5.10.111, 5.15.34 ve 5.17.3 güncellemelerinde sorun düzeltildi.

Son olarak, güvenlik açığı hakkında daha fazla bilgi edinmek istiyorsanız, yapılan yayına başvurabilirsiniz. Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.