Spring4Shell – kritická zraniteľnosť open source Java frameworku Spring

Spring Framework obsahuje ľahko zneužiteľnú kritickú zraniteľnosť, ktorá umožňuje neautentifikovanému útočníkovi vzdialene vykonávať kód. Spoločnosť VMware, ktorá framework vyvíja, odporúča čo najskôr aktualizovať zraniteľné aplikácie, alebo ak to nie je možné, využiť dočasné možnosti zabránenia zneužitiu zraniteľnosti.  Postup zneužitia je verejne dostupný.

Opis činnosti:

CVE-2022-22965

Zraniteľnosť ovplyvňuje aplikácie, ktoré sú vytvorené pomocou Spring MVC a Spring WebFlux na Java Development kit 9+. Zraniteľnosť existuje pre nesprávnu deserializáciu dát, ktoré sú spracovávané data bindingom. Pre možné zneužitie zraniteľnosti musí byť webová aplikácia publikovaná cez server Apache Tomcat s WAR distribúciou súborov, kde útočník odošle špeciálne upravenú požiadavku POST  webovej aplikácii. Požiadavka, ktorá je spracovaná v  servlete webovej aplikácie, má prístup k súčasti WebAppClassLoader, čo útočníkovi umožní čítať a aktualizovať hodnoty premenných. Útočník tak dostane možnosť požiadavkami POST zapísať na server škodlivý súbor JSP, a tak server kompromitovať.

Spring Boot je framework, ktorý uľahčuje vytváranie samostatných spustiteľných aplikácií založených na JAR archíve. Ak sa Spring Boot nachádza v predvolenej konfigurácii, nemal by byť zraniteľný cez predmetnú chybu.

CVE-2022-22963 (CVSS 9,8)

 Zraniteľnosť sa nachádza aj vo funkcii Spring Cloud. Chyba existuje z dôvodu neoverovania konkrétneho parametra, ktorý môže potenciálny útočník jednoducho odoslať službe prostredníctvom http hlavičky s názvom spring.cloud.function.routing-expression, a tak zapísať v jazyku Spring Expression Language (SpEL) ľubovoľný kód na server, ktorý využíva funkciu Spring Cloud.

Indikátory kompromitácie

PDM:Exploit.Win32.Generic
UMIDS:Intrusion.Generic.Agent.gen
Intrusion.Generic.CVE-*.*

7e46801dd171bb5bf1771df1239d760c – shell.jsp (CVE-2022-22965)
3de4e174c2c8612aebb3adef10027679 – exploit.py (CVE-2022-22965)

Zraniteľné systémy:

  • Spring MVC a Spring WebFlux aplikácie bežiace na JDK9+
  • Spring Cloud Function verzie 3.1.6 a 3.2.2 a staršie nepodporované verzie
  • Spring Framework 5.3.0 až 5.3.17, 5.2.0. až 5.2.19 a staršie nepodporované verzie
  • VMware Tanzu Application Service for VMs – verzie 2.10 až 2.13
  • VMware Tanzu Operations Manager – verzie 2.8 až 2.10
  • VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) – verzie 1.11 až 1.13

Závažnosť zraniteľnosti: Kritická

Možné škody:

  • Kompromitácia webovej aplikácie
  • Vzdialené vykonávanie kódu

Odporúčania:

  • Aktualizovať Spring Framework na verzie 5.3.18 či 5.2.20 a novšie
  • Spring Cloud Function verzie 3.1.7 a 3.2.3 a novšie
  • Aktualizovať Apache Tomcat na verziu 10.0.20, 9.0.62, 8.5.78 a novšie
  • Aktualizovať Spring Boot na verziu 2.6.6 alebo 2.5.12
  • Ak aktualizácia nie je možná: Zraniteľnosť je možné obmedziť downgradom na Java 8, alebo obmedzením bindingu. Viac informácií nájdete na: https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

Odkazy:

https://securelist.com/spring4shell-cve-2022-22965/106239/

https://spring.io/blog/2022/03/31/spring-boot-2-6-6-available-now

https://media.cert.europa.eu/static/SecurityAdvisories/2022/CERT-EU-SA2022-023.pdf

https://www.microsoft.com/security/blog/2022/04/04/springshell-rce-vulnerability-guidance-for-protecting-against-and-detecting-cve-2022-22965/

https://tanzu.vmware.com/security/cve-2022-22965

https://www.bleepingcomputer.com/news/security/vmware-patches-spring4shell-rce-flaw-in-multiple-products/