Ubuntu Linux tarafından kullanılan ve 10 yıl önce 21.04 sürümünde tanıtılan needrestart yardımcı programında beş yerel ayrıcalık yükseltme (LPE) güvenlik açığı keşfedildi.
Kusurlar Qualys tarafından keşfedildi ve CVE-2024-48990, CVE-2024-48991, CVE-2024-48992, CVE-2024-10224 ve CVE-2024-11003 olarak takip ediliyor. Bunlar, Nisan 2014’te yayımlanan needrestart sürüm 0.8’de tanıtıldı ve yalnızca dün sürüm 3.8’de düzeltildi.
Needrestart, paket güncellemelerinden sonra yeniden başlatılması gereken hizmetleri tanımlamak ve bu hizmetlerin paylaşılan kitaplıkların en güncel sürümlerini çalıştırmasını sağlamak için Ubuntu Sunucusu da dahil olmak üzere Linux’ta yaygın olarak kullanılan bir yardımcı programdır.
LPE kusurlarının özeti
Qualys’in keşfettiği beş kusur, savunmasız bir Linux sistemine yerel erişimi olan saldırganların, kullanıcı etkileşimi olmadan ayrıcalıklarını root’a yükseltmelerine olanak tanıyor.
Kusurlarla ilgili tüm bilgiler ayrı bir metin dosyasında sunuldu, ancak bir özet aşağıda bulunabilir:
- CVE-2024-48990: Needrestart, Python yorumlayıcısını çalışan işlemlerden çıkarılan bir PYTHONPATH ortam değişkeniyle çalıştırır. Yerel bir saldırgan bu değişkeni kontrol ediyorsa, Python’un başlatılması sırasında kötü amaçlı bir paylaşılan kitaplık yerleştirerek kök olarak rastgele kod çalıştırabilir.
- CVE-2024-48992: Needrestart tarafından kullanılan Ruby yorumlayıcısı, saldırgan tarafından kontrol edilen bir RUBYLIB ortam değişkenini işlerken saldırıya açıktır. Bu, yerel saldırganların sürece kötü amaçlı kitaplıklar enjekte ederek rastgele Ruby kodunu kök olarak yürütmesine olanak tanır.
- CVE-2024-48991: Needrestart’taki bir yarış durumu, yerel bir saldırganın doğrulanmakta olan Python yorumlayıcı ikili dosyasını kötü amaçlı bir yürütülebilir dosyayla değiştirmesine olanak tanır. Değiştirme işlemini dikkatli bir şekilde zamanlayarak, kodlarını root olarak çalıştırmak için needrestart’ı kandırabilirler.
- CVE-2024-10224: Needrestart tarafından kullanılan Perl’ün ScanDeps modülü, saldırgan tarafından sağlanan dosya adlarını hatalı şekilde işliyor. Saldırgan, dosya açıldığında kök olarak isteğe bağlı komutları yürütmek için kabuk komutlarına benzeyen dosya adları oluşturabilir (örneğin, command|).
- CVE-2024-11003: Needrestart’ın Perl’ün ScanDeps modülüne güvenmesi, onu ScanDeps’in kendisindeki güvenlik açıklarına maruz bırakır; burada eval() işlevlerinin güvenli olmayan kullanımı, saldırgan tarafından kontrol edilen girdiyi işlerken rastgele kod yürütülmesine yol açabilir.
Saldırganın bu kusurlardan yararlanabilmesi için kötü amaçlı yazılım veya güvenliği ihlal edilmiş bir hesap aracılığıyla işletim sistemine yerel erişim sağlaması gerekeceğini ve bunun da riski bir ölçüde azaltacağını unutmamak önemlidir.
Ancak saldırganlar, Loony Tunables ve bir nf_tables hatasından yararlanan biri de dahil olmak üzere kök kazanmak için geçmişte benzer Linux ayrıcalık yükseltme güvenlik açıklarından yararlandı; bu nedenle, bu yeni kusur sırf yerel erişim gerektirdiği için göz ardı edilmemelidir.
Needrestart’ın yaygın kullanımı ve çok uzun süredir savunmasız kalması nedeniyle, yukarıdaki kusurlar kritik sistemlerde ayrıcalık yükseltme fırsatları yaratabilir.
Belirlenen tüm güvenlik açıklarına yönelik yamaları içeren sürüm 3.8 veya sonraki sürüme yükseltmenin yanı sıra, güvenlik açıklarından yararlanılmasını önleyen yorumlayıcı tarama özelliğini devre dışı bırakacak şekilde needrestart.conf dosyasının değiştirilmesi önerilir.
# Disable interpreter scanners.
$nrconf{interpscan} = 0;
Bu, needrestart’ın potansiyel olarak saldırgan tarafından kontrol edilen ortam değişkenlerine sahip yorumlayıcıları çalıştırmasını durdurmalıdır.