กลับไปหน้าข่าวสาร

Apache Struts พบช่องโหว่ 4 รายการ เสี่ยง RCE, DoS และข้อมูลรั่วไหลข้ามผู้ใช้งาน

แชร์:

Apache Software Foundation ประกาศแพตช์ช่องโหว่ 4 รายการ ใน Apache Struts ครอบคลุมความเสี่ยงตั้งแต่ Remote Code Execution (RCE) ไปจนถึง Denial of Service (DoS) และ การรั่วไหลข้อมูลข้ามผู้ใช้งาน องค์กรที่ใช้งาน Struts 2.x, 6.x หรือ 7.x ในแอปพลิเคชัน Web ควรตรวจสอบเวอร์ชันและอัปเดตโดยด่วน โดยเฉพาะช่องโหว่ CVE-2026-104711 ที่มีความเสี่ยงสูงสุดในระดับ Important


รายละเอียดทางเทคนิค


CVE-2026-104711 — OGNL Injection → Remote Code Execution (Important)


  • ▸ ช่องโหว่: OGNL Expression Injection ใน Legacy RESTful Action Mapper ของ Struts — ผู้โจมตีส่ง Crafted HTTP Request ที่มี OGNL Expression ใน URL เพื่อ Inject คำสั่งที่ Server จะ Execute ในฐานะ Application Process
  • ▸ เงื่อนไขที่เสี่ยง: แอปพลิเคชันต้องใช้ Legacy RESTful Action Mapper — หากใช้ Default Mapper, restful2 mapper หรือ Struts REST Plugin จะ ไม่ได้รับผลกระทบ จากช่องโหว่นี้ สำหรับ Struts 7 จะเสี่ยงเฉพาะเมื่อปิด OGNL Allowlist
  • ▸ เวอร์ชันที่ได้รับผลกระทบ: Struts 2.0.0–2.3.37, 2.5.0–2.5.33, 6.0.0–6.11.0, 7.0.0–7.3.0 (เมื่อปิด Allowlist)


CVE-2026-104712 — BigDecimal DoS (Moderate)


  • ▸ ช่องโหว่: Request ขนาดเล็กที่มี Parameter ประเภท java.math.BigDecimal สามารถบังคับให้ Server สร้าง Response ขนาดใหญ่มากผิดปกติ ส่งผลให้ CPU และ Network Bandwidth ถูกใช้งานหนักจาก Sustained Low-Volume Traffic แบบ Unauthenticated
  • ▸ Workaround ชั่วคราว: กำหนด Custom BigDecimal Converter ที่จำกัด Scale ก่อน Rendering ผ่าน struts-conversion.properties ใน Classpath Root
  • ▸ เวอร์ชันที่ได้รับผลกระทบ: Struts 2.5.14–2.5.33, 6.0.0–6.11.0, 7.0.0–7.3.0


CVE-2026-104713 — Unbounded REST Request Body → Heap Memory Exhaustion (Important)


  • ▸ ช่องโหว่: REST Plugin ของ Struts อ่าน Request Body เข้า Memory โดยไม่มีการจำกัดขนาด — ผู้โจมตีส่ง Request ขนาดใหญ่เพียงครั้งเดียวเพื่อ Exhaust Heap Memory ของ Server ทำให้เกิด OutOfMemoryError และ Application ล่ม
  • ▸ Fix: เวอร์ชันที่แก้ไขแล้วกำหนด Default Limit ที่ 2,097,152 characters (~2MB) — องค์กรที่ยังไม่สามารถ Upgrade ควร Enforce Request Body Limit ที่ Reverse Proxy หรือ Servlet Container แทน
  • ▸ เวอร์ชันที่ได้รับผลกระทบ: Struts 2.1.8–2.3.37, 2.5.0–2.5.33, 6.0.0–6.11.0, 7.0.0–7.3.0


CVE-2026-104714 — Localized Message Formatter Race Condition → Data Leakage (Moderate)


  • ▸ ช่องโหว่: Shared Message Formatter สำหรับ Date/Time ใน Struts ไม่ Thread-Safe — เมื่อมี Concurrent Requests หลายรายการพร้อมกัน ค่าวันที่/เวลาของ User คนหนึ่งอาจปรากฏใน Response ของ User อีกคน หรือทำให้เกิด Rendering Error โดยไม่ต้องมี Malicious Input
  • ▸ Workaround ชั่วคราว: Format Date/Time ก่อนนำไปใช้ใน Message Interpolation เพื่อหลีกเลี่ยงการใช้ Shared Formatter
  • ▸ เวอร์ชันที่ได้รับผลกระทบ: Struts ทุก Branch ที่ระบุถึง 6.11.0 และ 7.3.0


เวอร์ชันที่แนะนำให้อัปเดต


  • ▸ Struts 7.x: อัปเดตเป็น 7.4.0 หรือใหม่กว่า
  • ▸ Struts 6.x: อัปเดตเป็น 6.12.0 หรือใหม่กว่า
  • ▸ ยังไม่มีรายงานการโจมตีแบบ Active Exploitation ณ เวลาที่เผยแพร่


ผลกระทบที่อาจเกิดขึ้น


  • ▸ RCE บน Production Server: CVE-2026-104711 ที่ประสบความสำเร็จให้สิทธิ์ผู้โจมตีรันคำสั่งบน Server ในฐานะ Application Process — หากแอปพลิเคชันรันด้วยสิทธิ์สูงหรืออยู่ในเครือข่ายที่เชื่อมต่อ Internal Systems ผลลัพธ์อาจรุนแรงถึงการเข้าถึงฐานข้อมูล, Internal APIs และ Credentials
  • ▸ DoS กระทบ Service Availability: CVE-2026-104712 และ CVE-2026-104713 สามารถทำให้ Application หยุดทำงานได้ด้วย Traffic ปริมาณน้อย เหมาะสำหรับ Targeted Attack เพื่อ Disrupt Service โดยเฉพาะในช่วง Peak Period
  • ▸ Data Leakage ผิด PDPA/GDPR: CVE-2026-104714 อาจทำให้ข้อมูลส่วนบุคคล (วันเดือนปีเกิด, วันที่ Transaction) ของ User คนหนึ่งรั่วไหลไปยัง User อื่น ซึ่งเป็นความเสี่ยงด้าน Regulatory Compliance


สิ่งที่องค์กรควรทำ


  • ▸ Inventory และ Prioritize: สำรวจแอปพลิเคชันที่ใช้ Apache Struts ทั้งหมดในองค์กร ระบุเวอร์ชันและ Configuration (โดยเฉพาะการใช้ Legacy Mapper และ REST Plugin) เพื่อ Prioritize การ Patch ตามความเสี่ยงจริง
  • ▸ อัปเกรดเป็น Struts 7.4.0 / 6.12.0: แผนก Development ควรทดสอบ Compatibility กับ Struts 7.4.0+ หรือ 6.12.0+ ในสภาพแวดล้อม Staging ก่อน Deploy Production — หากไม่สามารถ Upgrade ได้ทันที ให้ Apply Workaround ตามที่ Apache แนะนำสำหรับแต่ละ CVE
  • ▸ Review Mapper Configuration: ตรวจสอบว่าแอปพลิเคชันใช้ Legacy RESTful Action Mapper หรือไม่ หากไม่จำเป็น ให้ Migrate ไปยัง Default Mapper หรือ Restful2 ซึ่งไม่ได้รับผลกระทบจาก CVE-2026-104711
  • ▸ กำหนด Request Body Limit ที่ Reverse Proxy: เพิ่ม client_max_body_size (Nginx) หรือ LimitRequestBody (Apache HTTP Server) เป็น Defense-in-Depth ลด Attack Surface ของ CVE-2026-104713


แนวทางลดความเสี่ยงระยะยาว


  • ▸ Software Composition Analysis (SCA): ใช้เครื่องมือ SCA เช่น Snyk, Dependabot หรือ OWASP Dependency-Check ใน CI/CD Pipeline เพื่อ Detect Framework Vulnerability โดยอัตโนมัติ ก่อนที่โค้ดจะ Deploy สู่ Production
  • ▸ WAF Rule สำหรับ OGNL Injection: กำหนด WAF Rule เฉพาะสำหรับ Block Request ที่มีรูปแบบ OGNL Expression ใน URL Parameter — เป็น Mitigation ระยะสั้นที่ช่วยลด Exposure ระหว่างรอ Patch
  • ▸ Least Privilege สำหรับ Application Process: ให้ Web Application รันด้วยสิทธิ์ต่ำสุดที่จำเป็น (Non-root User, Read-only Filesystem ที่ไม่จำเป็น) เพื่อจำกัดผลกระทบหาก RCE สำเร็จ
  • ▸ Secure SDLC Policy: กำหนด Policy ที่ไม่อนุญาตให้ Deploy Framework Version ที่มี Known Critical/Important CVE โดยไม่ผ่านกระบวนการ Risk Acceptance อย่างเป็นทางการ


วิเคราะห์ในมุมมองจาก TXEC


Apache Struts มีประวัติยาวนานในฐานะ Framework ที่ถูกโจมตีผ่านช่องโหว่ OGNL Injection — CVE-2017-5638 ซึ่งใช้ในการโจมตี Equifax ปี 2017 เป็นบทเรียนที่ชัดเจนว่า การ Patch Struts ล่าช้าแม้เพียงไม่กี่สัปดาห์สามารถนำไปสู่ Data Breach ระดับชาติ


CVE-2026-104711 มีรูปแบบใกล้เคียงกับช่องโหว่ที่เคยถูก Weaponize มาแล้ว แม้ปัจจุบันยังไม่มีรายงาน Active Exploitation แต่ในอดีต PoC Exploit มักปรากฏภายใน 1-2 สัปดาห์หลังเปิดเผย CVE ที่มีรายละเอียดเพียงพอ


สำหรับองค์กรในประเทศไทยที่ใช้ Custom Java Web Application หรือ Government/Enterprise Portal ที่พัฒนาบน Struts ทีม TXEC แนะนำให้ อัปเกรดเป็นลำดับแรกสุดในไตรมาสนี้