Spring4Shell Spring Cloud Function Güvenlik Zafiyetleri
Spring4Shell & CVE-2022-22963 Zafiyeti
Spring4Shell ve Spring Cloud Function (CVE-2022-22963) 'daki güvenlik açıkları, kimlik doğrulama olmadan uzaktan kötü amaçlı kod yürütülmesine izin vermektedir. İlgili güvenlik zafiyetleri ile birlikte hedef sistem üzerinde kontrol kazanılması muhtemeldir.
Spring4Shell, Java kitaplığında yer alan Log4j güvenlik açığının ardından son birkaç ay içerisinde keşfedilen ikinci çok yüksek güvenlikli zafiyettir.
Spring4Shell
Güvenlik açığı, kimliği doğrulanmamış bir saldırganın hedef sistemde rastgele kod yürütmesine olanak tanır. Bazı yapılandırmalarda, yalnızca bir tehdit aktörünün savunmasız bir sisteme belirli bir HTTP isteği göndermesini gerektirir. Diğer yapılandırmalar, saldırgan tarafından ek çaba ve araştırma gerektirebilir
Başlangıçta Java 9 veya üzeri sürümlerde çalışan tüm Spring uygulamalarını etkileyeceği düşünülürken, daha sonra bir Spring uygulamasının savunmasız olması için karşılanması gereken belirli gereksinimlerin olduğu belirlendi.
Örneğin, Spring, Apache Tomcat'e dağıtıldığında, WebAppClassLoader'a erişilebilir, bu da bir saldırganın alıcıları ve ayarlayıcıları çağırarak diske kötü amaçlı bir JSP dosyası yazmasına olanak tanır.
Belirli yapılandırmalarda, yalnızca bir saldırganın savunmasız bir sisteme hazırlanmış bir POST isteği göndermesini gerektirdiğinden, bu sorunun istismarı basittir. Ancak, farklı yapılandırmaların kullanılması, saldırganın etkili olacak yükleri bulmak için ek araştırma yapmasını gerektirecektir.
İlgili zafiyetlerin henüz CVSS numarası bulunmamakla birlikte Spring Cloud Function’a göre daha kritik seviyede sınıflandırılmaktadır.
CVE-2022-22963
HTTP istek başlığı spring.cloud.function.routing-expression parametresinin ve SpEL ifadesinin StandardEvaluationContext aracılığıylla enjekte edilmesine ve yürütülmesine izin vermektedir.
İlgili zafiyetlerin CVSS puanları 9.0 olarak belirlenmiştir ve yüksek olarak sınıflandırılmaktadırlar.
Zafiyetli Versiyonlar
Etkilenen Spring Cloud Function sürümleri şunlardır:
- Spring Cloud Function 3.1.6
- Spring Cloud Function 3.2.2
- Spring Cloud Function daha eski, desteklenmeyen sürümler
- JDK >= Version 9 çalışmaktadır
Etkilenen Spring4Shell sürümleri şunlardır:
- Spring Core <= 5.3.17
- JDK >= Version 9 çalışmaktadır
Çözüm Önerileri
İlgili zafiyetten etkilenmeniz durumunda Spring Cloud Function uygulamasının 3.1.7 ve 3.2.3 sürümlerine güncellemeniz tavsiye edilmektedir.
Spring4Shell zafiyeti hakkında henüz bir güvenlik yaması yer almamaktadır.
Buna ek manuel olarak aşağıdaki çözümler uygulanabilir;
Kaynak kod üzerinde ControllerAdvice bileşenine aşağıdaki BinderControllerAdvice metodu eklenerek deny list oluşturulmalıdır.
Zafiyet tetiklenirken aşağıda yer alan girdiler http header üzerinde gönderilmektedir. Bu sebeple aşağıdaki değişkenlerin kontrolü için güvenlik ürünlerine ilgili kuralların eklenmesi önerilmektedir.
- suffix:%>//
- c1:Runtime
- c2:<%
- DNT:1
- Detecting and Mitigating CVE-2022-22963: Spring4Shell RCE Vulnerability
- CVE-2022-22963: Spring Expression Resource Access Vulnerability
Referanslar
- https://www.bleepingcomputer.com/news/security/new-spring-java-framework-zero-day-allows-remote-code-execution/
- https://securityboulevard.com/2022/03/update-on-0-day-vulnerabilities-in-spring-spring4shell-and-cve-2022-22963/
- https://summonsboard-news.com/teknoloji/analist-spring4shell-guvenlik-aciginin-gercek-dunyadaki-uygulamalari-etkileyebilecegini-soyluyor/33503/