หลาย ๆ คนน่าจะกำลังเผชิญอยู่กับปัญหาที่เรียกว่า Spring4Shell
หรือจาก CVE-2022-22965 : Spring Framework RCE via Data Binding on JDK 9+
โดยทางทีมพัฒนาของ Spring ได้เขียนสรุปปัญหาและการแก้ไขปัญหาต่าง ๆ
ไว้ในบทความนี้ Spring Framework RCE, Early Announcement

ปัญหานี้จะกระทบกับ Spring MVC และ Spring WebFlux ที่ทำงานบน JDK 9 ขึ้นไป
และต้องทำการ package และ deploy เป็น WAR file เท่านั้น บน Tomcat
ส่วนถ้าเป็น JAR file จะไม่มีปัญหา (แต่ก็ไม่นิ่งนอนใจ)

Spring framework ที่โดนผลกระทบนี้ มี version ดังนี้

  • 5.3.0 – 5.3.17
  • 5.2.0 – 5.2.19
  • และ version ที่ต่ำกว่านี้ จะโดนหมด

สถานะในตอนนี้

ทำการแก้ไขและ release Spring Framework 5.3.18 และ 5.2.20 แล้ว
ดังนั้น Spring Boot 2.6.6 และ 2.5.12 ถูกแก้ไขแล้ว เพราะว่าใช้งาน Spring Framework 5.3.18 นั่นเอง

แนวทางการแก้ไขเฉพาะหน้า (Workaround)

  • ทำการ update Spring Framework มาใช้ version 5.3.18 และ 5.2.20
  • ทำการปิดการ binding ใน code ของ project ดังนี้

จากบทความใน Reference Website ด้านล่างนั้น

ทางทีมพัฒนาของ Spring บอกว่า การที่ไป deprecated SerializationUtils นั้น
เป็นความเข้าใจที่ไม่ถูกต้อง และไม่เกี่ยวกับปัญหานี้เลย
รวมทั้งที่บอกว่ามีผลต่อ Spring Cloud Function ก็ไม่ใช่ด้วย

Reference Websites