Saldırganlar, belirli koşullar altında, savunmasız makinelerde uzaktan rastgele kod yürütmek için CUPS açık kaynaklı yazdırma sisteminin birden fazla bileşenindeki bir dizi güvenlik açığını zincirleyebilir.
CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (bardaklara göz atıldı) ve CVE-2024-47177 (bardak filtreleri) olarak takip edilen ve Simone Margaritelli tarafından keşfedilen bu güvenlik kusurları sistemleri varsayılan yapılandırmalarında etkilemez.
CUPS (Common UNIX Printing System’ın kısaltması), Linux sistemlerinde en yaygın kullanılan yazdırma sistemidir ve ayrıca FreeBSD, NetBSD ve OpenBSD gibi Unix benzeri işletim sistemlerini ve bunların türevlerini çalıştıran cihazlarda da genellikle desteklenir.
Bileşenlerinden biri, reklamı yapılan ağ veya paylaşılan yazıcılar için yerel ağda arama yapan ve bunları makinede yazdırılmaya hazır hale getiren bardaklara gözatma arka plan programıdır. Bu, Windows ve Mac’lerin yazdırmak üzere uzak ağ yazıcılarını ağda aramasına benzer.
Margaritelli, çoğu sistemde olmayan, bardaklara göz atılan arka plan programının etkinleştirilmesi durumunda, UDP bağlantı noktası 631’i dinleyeceğini buldu. Ayrıca, varsayılan olarak, yeni bir yazıcı oluşturmak için ağdaki herhangi bir cihazdan uzak bağlantılara izin verecektir.
UDP bağlantı noktası 631’de çalışan, açıkta kalan bardaklara göz atılan bir hizmete manuel olarak tanıtılabilecek kötü amaçlı bir PostScript Yazıcı Tanımı (PPD) yazıcısı oluşturabileceğini keşfetti.
Bu, uzaktaki makinenin kötü amaçlı yazıcıyı otomatik olarak yüklemesine ve yazdırmaya uygun hale getirmesine neden olur. Açığa çıkan sunucudaki kullanıcı yeni yazıcıya yazdırma yaparsa, PPD’deki kötü amaçlı komut bilgisayarda yerel olarak yürütülür.
Yazdırma sırasında yürütülecek komut, bir yazdırma işinin doğru şekilde işlenmesi için aygıtta komutları yürüten bir foomatic-rip filtresi aracılığıyla eklenir.
Sınırlı dünya etkisi
Bu bir uzaktan kod yürütme zinciri olsa da, saldırganların güvenlik açıklarından yararlanabilmeleri ve uzaktan kod yürütmeyi başarabilmeleri için bazı engelleri aşmaları gerektiği en baştan belirtilmelidir.
Birincisi, hedeflenen sistemlerin, UDP bağlantı noktalarını bir ağ üzerinde açığa çıkarabilmesi için, genellikle varsayılan olarak etkin olmayan, bardaklara göz atılan arka plan programının etkinleştirilmiş olması gerekir. Daha sonra saldırganın, kullanıcıyı yerel ağındaki, aniden makinesinde beliren kötü amaçlı bir yazıcı sunucusundan yazdırması için kandırması gerekir.
“Bu, yerel ağınızdaki bir yazıcının, genellikle varsayılan yapılandırmasında açık değilse, ağ keşfi yoluyla otomatik olarak eklenmesiyle sahtecilik yapılmasına dayanan bir hata zinciridir. Daha sonra diğer güvenlik açıklarından yararlanmak için kullanılan doğrulanmamış bir değişkendir. Sonatype Saha CTO’su İlkka Turunen, “Bu, yalnızca bir yazdırma işi tetiklendiğinde CUPS sisteminde kod yürütmek için kullanılıyor” dedi.
“O halde iyi haber; bu bir RCE, ancak saldırganın ağ girişinde büyük ölçüde devre dışı bırakılan ve hizmetin genellikle varsayılan olarak açık olmayan UDP aracılığıyla bir bilgisayara bağlanabilmesi gerektiği gerçeği de dahil olmak üzere çeşitli hafifletmeler var. gerçek dünya etkisi düşük.”
Bu nedenlerden dolayı Red Hat, kusurları kritik olmak yerine “Önemli” önem derecesine sahip olarak derecelendirdi.
BleepingComputer’ın testleri Linux sunucularımızın çoğunun hizmetin varsayılan olarak etkin olmadığını gösterse de, Ubuntu VM’lerimizden biri hizmetin varsayılan olarak etkin olduğunu gösterdi.. Diğerleri de Twitter’da Linux cihazlarında bardaklara göz atma özelliğinin varsayılan olarak etkinleştirildiğini belirtti.
Yama yok ancak azaltıcı önlemler mevcut
Yamalar hâlâ geliştirilme aşamasındayken Red Hat, yöneticilerin, istismar zincirini kırmak için aşağıdaki komutları kullanarak bardaklara göz atılan hizmetin çalışmasını durdurmasını ve yeniden başlatma sırasında başlatılmasını engellemesini gerektiren hafifletme önlemlerini paylaştı:
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
Red Hat kullanıcıları, kendi sistemlerinde cup-browsed’ın çalışıp çalışmadığını öğrenmek için aşağıdaki komutu da kullanabilir:
sudo systemctl status cups-browsed
Sonuç “Aktif: etkin değil (ölü)” ifadesini gösteriyorsa, yararlanma zinciri durdurulmuştur ve sistem savunmasız değildir. Sonuç “çalışıyor” veya “etkin” olarak görünüyorsa ve “BrowseRemoteProtocols” yönergesi /etc/cups/cups-browsed.conf yapılandırma dosyasında “cups” değerini içeriyorsa, sistem savunmasızdır.