หลาย ๆ คนน่าจะกำลังเผชิญอยู่กับปัญหาที่เรียกว่า 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