· kaynak dev.to (home feed)
On yıllık Struts RCE açığı CVE-2016-3081, CISA'nın aktif sömürülen kataloğuna eklendi
2016 tarihli, Apache Struts 2.3.x'i etkileyen kod çalıştırma açığı CVE-2016-3081, CISA'nın aktif olarak sömürülen güvenlik açıkları kataloğuna eklendi. Sömürülebilmesi için Dynamic Method Invocation özelliğinin etkin olması gerekiyor.

2016 tarihli bir Struts açığı artık CISA'nın sömürülenler listesinde
Nisan 2016'da yayımlanan, Apache Struts 2.3.x'teki uzaktan kod çalıştırma açığı CVE-2016-3081, dev.to'nun kayıt üzerine yaptığı bir analize göre 8 Ekim 2026'da CISA'nın Bilinen Sömürülen Güvenlik Açıkları (KEV) kataloğuna eklendi. Kataloğa alınmak, açığın aktif olarak sömürüldüğünün teyit edildiği anlamına gelir; bu da genellikle ABD federal kurumları için zorunlu düzeltme süreçlerini tetikler ve diğer herkes için önceliği yükseltir. NVD, açığı CVSS puanı 8.1 olarak değerlendiriyor ve vektör yüksek saldırı karmaşıklığı içeriyor — başlıkta yer alan sayıdan daha çok önemi olan detay bu.
Etkilenen sürümler Struts 2.3.19 ile 2.3.20.2 arası, 2.3.21 ile 2.3.24.1 arası ve 2.3.25 ile 2.3.28 arası sürümlerdir. Zafiyetli bir dağıtıma erişebilen bir saldırgan, zincirli bir ifade içinde method: öneki kullanan bir istek göndererek rastgele kod çalıştırabilir.
Sömürü tek bir yapılandırma bayrağına bağlı
Açık yalnızca Dynamic Method Invocation (DMI) açık olduğunda çalışır. DMI, struts.enable.DynamicMethodInvocation özelliğiyle kontrol edilen, bir istek parametresinin Struts'un bir action üzerinde hangi metodu çağıracağını belirlemesine izin veren bir yapılandırma ayarıdır. Etkinleştirildiğinde, Struts'un metod adını çözmek için kullandığı OGNL ifade dili kod çalıştıracak şekilde manipüle edilebilir; dev.to'daki yazının açıkladığı gibi, devre dışı bırakıldığında saldırı yolu kapanır.
Bu ön koşul, puanın yüksek saldırı karmaşıklığı taşımasının nedenidir. Taranan bir saldırgan her Struts 2.3.x sunucusunu tek tek deneyip girmeyi bekleyemez: birinin DMI'yı açmış olduğu, çoğunlukla yıllar önce eski bir sayfayı desteklemek için ve genellikle kararın hiçbir kaydı olmadan açmış olduğu bir dağıtım bulması gerekir. Katalog kaydı, en az bir böyle dağıtımın bulunduğunu ve kullanıldığını kanıtlıyor; bu, her Struts 2.3.x kurulumunun sömürülebilir olduğu anlamına gelmez.
Envanter çalışma zamanında yapılmalı
Bayrağı bulmak, kaynak depolarını aramaktan daha zordur, çünkü yapılandırma artefaktlarda birikir: eski bir WAR içindeki struts.xml, paylaşılan bir kütüphaneye gömülü bir properties dosyası ya da izlenmeyen bir daldan yeniden derlenmiş bir build. Kaynak kontrolünde grep yapmak yalnızca insanların yaptığını hatırladığı ayarları yakalar. dev.to'daki yazar bunun yerine çalışma zamanında envanter çıkarılmasını öneriyor: dağıtılmış web uygulamalarını listelemek, her Struts çekirdek JAR sürümünü çıkarmak ve her uygulamanın yapılandırma zincirinde DMI'nin etkin olup olmadığını belirlemek. Ayarın doğrulanamadığı dağıtımlar güvenli değil, bilinmeyen olarak ele alınmalıdır.
Bir sömürü nasıl görünür ve nasıl yakalanır
Başarılı bir istek, uygulama sunucusunun ayrıcalıklarıyla JVM içinde çalışan bir OGNL ifadesi içeren bir metod adını çözer. Oradan sonrası tanıdıktır: servis hesabı olarak komut çalıştırma, yapılandırma dosyalarının ve bağlantı dizelerinin açığa çıkması ve saldırgan kontrollü altyapıya giden bağlantılar.
Kötü niyetli istek web katmanında sıradan bir parametreye benzediğinden ve OGNL aynı yükü yazmanın birçok eşdeğer yolunu sunduğundan, dizi imzalı tespitin raf ömrü kısadır. dev.to gönderisi bunun yerine davranışsal tespiti savunuyor: bir Java sürecinin sh, cmd.exe veya PowerShell başlatması çoğu uygulama sunucusunda olağandışıdır; aynı şekilde bir uygulama sunucusundan hiçbir politikanın yetekilendirmediği bir hedefe giden bağlantı da öyledir. Her ikisi de çerçeveden bağımsız olarak uyarı vermeye değerdir.
Düzeltme sırası
Struts'u yükseltin. Etkilenen aralık 2.3.28'de bitiyor ve düzeltilmiş bir sürüm yaklaşık on yıldır mevcut; dolayısıyla hâlâ 2.3.x üzerinde olan bir dağıtım tek satırlık bir yama değil bir yükseltme projesiyle karşı karşıyadır ve doğru yanıt bu projedir.
Bu çeyrekte yükseltme yapılamayacak yerlerde ara adım, DMI'yı açıkça devre dışı bırakmak ve değişikliğin çalışan uygulamada etkili olduğunu doğrulamak, ardından da ona bağımlı olan sayfaları test etmektir; sonuçta özellik muhtemelen bir gerekçeyle açılmıştır. Ekipler ayrıca, günlük saklama süresinin ötesinde kalacak işaretlere odaklanarak sunucularda daha önce ele geçirilmiş olma izlerini incelemelidir: dağıtım dizinindeki beklenmeyen dosyalar, yeni oluşturulmuş zamanlanmış görevler ve JVM başlatma argümanlarındaki değişiklikler.
Neden önemli
Kayıt, bir açığın ifşasından on yıl sonra yeniden gündeme gelebileceğini gösteriyor. Aynı Ekim 2026 katalog güncellemesi 2015, 2016 ve 2021 yıllarındaki açıkları kapsayan kayıtları da ekledi; dev.to'daki yazar bu kümelenmeyi, eski çerçeve sürümlerini tarayan, bilinen yükleri yeniden oynatan ve yanıt veren her şeyi paraya çeviren bir sömürü ekonomisinin imzası olarak yorumluyor. Eski Java yığınlarını işleten herkes için ders şu: bir üreticinin varsayılanı, üretilen yapılandırmayı tanımlar, üretimde gerçekten çalışan devralınmış dağıtımı değil — ve bir KEV kaydı bu belirsizliği somut, tarihli bir yükümlülüğe dönüştürür.
- #apache-struts
- #security
- #cve
- #java
- #vulnerability-management
İlgili yazılar
- Viral 'yamalanmamış PHP RCE' iddiası çürütüldü: CVE-2026-115560 nadir görülen bir runtime serializer değişikliği gerektiriyor
- NGINX 1.31.7 ve 1.30.6, yalnızca belirli directive'ler etkinleştirildiğinde önem taşıyan beş CVE'yi düzeltiyor
- Arista VeloCloud Orchestrator: sömürülen CVE-2026-114625'i düzelten kesin build'ler