Linux sudo komutunda, yetkisiz kullanıcıların komutları root olarak çalıştırmalarına izin verebilecek bir güvenlik açığı keşfedildi. Neyse ki, bu güvenlik açığı yalnızca standart olmayan yapılandırmalarda çalışır ve çoğu Linux sunucusunu etkilenmez.
Güvenlik açığına girmeden önce, sudo komutunun nasıl çalıştığı ve nasıl yapılandırılabileceği hakkında bazı arka plan bilgilerinin bulunması önemlidir.
Bir Linux işletim sisteminde komutları çalıştırırken, ayrıcalıksız kullanıcılar izin verildiği veya kök kullanıcının parolasını bildikleri sürece komutları kök olarak yürütmek için sudo
(süper kullanıcının yaptığı) komutunu kullanabilirler.
Sudo komutu, / etc / sudoers yapılandırma dosyasına özel yönergeler ekleyerek bir kullanıcının başka bir kullanıcı olarak komut çalıştırmasına izin verecek şekilde de yapılandırılabilir.
Örneğin, aşağıdaki komutlar kullanıcının `test` / usr / bin / vim ve / usr / bin / id komutlarını herhangi bir kullanıcı olarak çalıştırmasına izin verir.
test ALL = (ALL, !root) /usr/bin/vim
test ALL = (ALL, !root) /usr/bin/id
`Test` kullanıcısının yukarıdaki komutlardan birini yürütmesi için, çalışacak kullanıcıyı belirtmek için -u argümanıyla sudo komutunu kullanırlar. Örneğin, aşağıdaki komut kullanıcı “bleeping-test” olarak vim’i başlatır.
sudo -u bleeping-test vim
Linux’ta kullanıcılar oluştururken, her kullanıcıya bir UID verilir. Aşağıda görüldüğü gibi, kullanıcı `testi` 1001 bir kullanıcı kimliğine ve” sızma testi “1002 bir kullanıcı kimliğine sahiptir.
Kullanıcılar, sudo komutunu başlatırken kullanıcı adı yerine bu UID’leri kullanabilir. Örnek olarak, aşağıdaki komut bir kez daha “Bleeping-Test” olarak VIM’i başlatacak, ancak bu kez kullanıcının UID’sini vererek.
sudo -u#1002 vim
Sudo güvenlik açığı
Apple güvenlik araştırmacısı Joe Vennix tarafından kullanıcıların sudo komutundaki -1 veya 4294967295 UID’yi kullanarak izin verilen bir sudo komutunu kök olarak başlatmalarına olanak tanıyan bir hata keşfedilmiştir.
Örneğin, ‘test’ kullanıcısı /etc/sudoers dosyasında bunu yapması engellenmiş olsa bile aşağıdaki komut bu hatayı /usr/bin/id kullanıcısını kök olarak başlatmak için kullanabilir.
sudo -u#-1 id
Kök ayrıcalıklarını almak için bu hatayı / usr / bin / id komutuyla kullanmak aşağıda gösterilmiştir.
Bu hata güçlü olmakla birlikte, yalnızca bir kullanıcıya sudoers yapılandırma dosyası aracılığıyla bir komuta erişim izni verildiyse çalışabileceğini hatırlamak önemlidir. Olmazlarsa ve çoğu Linux dağıtımı varsayılan olarak yapmazsa, bu hatanın hiçbir etkisi olmaz.
Saldırı inşa etmek
Bu güvenlik açığından gerçekten yararlanabilmek için, kullanıcının başka komutları başlatabilen bir komut için yapılandırılmış bir sudoer yönergesi olması gerekir.
Örneğimizde yukarıdaki sudoers direktiflerinde böyle bir emir var; VIM komutu!
test ALL = (ALL, !root) /usr/bin/vim
VIM’de, bir kullanıcı :! komutu ile başka bir program başlatabilir. Örneğin, VIM’de ise, geçerli klasördeki ls
komutunu çalıştırmak için !ls girebilirsiniz.
Bu güvenlik açığından yararlanmak için sudo -u#-1 vim
komutunu kullanırsak, VIM kök olarak başlatılacaktır. Daha sonra !whoami
komutunu uygulayarak bunu doğrulayabilirsiniz.
Şimdi VIM root olarak başlatıldı, ondan yürütülen komutlar da root olarak çalıştırılıyor.
Bu, kolayca tehlike altındaki sistemde istediğiniz herhangi bir komutu çalıştırabilen bir kök kabuğunu başlatmak için kullanılabilir. Bu saldırı aşağıdaki videoda gösterilmektedir.
Bu hata açık bir şekilde güçlü olmakla birlikte, hala Linux kullanıcılarının büyük çoğunluğunu etkilemeyecek standart dışı yapılandırmalar altında kullanılabilir.
Kullanıcılarınızdan sudoers yönergelerini kullananlar için, mümkün olan en kısa sürede sudo 1.8.28 veya üst sürümüne geçmelisiniz.