Snap paket yönetimi araç setindeki yerel kök güvenlik açıkları

Qualys, snap-confine yardımcı programında, SUID kök bayrağıyla sağlanan ve bağımsız paketlerde sunulan uygulamalar için yürütülebilir bir ortam oluşturmak amacıyla snapd işlemi tarafından çağrılan iki güvenlik açığı (CVE-2021-44731, CVE-2021-44730) belirledi. snap formatında. Güvenlik açıkları, yerel ayrıcalıklara sahip olmayan bir kullanıcının sistem üzerinde kök ayrıcalıklarıyla kod çalıştırmasına olanak tanıyor. Sorunlar, Ubuntu 21.10, 20.04 ve 18.04 için bugünkü snapd paket güncellemesinde çözüldü.

İlk güvenlik açığı (CVE-2021-44730), sabit bağlantı manipülasyonu yoluyla bir saldırıya izin verir, ancak sistem sabit bağlantı korumasının devre dışı bırakılmasını gerektirir (sysctl fs.protected_hardlinks'in 0'a ayarlanması). Sorun, kök olarak çalıştırılan snap-update-ns ve snap-discard-ns yardımcı programlarının yürütülebilir dosyalarının konumunun yanlış doğrulanmasından kaynaklanmaktadır. Bu dosyaların yolu, /proc/self/exe'deki kendi yoluna dayalı olarak sc_open_snapd_tool() işlevinde hesaplandı; bu, dizininizde snap-confine için sabit bir bağlantı oluşturmanıza ve kendi snap-confine sürümlerinizi yerleştirmenize olanak tanır. Bu dizinde update-ns ve snap- yardımcı programları bulunur. Sabit bağlantı üzerinden çalıştırıldıktan sonra, kök haklarına sahip snap-confine, saldırganın değiştirdiği geçerli dizinden snap-update-ns ve snap-discard-ns dosyalarını başlatacaktır.

İkinci güvenlik açığı bir yarış durumundan kaynaklanmaktadır ve varsayılan Ubuntu Masaüstü yapılandırmasında kullanılabilir. Exploit'in Ubuntu Sunucusunda başarılı bir şekilde çalışabilmesi için kurulum sırasında "Öne Çıkan Sunucu Snapleri" bölümündeki paketlerden birini seçmelisiniz. Yarış durumu, snap paketi için bağlama noktası ad alanının hazırlanması sırasında çağrılan setup_private_mount() işlevinde açıkça görülmektedir. Bu işlev geçici bir "/tmp/snap.$SNAP_NAME/tmp" dizini oluşturur veya mevcut bir dizini kullanarak ek paket için dizinleri buna bağlar.

Geçici dizinin adı tahmin edilebilir olduğundan, saldırgan, sahibini kontrol ettikten sonra ancak mount sistem çağrısını çağırmadan önce içeriğini sembolik bir bağlantıyla değiştirebilir. Örneğin, /tmp/snap.lxd dizininde rastgele bir dizine işaret eden bir "/tmp/snap.lxd/tmp" sembolik bağlantısı oluşturabilirsiniz ve mount() çağrısı sembolik bağlantıyı takip edecek ve dizini dizine bağlayacaktır. ad alanını yakalayın. Benzer şekilde, içeriğinizi /var/lib'e bağlayabilir ve /var/lib/snapd/mount/snap.snap-store.user-fstab'ı değiştirerek, /etc dizininizin montajını ad alanına düzenleyebilirsiniz. /etc/ld.so.preload'ı değiştirerek kitaplığınızın yüklenmesini kök haklarıyla organize etmek için ek paket.

Snap-confine yardımcı programının Go'da güvenli programlama teknikleri kullanılarak yazılması, AppArmor profillerine dayalı korumaya sahip olması, seccomp mekanizmasına dayalı olarak sistem çağrılarını filtrelemesi ve kullanımları nedeniyle bir istismar yaratmanın önemsiz bir görev olduğu ortaya çıktı. yalıtım için bağlama ad alanı. Ancak araştırmacılar, sistem üzerinde kök hakları elde etmek için çalışan bir güvenlik açığı hazırlamayı başardılar. Yararlanma kodu, kullanıcıların sağlanan güncellemeleri yüklemesinden birkaç hafta sonra yayınlanacaktır.

Kaynak: opennet.ru

Yorum ekle