Linux ve Unix sistemlerin, yazdırma sistemi olan CUPS (Common UNIX Printing System), bu sistemlerde yazdırma yönetimi ve cihazlar arasında görevleri dağıtmak ile ilgili olan bir servis. Bu servis üzerinde CVE-2024-47076 olarak adlandırılan bir güvenlik açığı açıklandı.
CVE-2024-47076 Nedir?
Saldırganların, CUPS üzerinde uzaktan kod yürütmesine (RCE) olanak sağlayan bir açık keşfedildi. Bu saldırı tekniğinde saldırganlar, sistem üzerinde kötü niyetli bir dizi kod çalıştırarak yönetimi ele alabilir.
Teknik Detaylar
CUPS servisi, yazdırma işlemleri için protokol ve arayüz kullanır. Bu erişim ise HTTP/1.1 protokolü üzerinden istemci ve sunucu arasında gerçekleştirilir. CVE-2024-47076 zaafiyeti de HTTP başlıklarının işlenmesi sırasında ortaya çıkan bir buffer overflow hatasıyla ortaya çıkıyor.
Buffer Overflow (Bellek Taşması) Nedir?
Buffer overflow yöntemi, bir servise beklenenden daha fazla istek gönderilmesiyle ortaya çıkar. Eğer bir servis, beklenenden fazla gönderilen veriyi kontrol edemezse, saldırganlar tarafından kolayca istismar edilebilir.
CVE-2024-47076 senaryosunda, HTTP protokolü ile istekleri işleme alan CUPS, eğer saldırganlar tarafından manipüle edilen bir “Content-Lenght” veya “Transfer-Encoding” başlığı ile buffer overflow yapabiliyorlar. Bu zaafiyet ile birlikte saldırganlar rastgele kod çalıştırmasına veya ilgili CUPS servisinin çökmesine neden olabiliyor.
Etkilenen Sistemler
CVE-2024-47076 açığı, CUPS servisinin 2.4.x sürümlerinde tespit edilmiştir. RedHat ve Ubuntu gibi popüler Linux dağıtımları da CUPS servisinin bu sürümünü kullanmaktadırlar. Özellikle kurumsal ortamlarda yazdırma operasyonlarını bu servis ile yöneten kurumlar yüksek risk altındadır.
Kullandığınız sistemlere göre aşağıdaki komutlarla CUPS servisinizin sürümünü öğrenebilirsiniz;
Ubuntu/Debain Dağıtımlar için;
dpkg -l | grep cups
Bu komut ile sistemde yüklü olan CUPS paketlerinin sürümlerini görebilirsiniz.
Alternatif olarak sadece “cups-daemon” paket sürümünü öğrenmek için;
dpkg -s cups-daemon | grep Version
Red Hat, CentOS ve Fedora için;
rpm -qa | grep cups
Sadece cups paketinin sürümlerini görmek için;
rpm -q cups
Arch Linux ve Manjaro için;
pacman -Q cups
OpenSuse için;
zypper info cups | grep Version
Açığın İstismarı
Saldırgan, CUPS sunucusuna özel hazırlanmış bir HTTP isteği göndererek bu zafiyeti tetikleyebilir. İsteğin başarılı bir şekilde gönderilmesi durumunda, saldırgan rasgele komutları uzaktan çalıştırabilir ve sistem üzerinde tam yetki elde edebilir. Bu, sistemin tamamen ele geçirilmesine, veri sızıntısına veya hizmetin kesintiye uğramasına neden olabilir.
Yama ve Korunma Yolları
Bu kritik zafiyeti kapatmak için Red Hat ve Ubuntu, gerekli güvenlik yamalarını yayınlamıştır. Sistem yöneticilerinin bu yamaları derhal uygulamaları büyük önem taşır. İşte korunmak için bazı adımlar:
• Güncellemeleri Uygulama: CUPS yazılımının en güncel sürümünü kurarak bu zafiyetten korunabilirsiniz. Red Hat ve Ubuntu tarafından yayınlanan güncellemeler, bu açığı kapatmak için gerekli düzeltmeleri içerir.
• Güvenlik Duvarı Konfigürasyonu: CUPS sunucularını sadece güvenilir ağlardan erişilebilir hale getirmek, saldırı yüzeyini önemli ölçüde azaltacaktır. Bu, güvenlik duvarı kuralları ile sınırlandırılabilir.
• Gelişmiş İzleme: Ağ trafiğini izleyerek ve şüpheli etkinlikleri belirleyerek bu tür saldırılara karşı proaktif bir yaklaşım benimseyebilirsiniz. Özellikle HTTP başlıklarını izleyen IDS/IPS çözümleri, bu tür istismar girişimlerini tespit edebilir.
Sistemleriniz Etkileniyor Mu?
Aşağıdaki scriptlerle sistemleriniz bu açıktan etkilenip, etkilenmediğinizi öğrenmek istiyorsanız hazırladığım scripti kullanabilirsiniz;
Ubuntu/Debian
#!/bin/bash # CUPS sürümünü kontrol et CUPS_VERSION=$(dpkg -s cups-daemon 2>/dev/null | grep '^Version:' | awk '{print $2}') # Eğer CUPS yüklü değilse uyarı ver if [ -z "$CUPS_VERSION" ]; then echo "CUPS yüklü değil. Bu sistem CVE-2024-47076 zafiyetinden etkilenmez." exit 0 fi # Zafiyetli sürüm aralığı (örneğin: 2.4.x) VULNERABLE_MAJOR_VERSION="2.4" VULNERABLE_MINOR_VERSION="" # CUPS sürümünün zafiyetli olup olmadığını kontrol et if [[ "$CUPS_VERSION" == "$VULNERABLE_MAJOR_VERSION"* ]]; then echo "UYARI: Bu sistemde CUPS sürümü $CUPS_VERSION ve bu sürüm CVE-2024-47076 zafiyetinden etkilenmektedir!" echo "Sürümü güncellemek için: sudo apt-get update && sudo apt-get install --only-upgrade cups-daemon" else echo "Bu sistemde yüklü olan CUPS sürümü $CUPS_VERSION, CVE-2024-47076 zafiyetinden etkilenmemektedir." fi
RedHat/CentOS/Fedora
#!/bin/bash # CUPS sürümünü kontrol et CUPS_VERSION=$(rpm -q cups --qf '%{VERSION}\n') # Eğer CUPS yüklü değilse uyarı ver if [ -z "$CUPS_VERSION" ]; then echo "CUPS yüklü değil. Bu sistem CVE-2024-47076 zafiyetinden etkilenmez." exit 0 fi # Zafiyetli sürüm aralığı (örneğin: 2.4.x) VULNERABLE_MAJOR_VERSION="2.4" # CUPS sürümünün zafiyetli olup olmadığını kontrol et if [[ "$CUPS_VERSION" == "$VULNERABLE_MAJOR_VERSION"* ]]; then echo "UYARI: Bu sistemde CUPS sürümü $CUPS_VERSION ve bu sürüm CVE-2024-47076 zafiyetinden etkilenmektedir!" echo "Sürümü güncellemek için: sudo yum update cups" else echo "Bu sistemde yüklü olan CUPS sürümü $CUPS_VERSION, CVE-2024-47076 zafiyetinden etkilenmemektedir." fi
ArchLinux/Manjaro
#!/bin/bash # CUPS sürümünü kontrol et CUPS_VERSION=$(pacman -Qi cups | grep Version | awk '{print $3}') # Eğer CUPS yüklü değilse uyarı ver if [ -z "$CUPS_VERSION" ]; then echo "CUPS yüklü değil. Bu sistem CVE-2024-47076 zafiyetinden etkilenmez." exit 0 fi # Zafiyetli sürüm aralığı (örneğin: 2.4.x) VULNERABLE_MAJOR_VERSION="2.4" # CUPS sürümünün zafiyetli olup olmadığını kontrol et if [[ "$CUPS_VERSION" == "$VULNERABLE_MAJOR_VERSION"* ]]; then echo "UYARI: Bu sistemde CUPS sürümü $CUPS_VERSION ve bu sürüm CVE-2024-47076 zafiyetinden etkilenmektedir!" echo "Sürümü güncellemek için: sudo pacman -Syu cups" else echo "Bu sistemde yüklü olan CUPS sürümü $CUPS_VERSION, CVE-2024-47076 zafiyetinden etkilenmemektedir." fi
OpenSUSE
#!/bin/bash # CUPS sürümünü kontrol et CUPS_VERSION=$(zypper info cups | grep Version | awk '{print $3}') # Eğer CUPS yüklü değilse uyarı ver if [ -z "$CUPS_VERSION" ]; then echo "CUPS yüklü değil. Bu sistem CVE-2024-47076 zafiyetinden etkilenmez." exit 0 fi # Zafiyetli sürüm aralığı (örneğin: 2.4.x) VULNERABLE_MAJOR_VERSION="2.4" # CUPS sürümünün zafiyetli olup olmadığını kontrol et if [[ "$CUPS_VERSION" == "$VULNERABLE_MAJOR_VERSION"* ]]; then echo "UYARI: Bu sistemde CUPS sürümü $CUPS_VERSION ve bu sürüm CVE-2024-47076 zafiyetinden etkilenmektedir!" echo "Sürümü güncellemek için: sudo zypper update cups" else echo "Bu sistemde yüklü olan CUPS sürümü $CUPS_VERSION, CVE-2024-47076 zafiyetinden etkilenmemektedir." fi
Sonuç
CVE-2024-47076 gibi güvenlik açıkları, siber güvenlik dünyasında büyük yankı uyandırır. Özellikle CUPS gibi yaygın kullanılan yazılımlar üzerindeki bu tür açıklar, saldırganlara geniş fırsatlar sunar. Bu nedenle, sistem yöneticilerinin ve güvenlik uzmanlarının bu tür zafiyetleri yakından takip etmeleri ve sistemlerini zamanında güncellemeleri hayati önem taşır.
Sonuç olarak, ağ ve sistem güvenliğini sağlamak için yalnızca güncellemeleri uygulamak yeterli değildir; aynı zamanda saldırılara karşı sürekli izleme yapmak ve potansiyel tehditleri önceden belirlemek de gereklidir. Unutmayın, güvenlik zincirinin en zayıf halkası kadar güçlüsünüz.