Linux’un sistem düzeyinde ayrıcalıkları ve politikaları tanımlayan, ayrıcalıklı olmayan proseslerin ayrıcalıklı olanlarla iletişimine izin veren sudo gibi kuralları düzenleyen PolicyKit bileşeninden kaynaklanan bir yetkisiz komut çalıştırma zafiyeti tespit edildi. Bu açıklık düşük haklara sahip ve UID değeri 2147483647’den büyük olan bir kullanıcının systemctl komutlarını yetkisiz olarak çalıştırmasına neden oluyor. systemctl komutları servisleri başlatmak veya durdurmak, yeniden başlatmak veya konfigürasyonları yeniden yüklemek, servisin durumu, servisi engellemek veya etkin kılmak, engelleme veya etkin kılmayı kontrol etmek gibi çeşitli kritik işlevleri sağlayan bir araç.
Zafiyet, PolicyKit’in düşük haklara sahip olan ve UID değeri INT_MAX değerinden büyük olan bir kullanıcının izin isteklerini yanlış doğrulamasından kaynaklanıyor. INT_MAX, programlamada integer bir değişkenin tutabileceği maksimum değeri tanımlamaya yarayan ve 2147483647(hexadecimal 0x7FFFFFFF) sayısına eşit olan bir sabit değer.
Açıklığın, PolicyKit 0.115 sürümüyle yüklü gelen Red Hat, Debian, Ubuntu ve CentOS dağıtımlarında etkili olduğu belirtiliyor. Zafiyet CVE-2018-19788 kodu ile kaydedildi.
Red Hat yetkilileri yama yayınlanana kadar önlem olarak sistem adminlerinin negatif UID veya 2147483646’den büyük UID değerlerine izin vermemelerini öneriyor.
Güvenlik araştırmacısı Rich Mirch’in GitHub’ta yayınladığı PoC[3]ile 4000000000 UID’li bir kullanıcı hesabı ile zafiyetin istismar edilebileceğini kanıtlıyor.
Kaynaklar
[1] Warning! Unprivileged Linux Users With UID > INT_MAX Can Execute Any Command
[2] CVE-2018-19788