CVE-2018-11776 · Bilgilendirme

Apache Struts Remote Code Execution Vulnerability

Apache Struts'ün CVE-2018-11776 zafiyeti, uzaktan kod yürütme riski taşır. Detaylar ve güvenlik önlemleri için tıklayın.

Üretici
Apache
Ürün
Struts
Seviye
yüksek
Yayın Tarihi
05 Nisan 2026
Okuma
8 dk okuma

CVE-2018-11776: Apache Struts Remote Code Execution Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

CVE-2018-11776, Apache Struts çerçevesinde bulunan bir uzaktan kod yürütme (RCE - Remote Code Execution) zafiyetidir. Bu zafiyet, Apache Struts kullanıcılarını hedef alarak, saldırganların kötü niyetli kodlar çalıştırmasına olanak tanıdığı için büyük bir tehdit oluşturur. Zafiyetin keşfi, 2018 yılının Temmuz ayında gerçekleşmiş ve resmi olarak 2018 yılının Eylül ayında duyurulmuştur. Bu durum, birçok kurumsal sistemin ve web uygulamasının etkilenmesine neden olmuştur.

Apache Struts, Java tabanlı bir web uygulama çerçevesidir ve dünya genelinde büyük ölçekli kurumsal uygulamalar geliştirmek için sıklıkla kullanılmaktadır. Zafiyet, özellikle "alwaysSelectFullNamespace" yapılandırması true olarak ayarlandığında meydana gelir ve bu durumda, sonuç tanımları için bir değer ayarlanmadığında ve aynı zamanda üst paket ayarlarının ya hiçbir namespace ya da joker karakter içermediği durumlarda ortaya çıkar. Bu durum, özellikle karmaşık yapılandırmalara sahip uygulamalarda daha fazla risk taşır.

Zafiyetin detaylarına inmek gerekirse, saldırganlar, URL etiketini kullanarak, değer ve eylem ayarlanmamış durumlarda bu açıkları istismar edebilir. Bu tür bir koşul, genel olarak web uygulamalarının yapılandırmalarında sıkça karşılaşılabilecek bir durumdur ve dolayısıyla güvenlik açığının gerçekleşmesi çok da zor değildir. Üstelik, bu durum, birçok sektörü doğrudan etkileyebilecek bir zafiyettir ve finans, sağlık, eğitim gibi kritik alanlarda önemli hasarlara yol açabilir.

Gerçek dünya senaryolarında, bu tür bir zafiyetin istismar edilmesi, saldırganların sunucuda uzaktan kod çalıştırmasına olanak tanıyabilir. Örneğin, bir banka uygulamasında bu zafiyet istismar edildiğinde, saldırganlar finansal verilere erişebilir, kullanıcı hesaplarını tehlikeye atabilir ve istemci ile sunucu arasındaki güvenliği ihlal edebilir. Bunun yanı sıra, bir sağlık kayıt sistemi üzerinde gerçekleştirilen bir saldırı, hastaların tüm kişisel ve tıbbi bilgilerinin ifşasına yol açabilecektir.

Apache Struts zafiyeti sonrasında, mühendislik ekiplerinin yapılandırmaları gözden geçirmesi ve güvenlik bütçelerini artırması gerektiği ortaya çıkmıştır. Güvenlik önlemlerinin artırılması, zafiyetin etkilerinin azaltılmasına yardımcı olabilmektedir. Bu bağlamda, sürekli güncellemeler ve iyi yapılandırılmış güvenlik protokolleri oluşturmak şarttır. Özellikle yapılandırma dosyalarının kontrol edilmesi, en iyi uygulamalar doğrultusunda güncellenmesi ve zararlanrıan sistemlerin hızlıca patch (yamanma) edilmesi kritik bir öneme sahiptir.

Sonuç olarak, CVE-2018-11776 zafiyeti, web uygulama güvenliği alanında önemli bir ders niteliğindedir. Bu tür açıkların varlığı, sadece belirli bir yazılıma özgü olmamakla birlikte, tüm yazılım geliştiricilerin ve siber güvenlik uzmanlarının dikkatli ve proaktif yaklaşım sergilemesini gerektirmektedir. Güvenilir bir yazılım geliştirme ortamı oluşturmak, analist ve mühendislerin, yeni güvenlik boşluklarını sürekli izlemeleri ve bunlara hızla müdahale etmeleri ile mümkün olabilecektir.

Teknik Sömürü (Exploitation) ve PoC

Apache Struts, popüler bir web uygulama framework’ü olup, kolayca geliştirme yapabilen araçlar sunar. Ancak, CVE-2018-11776 olarak bilinen uzaktan kod yürütme (Remote Code Execution - RCE) zafiyeti, uygun yapılandırmalar yapılmadığında siber saldırganların uygulamaların güvenliğini tehlikeye atması için bir yol sunmaktadır. Bu zafiyet, belirli koşullar altında oluşur ve sistem yöneticilerinin dikkatli olması gerekmektedir.

Bu zafiyetin sömürülmesi, genellikle iki aşamalıdır. İlk olarak, zafiyetten etkilenen bir Apache Struts uygulamasının bulunması gerekmektedir. İkinci olarak, uygun HTTP istekleri göndererek bu zafiyetten faydalanmak için bir exploit geliştirilmelidir.

Apache Struts uygulamasına yönelik bir saldırı gerçekleştirmek için aşağıdaki adımları takip edebilirsiniz:

  1. Hedef Uygulamanın Belirlenmesi: İlk olarak, CVE-2018-11776 zafiyeti için etkilenebilecek bir Apache Struts sürümünü kullanan uygulama bulmalısınız. Bu, genellikle sistemin yapılandırma dosyalarındaki değerleri kontrol etmeyi gerektirir. Özellikle alwaysSelectFullNamespace ayarının true olup olmadığını ve eğer bir result değeri tanımlanmışsa üst paket yapılandırmalarının durumu incelenmelidir.

  2. Sistem Bilgisi Toplanması: Hedef uygulamaya yönelik bilgi toplamak için standart testler yapın. GET veya POST istekleri ile sistemin durumu ve bana ait bir dosya ile etkileşim durumu analiz edilmelidir.

    Örneğin:

   GET /yourtarget/path HTTP/1.1
   Host: target-application.com
  1. Saldırı Payload'unun Oluşturulması: Zafiyeti sömürmek için özel bir payload oluşturmalısınız. Eğer result tanımlanmamışsa ve upper package configuration üzerinde uygun bir ayar yoksa, aşağıdaki gibi bir payload kullanılabilir:
   GET /yourtarget/path?methodName=%{(#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#obj= new java.lang.ProcessBuilder(new java.lang.String[]{'whoami'})).(#obj.redirectErrorStream(true)).(#process=#obj.start()).(#process.waitFor())} HTTP/1.1
   Host: target-application.com
  1. HTTP İsteğinin Gönderilmesi: Yaratılan payload'ı hedef uygulamaya göndermenin ardından yanıtı kontrol edin. Başarılı bir istek, hedef sistemde olası bir komut çalıştırımı ve beklenen çıktıyı döndürmelidir.

  2. Yanıtın Analizi: Başarılı bir sömürü sonucunda sunucudan dönen yanıtları inceleyin. Eğer sistem üzerinde whoami komutu çalıştırıldıysa, bu zafiyetin başarılı bir şekilde sömürüldüğü anlamına gelir.

  3. Gerçek Dünya Senaryosu: Örneğin, bir web uygulaması geliştiren bir firma, bu zafiyeti göz ardı ettiğinde, saldırganların sunucu üzerinde tam kontrol sahibi olmasına olanak verir. Saldırgan, kritik verileri çalabilir veya sistemi hasar verecek şekilde kullanabilir.

Unutulmamalıdır ki, etik hacking uygulamalarında bu tür zafiyetleri kullanmak yalnızca yasal izinle ve güvenlik testleri için yapılmalıdır. Aksi durumda hukuki sonuçlarla karşılaşabilirsiniz. Ayrıca, işletmelerin bu tür zafiyetlerden korunmak için güncellemelerini sürekli takip etmeleri ve güvenlik yapılandırmalarını gözden geçirmeleri çok önemlidir.

Forensics (Adli Bilişim) ve Log Analizi

CVE-2018-11776, Apache Struts üzerinde tespit edilen ve uzaktan kod yürütme (RCE - Remote Code Execution) olanağı sağlayan bir güvenlik açığıdır. Bu tür zafiyetler, siber güvenlik uzmanlarının sürekli olarak göz önünde bulundurması gereken önemli tehditler arasında yer alır. Özellikle, Apache Struts gibi yaygın kullanılan web framework'lerinde ortaya çıktığında, saldırganların sisteminize erişim sağlaması ve uzaktan komut çalıştırabilmesi için bir kapı aralayabilir.

Bu zafiyet, "alwaysSelectFullNamespace" ayarının true olduğu durumlarla başlar. Eğer bu ayar aktifse ve alt yapılandırmalarda bir sonuç değeri tanımlanmamışsa, üst paket yapılandırması da uygun bir namespace (ad alanı) içermiyorsa, saldırganlar kötü niyetli kod ekleyebilirler. Bunun yanı sıra, URL etiketinin çalışma şekli de bu açığı tetikleyebilir. Eğer bir URL etiketi değer veya eylem (action) tanımlanmadan kullanılıyorsa ve üst pakette de uygun bir namespace bulunmuyorsa, bu durum da zafiyetin istismarına yol açabilir.

Siber güvenlik uzmanları, bu tür bir güvenlik açığının istismar edilip edilmediğini anlamak için çeşitli log kaynaklarını incelemelidir. Bu kaynaklar arasında erişim logları (Access log) ve hata logları (Error log) ön plana çıkar. Erişim logları, web uygulamasına yapılan tüm istekleri kaydederken, hata logları uygulamada meydana gelen hataların detaylarını içerir. Bu logların analiz edilmesi, olası bir saldırının tespit edilmesi açısından kritik öneme sahiptir.

Bir siber saldırının temel izleri, log dosyalarında genellikle şunlar şeklinde karşımıza çıkar:

  1. Anormal HTTP İstekleri: Log dosyalarında sıradışı URL dizeleri veya beklenmedik HTTP metodlarının kullanıldığına dair izler bulmak, potansiyel bir istismar belirtisi olabilir. Örneğin, aşağıdaki gibi bir erişim kaydı, zararlı bir istek olduğunun göstergesi olabilir:
   192.168.1.1 - - [10/Mar/2023:13:55:36 +0300] "GET /myapp/somepath.action?id=123&value=${rce_script} HTTP/1.1" 200 512

Buradaki ${rce_script}, uzaktan kod yürütmeyi amaçlayan bir injeksi temsil edebilir.

  1. Hata Mesajları: Hata loglarında, beklenmeyen hata mesajları veya tanımsız davranışlar, kötü niyetli bir erişimin izlerini taşıyabilir. Özellikle, "javax.servlet.ServletException" gibi belirteçler açık bir saldırı ile ilişkilendirilebilir.

  2. Zaman Anomalileri: Log dosyalarının zaman damgalarını analize ettiğinizde, normalin dışında yoğun trafik saatleri ya da anormal istek sıklıkları gözlemlenebilir. Bu, bir sızma girişiminin işareti olabilir.

  3. Şüpheli İstemci IP Adreleri: Log dosyalarında sürekli olarak aynı IP adresinden gelen ve rastgele komutlar yollayan kullanıcılar, potansiyel tehdit faktörleri arasında yer alır. Özellikle bu IP adreslerinin coğrafi konumu taranarak, saldırı kaynağı belirlenebilir.

Siber güvenlik uzmanları, bu tür izlerin yanı sıra, belirlenen imzaları (signature) da incelemelidir. Örneğin, bir istismar sırasında kullanılan payloadlar (yük) genellikle belirli bir biçim veya içerik barındırır. Bu tür kalıplar, güvenlik yazılımları tarafından tespit edilebilir.

Sonuç olarak, CVE-2018-11776 gibi zafiyetlerin kötüye kullanılması, ciddi güvenlik riskleri oluşturur. Siber güvenlik uzmanlarının etkili bir log analizi yaparak, bu tür istismarları zamanında tespit etmesi ve önlem alması kritik öneme sahiptir. Adli bilişim alanında dikkatli bir analiz ve izleme süreci, sistemlerinizin güvenliğini artıracak ve olası saldırıları önleyecektir.

Savunma ve Sıkılaştırma (Hardening)

Apache Struts, web uygulamaları için geniş çapta kullanılan bir framework olup, zaman zaman güvenlik açıklarına maruz kalabiliyor. CVE-2018-11776 zafiyeti, uzaktan kod yürütmeye (Remote Code Execution - RCE) izin veren ciddi bir güvenlik açığıdır. Bu tür bir açık, kötü niyetli bir saldırganın sistem üzerinde uzaktan komutlar çalıştırmasına olanak tanır ve bu da veri ihlali, sistem kontrolü kaybı gibi felaket sonuçlara yol açabilir.

Bu açığı kapatmanın birkaç temel yolu vardır. Öncelikle, her geliştirme ortamında güvenlik güncellemelerinin düzenli olarak kontrol edilmesi ve uygulanması çok önemlidir. Apache Struts için en son sürümün kullanılması, bu tür açıkların çoğunu kapatır. Apache'nin resmi web sitesinden veya güvenlik bültenlerinden güncellemeleri takip etmek, olası güvenlik açıkları açısından kritik bir adımdır.

Alternatif olarak, uygulamanızın yapılandırmasında alwaysSelectFullNamespace seçeneğinin dikkatli bir şekilde ayarlanması gerekmektedir. Eğer bu seçenek "true" olarak ayarlandığında ve bir sonuç değeri tanımlanmamışsa, sistem büyük bir risk altına girmiş olur. Dolayısıyla, bu yapılandırmayı "false" yaparak ya da belirli bir sonuç değeri tanımlayarak açığı kapatabilirsiniz.

Firewall (WAF) kullanmak da önemli bir diğer savunma katmanıdır. Uygulama katmanında filtreleme yapan WAF'lar, kötü amaçlı istekleri tespit edebilir ve engelleyebilir. Aşağıda belirtilen WAF kuralları, CVE-2018-11776 zafiyetini hedef alacak şekilde oluşturulabilir:

# WAF Kuralı: Apache Struts ile ilgili istekleri kontrol et
SecRule ARGS:namespace "@rx \.\./" "id:100001,phase:2,deny,status:403,msg:'Apache Struts RCE Attack Detected'"
SecRule REQUEST_URI "@rx /myapp/struts" "id:100002,phase:2,deny,status:403,msg:'Apache Struts URL Tag Attack Detected'"

Bu kurallar, URL parametrelerinde tehlikeli karakterlerin ve belirli desenlerin bulunup bulunmadığını kontrol eder. Uygulamanızda bu tür kötü niyetli istekler tespit edildiğinde, 403 Forbidden yanıtıyla iptal edilmesini sağlar.

Kalıcı sıkılaştırma (hardening) önerileri arasında, sadece gerekli yetkilere sahip kullanıcıların sisteme erişim sağlaması için rol bazlı erişim kontrolü (RBAC) uygulanması önerilir. Aynı zamanda, uygulama sunucularında güvenlik güncellemelerinin otomatik olarak uygulanması, runtime ortamları için izlenebilirlik ve loglama mekanizmalarının kurulması büyük önem taşır. Güvenlik açıklarının hızlı bir şekilde tespit edilmesi ve yanıt verebilmek için bir izleme sistemi ve acil durum planı oluşturmak, organizasyonel güvenlik düzeyini artıracaktır.

Son olarak, uygulama kodlamasında ve yapılandırmalarda güvenlik en iyi uygulamalarının benimsenmesi gerekiyor. Geliştiricilerin güvenlik farkındalığı eğitimi alması, potansiyel tehditleri azaltacaktır. RCE gibi çok yetenekli saldırılara karşı hazırlıklı olmak, hem uygulama güvenliği hem de genel iş sürekliliği açısından kritik öneme sahiptir.

Bu adımları atarak, CyberFlow platformunun güvenliğini artırabilir ve CVE-2018-11776 benzeri zafiyetlerin sisteminizi tehdit etmesini önleyebilirsiniz.