Bir PolKit güvenlik açığı, çoğu Linux dağıtımında kök erişiminin elde edilmesini sağladı

geçenlerde Qualys şu haberi yayınladı bir güvenlik açığı tespit etti (CVE-2021-4034) en sistem bileşeni polkit (eski adıyla PolicyKit), ayrıcalıklı olmayan kullanıcıların yükseltilmiş erişim hakları gerektiren eylemleri gerçekleştirmesine izin vermek için dağıtımlarda kullanılır.

Güvenlik Açığı ayrıcalığı olmayan bir yerel kullanıcının ayrıcalıklarını kök kullanıcıya yükseltmesine izin verir ve sistem üzerinde tam kontrol sahibi olun. Sorunun kod adı PwnKit ve çoğu Linux dağıtımında varsayılan ayarlarda çalışan, çalışan bir istismar ürettiği için dikkate değer.

Bundan bahsediliyor sorun, PolKit ile birlikte gelen pkexec yardımcı programında mevcutSUID kök bayrağı ile birlikte gelen ve PolKit kurallarına göre diğer kullanıcıların ayrıcalıklarıyla komutları çalıştırmak için tasarlanmıştır.

Argümanların yanlış işlenmesi nedeniyle pkexec'e iletilen komut satırından, bir ayrıcalıklı olmayan kullanıcı kimlik doğrulamasını atlayabilir ve kodunuzu root olarak çalıştırabilir, yerleşik erişim kurallarından bağımsız olarak. Bir saldırı için PolKit'te hangi ayarlar ve kısıtlamalar yapılmış olursa olsun, yürütülebilir dosya için SUID kök özniteliğinin pkexec yardımcı programı ile ayarlanması yeterlidir.

Pkexec doğruluğu kontrol etmez bir işlem başlatılırken iletilen komut satırı bağımsız değişkenlerinin (argc) sayısı. pkexec geliştiricileri, argv dizisindeki ilk girişin her zaman işlemin adını (pkexec) içerdiğini ve ikinci girişin NULL veya pkexec aracılığıyla yürütülen komutun adı olduğunu varsaydılar.

Argüman sayısı dizinin gerçek içeriğiyle karşılaştırılmadığından ve her zaman 1'den büyük olduğu varsayıldığından, sürece boş bir argv dizisi geçirilirse, Linux'un execve işlevinin izin verdiği şekilde, pkexec NULL'u ilk argüman olarak ele aldı ( process ad) ve sonraki dizi içeriği olarak arabellek belleğinin dışında sonraki sonraki.

Sorun, bellekteki argv dizisinden sonra ortam değişkenlerini içeren envp dizisinin olmasıdır. Böylece, boş bir argv dizisiyle, pkexec, içeriği tarafından kontrol edilebilen ortam değişkenleriyle (argv[1] envp[0] ile aynı hale geldi) dizinin ilk öğesinden yükseltilmiş ayrıcalıklarla yürütülen komut hakkındaki verileri çıkarır. saldırgan.

argv[1] değerini alan pkexec, PATH içindeki dosya yollarını kullanarak yürütülebilir dosyanın tam yolunu belirlemeye çalışır ve işaretçiyi argv[1]'e geri dönen tam yol ile dizeye yazar, bu da değerin üzerine yazılmasına yol açar. argv[1] envp[0] ile aynı olduğundan, ilk ortam değişkeninin de. Saldırgan, ilk ortam değişkeninin adını değiştirerek, pkexec'te başka bir ortam değişkenini değiştirebilir, örneğin, suid programlarında izin verilmeyen "LD_PRELOAD" ortam değişkenini değiştirebilir ve işlemin süreçte paylaşılan kitaplığını yüklemesini sağlayabilir. .

Çalışan istismar, GCONV_PATH değişken ikamesini kullanır, kodunda iconv_open() kullanan g_printerr() işlevi çağrıldığında dinamik olarak yüklenen sembol kod dönüştürme kitaplığının yolunu belirlemek için kullanılır.

GCONV_PATH içindeki yolu yeniden tanımlayarak, saldırgan normal iconv kitaplığını değil, sürücüleri, pkexec'in hala root olarak çalıştığı aşamada ve başlatma doğrulamasından önce hata mesajı sırasında yürütülecek olan kendi kitaplığını yüklemeyi başarabilir. izinler.

Gözlenmiştir ki, sorun bellek bozulmasından kaynaklansa da, güvenilir ve tekrarlanabilir bir şekilde kullanılabilir, kullanılan donanım mimarisinden bağımsız olarak.

İstismar hazırlandı Ubuntu, Debian, Fedora ve CentOS üzerinde başarıyla test edildi, ancak diğer dağıtımlarda da kullanılabilir. Orijinal istismar henüz herkese açık değil, bu da önemsiz olduğunu ve diğer araştırmacılar tarafından kolayca yeniden oluşturulabileceğini gösteriyor, bu nedenle düzeltme güncellemesini çok kullanıcılı sistemlere mümkün olan en kısa sürede yüklemek önemlidir.

Polkit, BSD ve Solaris sistemleri için de mevcuttur, ancak kullanım için araştırılmamıştır. OpenBSD çekirdeği execve() çağrılırken boş bir argc değerinin geçirilmesine izin vermediği için saldırı OpenBSD üzerinde gerçekleştirilemez.

Sorun, pkexec komutunun eklendiği Mayıs 2009'dan beri var. PolKit'teki güvenlik açığı düzeltmesi hala bir yama olarak mevcuttur (düzeltme sürümü oluşturulmamıştır), ancak dağıtımın geliştiricilerine sorun önceden bildirildiğinden, çoğu dağıtım aynı anda bir güncelleme yayınladı. güvenlik açığı bilgilerini içerir.

Nihayet onun hakkında daha fazla bilgi edinmekle ilgileniyorsan, ayrıntıları kontrol edebilirsiniz aşağıdaki bağlantı.


Yorumunuzu bırakın

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

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  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.