ช่องโหว่ด้านความปลอดภัยระดับ Critical ใน Apache Tomcat (CVE-2025-24813) ทำให้เซิร์ฟเวอร์เสี่ยงต่อการถูกโจมตีในลักษณะ Remote code execution (RCE), การเปิดเผยข้อมูล และเสี่ยงต่อการเกิดความเสียหายของข้อมูล
ช่องโหว่นี้เกิดจากการจัดการ HTTP PUT request บางส่วนที่ไม่เหมาะสม ซึ่งส่งผลกระทบต่อ Apache Tomcat เวอร์ชัน 11.0.0-M1 ถึง 11.0.2, 10.1.0-M1 ถึง 10.1.34 และ 9.0.0-M1 ถึง 9.0.98
Apache Software Foundation ได้ออกแพตช์อัปเดต Tomcat 11.0.3, 10.1.35 และ 9.0.98 และแนะนำให้ผู้ใช้งานทำการอัปเกรดโดยทันทีเพื่อลดความเสี่ยงจากการถูกโจมตี
ช่องโหว่ใน Apache Tomcat
ช่องโหว่นี้เกิดจากการจัดการ PUT requests บางส่วนของ Tomcat ซึ่งทำให้ผู้ใช้งานสามารถอัปโหลดไฟล์เป็นส่วนได้
โค้ดต้นฉบับ (ซึ่งได้รับการแก้ไขใน commit 0a668e0c) จะสร้างชื่อไฟล์ชั่วคราวโดยการแทนที่ path separators (เช่น /) ด้วย internal dots (.) ซึ่งทำให้เกิดช่องโหว่ path equivalence ทำให้ผู้โจมตีสามารถใช้ประโยชน์จากช่องโหว่นี้เพื่อ:
- Bypass Security Controls : โดยการสร้างชื่อไฟล์ เช่น ../../sensitive/file.jsp ซึ่งทำให้ผู้โจมตีสามารถเขียนไฟล์นอกไดเรกทอรีที่กำหนดไว้ได้
- Inject Malicious Content : สามารถเขียนทับไฟล์ configuration หรือไฟล์ JSP ทำให้สามารถโจมตีในลักษณะ RCE ได้ หากเซิร์ฟเวอร์ประมวลผลไฟล์เหล่านี้
- Expose Sensitive Data : เข้าถึงไฟล์ที่ถูกจำกัดผ่าน path traversal ได้ หากเปิดใช้งานสิทธิ์การเขียนของ default servlet (ปิดใช้งานเป็นค่าเริ่มต้น)
สำหรับการโจมตีในลักษณะ RCE ผู้โจมตีต้องการ:
- Default Servlet ต้องเปิดให้เขียนไฟล์ได้ (ไม่ใช่ค่าเริ่มต้นที่ถูกกำหนดไว้)
- การรองรับ PUT Requests บางส่วน (เปิดใช้งานตามค่าเริ่มต้น)
- ใช้การจัดเก็บเซสชันแบบไฟล์ (ตำแหน่งเก็บข้อมูลค่าเริ่มต้น)
- มีไลบรารีที่มีช่องโหว่ด้าน Deserialization ในแอปพลิเคชัน
ความรุนแรงของช่องโหว่นี้อยู่ที่ความเสี่ยงในการเพิ่มระดับเพิ่มสิทธิ์ และ Lateral Movement ภายในระบบ ตัวอย่างเช่น:
- Data Corruption : ผู้โจมตีสามารถแก้ไขไฟล์เซสชัน (SESSIONS.ser) ที่ถูกเก็บไว้ใน $CATALINA_BASE/work ทำให้สามารถแก้ไขเซสชันของผู้ใช้ และอาจเปลี่ยนแปลงสิทธิ์ของผู้ใช้ในระบบ
- RCE via JSP Uploads : การอัปโหลด JSP ที่เป็นอันตรายไปยัง web root (เช่น webapps/ROOT) จะทำให้สามารถเรียกใช้โค้ดตามที่ต้องการได้
- Information Leakage : PUT requests บางส่วนอาจเปิดเผยโครงสร้างไดเร็กทอรี หรือไฟล์ configuration เช่น server.xml
สิ่งที่น่าสังเกตคือ ช่องโหว่นี้ทำให้ปัญหาก่อนหน้านี้ซับซ้อนขึ้น เช่น CVE-2024-56337 (การแก้ไขปัญหาที่ไม่สมบูรณ์ของ CVE-2024-50379) ซึ่งแสดงให้เห็นถึงความเสี่ยงเชิงระบบในกระบวนการจัดการไฟล์ของ Tomcat
การลดผลกระทบ
- อัปเกรดเป็นเวอร์ชัน Tomcat 11.0.3, 10.1.35 หรือ 9.0.98 เพื่อแก้ไขช่องโหว่
- หากไม่สามารถอัปเกรดได้ ให้ตั้งค่า allowPartialPut=”false” ในการกำหนดค่า DefaultServlet
- ตรวจสอบให้แน่ใจว่าพารามิเตอร์ readonly ของ servlet เริ่มต้นยังคงเป็น true (ค่าเริ่มต้น) เพื่อป้องกันการเขียนไฟล์ที่ไม่ได้รับอนุญาต
- ลบ หรืออัปเดตไลบรารีที่อาจเกิดการโจมตีแบบ deserialization (เช่น XStream เวอร์ชันเก่า หรือ JDK serialization ที่ไม่ได้รับการอัปเดต)
สำหรับ Java Environments ควรดำเนินการดังต่อไปนี้เพื่อลดความเสี่ยงเพิ่มเติม :
- Java 17 : ตั้งค่า -Dsun.io.useCanonCaches=false เพื่อป้องกัน case-insensitive filesystem conflicts
- Java 21+ : ไม่ต้องดำเนินการใด ๆ เพิ่มเติม เนื่องจาก cache system ที่มีปัญหาได้ถูกลบออกไปแล้ว
นักวิจัยด้านความปลอดภัยเน้นย้ำถึงความเร่งด่วนในการแก้ไขช่องโหว่ดังกล่าว โดย Mark Thomas จากทีมความปลอดภัยของ Apache Tomcat ระบุว่า "ช่องโหว่นี้แสดงให้เห็นถึงความเสี่ยงของการใช้งาน write-enabled servlet กับ case-insensitive filesystems"
เนื่องจากคาดว่าการโจมตีโดยใช้ช่องโหว่นี้จะเกิดขึ้นในไม่ช้า ขอแนะนำให้ผู้ดูแลระบบเร่งทำการอัปเกรด เพื่อลดความเสี่ยงจากการถูกโจมตี ตามที่ Apache ได้เตือนว่า "การเปิดใช้งานค่าเริ่มต้นของคุณสมบัติ PUT บางส่วน ทำให้ความเสี่ยงจากการถูกโจมตีเพิ่มมากขึ้น"
ที่มา : cybersecuritynews
You must be logged in to post a comment.