สรุปสั้น

โครงการ Apache Tomcat ภายใต้ Apache Software Foundation เปิดเผยเมื่อ 20 ตุลาคม 2569 ว่าได้แก้ช่องโหว่ 8 รายการใน Tomcat 11.0.27, 10.1.61 และ 9.0.123 โดยจัดระดับ Important 3 รายการ และ Low 5 รายการ ช่องโหว่ร้ายแรงที่สุดคือ CVE-2026-101296 ใน JNDIRealm ที่ตั้งค่าใช้กลไก SASL แบบที่ไม่ใช่ GSSAPI ซึ่งขาดขั้นตอนตรวจสอบหนึ่งขั้น ทำให้ผู้โจมตียืนยันตัวตนสำเร็จได้โดยไม่ต้องใส่รหัสผ่านที่ถูกต้อง อีกสองรายการระดับ Important คือ CVE-2026-101356 ใน HTTP/2 และ CVE-2026-103119 ใน AJP ทำให้คำขอหรือคำตอบของผู้ใช้คนหนึ่งไปปนกับของอีกคนได้ เสี่ยงข้อมูลข้ามขอบเขตผู้ใช้

ช่องโหว่แต่ละตัวกระทบเวอร์ชันไม่เหมือนกัน และส่วนใหญ่เกิดเฉพาะเมื่อเปิดใช้ฟีเจอร์บางอย่าง เช่น JNDIRealm กับ SASL, HTTP/2 กับ servlet แบบ asynchronous หรือ AJP connector ผู้ดูแลจึงต้องตรวจทั้งเวอร์ชันและการตั้งค่าจริงเพื่อประเมินความเสี่ยง Apache ไม่ได้รายงานว่ามีการโจมตีจริง แต่ช่องโหว่ข้ามการยืนยันตัวตนและความเสี่ยงข้อมูลรั่วข้ามผู้ใช้ควรได้รับการแพตช์โดยเร็วในระบบที่ใช้ฟีเจอร์เหล่านี้

รายละเอียดข่าว

เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 21 ตุลาคม 2569 ว่า Apache ประกาศช่องโหว่ทั้ง 8 รายการผ่านรายชื่ออีเมลประกาศของ Tomcat หลังออกเวอร์ชันแก้ไขให้ทั้งสามสาย คือ 11.0.x, 10.1.x และ 9.0.x ช่องโหว่กระจายอยู่ในหลายสายเวอร์ชัน จึงไม่ใช่ทุกช่องโหว่ที่กระทบทุกเวอร์ชัน และ Apache ระบุชัดว่า CVE-2026-101296 ไม่ใช่การข้ามการล็อกอินแบบครอบจักรวาลสำหรับ Tomcat ทุกเครื่อง แต่เกิดเฉพาะเมื่อใช้ JNDIRealm กับ SASL ที่ไม่ใช่ GSSAPI

ช่องโหว่นี้ต่างจากช่องโหว่ข้ามการยืนยันตัวตนใน JNDIRealm ที่เกี่ยวกับ GSSAPI ซึ่งเคยประกาศก่อนหน้านี้ เพราะรอบนี้เป็นกลไก SASL อื่น ผู้ดูแลจึงต้องตรวจการตั้งค่าการยืนยันตัวตนจริงใน server.xml หรือ context.xml แทนที่จะดูแค่ชื่อคอมโพเนนต์ และแพตช์เก่าของช่องโหว่ควบคุมการเข้าถึงในอดีตไม่ได้ครอบคลุมชุดใหม่นี้

CVEช่องโหว่ระดับ
CVE-2026-101296ข้ามการยืนยันตัวตนใน JNDIRealmImportant
CVE-2026-101356คำขอ/คำตอบ HTTP/2 สลับกันระหว่างผู้ใช้Important
CVE-2026-103119คำตอบ AJP สลับกันระหว่างคำขอImportant
CVE-2026-88041ข้อมูล HTTP/2 trailer รั่วไปคำขอถัดไปLow
CVE-2026-93446การเชื่อมต่อ TLS 1.3 ล้มเหลวเป็นระยะLow
CVE-2026-74049Jasper ทำงานต่อหลัง redirectLow
CVE-2026-74048เปิดโหมด FIPS ล้มเหลวแต่ยังเริ่มระบบต่อLow
CVE-2026-80353race condition สิทธิ์ socket ของ APRLow

รายละเอียดช่องโหว่

CVE-2026-101296 (Important) เกิดใน JNDIRealm ซึ่งเป็นตัวเชื่อม Tomcat เข้ากับไดเรกทอรี LDAP สำหรับยืนยันตัวตน เมื่อตั้งค่าใช้กลไก SASL ที่ไม่ใช่ GSSAPI ระบบขาดขั้นตอนตรวจสอบหนึ่งขั้น ทำให้ผู้โจมตียืนยันตัวตนสำเร็จโดยไม่ต้องใส่รหัสผ่านที่ถูกต้อง กระทบ 11.0.0-M1 ถึง 11.0.26, 10.1.0-M1 ถึง 10.1.60 และ 9.0.0.M1 ถึง 9.0.122

CVE-2026-101356 (Important) เกิดจากการรีไซเคิลและนำออบเจกต์ภายในกลับมาใช้ซ้ำไม่ถูกต้องระหว่างประมวลผล HTTP/2 ของ servlet แบบ asynchronous หลังเกิดข้อผิดพลาด คำขอหรือคำตอบอาจไปปนกับของผู้ใช้อีกคน กระทบ 11.0.22 ถึง 11.0.26, 10.1.55 ถึง 10.1.60 และ 9.0.118 ถึง 9.0.122

CVE-2026-103119 (Important) เกิดในการจัดการคำตอบผ่าน AJP ของ Tomcat 11.0.0-M25 ถึง 11.0.26 การอ่านบัฟเฟอร์ไม่ครบ (buffer under-read) ระหว่างเขียนข้อมูลขนาดใหญ่แบบ non-blocking ทำให้เนื้อหาคำตอบถูกแบ่งไปอยู่ทั้งในคำขอปัจจุบันและคำขอถัดไปบนการเชื่อมต่อเดียวกัน Apache ระบุว่าผลที่น่าจะเกิดคือคำขอที่สองล้มเหลว แต่อาจมีข้อมูลจากคำตอบแรกรั่วออกไปด้วย

ช่องโหว่ระดับ Low ได้แก่ CVE-2026-88041 ที่ข้อมูล HTTP/2 trailer ของคำขอก่อนหน้ารั่วไปยังคำขอถัดไปเพราะล้างข้อมูลไม่ครบ, CVE-2026-93446 ที่ทำให้การเชื่อมต่อ TLS 1.3 ล้มเหลวเป็นพัก ๆ, CVE-2026-74049 ในปลั๊กอิน JSTL <c:redirect> ของ Jasper ที่ไม่หยุดประมวลผลทันทีหลัง redirect ทำให้โค้ดส่วนที่เหลือของหน้ายังทำงานต่อ และ CVE-2026-74048 ในการตั้งค่า OpenSSL-FFM แบบ FIPS ที่เมื่อเปิดโหมด FIPS ไม่สำเร็จ Tomcat แค่บันทึกล็อกข้อผิดพลาดแล้วเริ่มระบบต่อด้วย JSSE แบบไม่ใช่ FIPS แทนที่จะหยุดการเริ่มระบบ

รายการสุดท้าย CVE-2026-80353 กระทบ APR connector ของ Tomcat 9.0.47 ถึง 9.0.122 โดย race condition ขณะสร้าง Unix Domain Socket อาจทำให้ผู้ใช้ภายในเครื่องที่ไม่มีสิทธิ์เข้าถึง socket ได้ Apache ระบุว่าการแก้ CVE-2026-65183 ก่อนหน้านี้ไม่ได้ครอบคลุม connector ตัวนี้

ผลกระทบ

Tomcat เป็นแอปพลิเคชันเซิร์ฟเวอร์ Java ที่ใช้รันระบบภายในองค์กร พอร์ทัลบริการ และแอปพลิเคชันสำเร็จรูปจำนวนมาก ระบบที่ใช้ JNDIRealm เชื่อมกับ LDAP หรือ Active Directory ผ่าน SASL แบบที่ไม่ใช่ GSSAPI เสี่ยงที่สุด เพราะผู้โจมตีอาจเข้าหน้าที่ต้องล็อกอิน เช่น หน้าแอดมินหรือระบบภายใน ได้โดยไม่ต้องรู้รหัสผ่าน ส่วนช่องโหว่ HTTP/2 และ AJP มีความเสี่ยงอีกแบบ คือผู้ใช้คนหนึ่งอาจได้รับข้อมูลหรือเซสชันของผู้ใช้อีกคน ซึ่งร้ายแรงในระบบที่มีข้อมูลส่วนบุคคลหรือข้อมูลการเงิน แม้จะเกิดเฉพาะเงื่อนไขบางอย่างและยากต่อการควบคุมโดยผู้โจมตี

ปัจจัยที่ทำให้แพตช์ล่าช้าคือ Tomcat มักถูกฝังมากับซอฟต์แวร์ของผู้ผลิตรายอื่น ผู้ดูแลอาจไม่รู้ว่าเครื่องใดรัน Tomcat เวอร์ชันไหน และต้องรอผู้ผลิตแอปพลิเคชันออกอัปเดตตาม ส่วน CVE-2026-74048 แม้ระดับ Low แต่กระทบระบบที่ต้องผ่านข้อกำหนด FIPS โดยตรง เพราะระบบอาจทำงานในโหมดที่ไม่เป็นไปตามข้อกำหนดโดยไม่มีใครรู้

คำแนะนำ

  • อัปเดต Apache Tomcat เป็น 11.0.27, 10.1.61 หรือ 9.0.123 ตามสายเวอร์ชันที่ใช้
  • ตรวจ server.xml และ context.xml ว่ามีการใช้ JNDIRealm กับ SASL แบบที่ไม่ใช่ GSSAPI หรือไม่ ถ้ามีให้แพตช์ก่อน และตรวจล็อกการล็อกอินย้อนหลังหาการยืนยันตัวตนที่ผิดปกติ
  • ถ้ายังแพตช์ไม่ได้ ปิด AJP connector ที่ไม่ได้ใช้ และจำกัดให้รับการเชื่อมต่อเฉพาะจาก reverse proxy ที่เชื่อถือได้
  • สำรวจซอฟต์แวร์สำเร็จรูปที่ฝัง Tomcat มาด้วย และติดตามประกาศแพตช์จากผู้ผลิตแต่ละราย
  • ระบบที่ต้องใช้โหมด FIPS ให้ตรวจล็อกตอนเริ่มระบบว่ามีข้อผิดพลาดการเปิดใช้ FIPS หรือไม่
  • เครื่องที่ใช้ Tomcat 9 กับ APR connector แบบ Unix Domain Socket ให้ตรวจสิทธิ์ของ socket และจำกัดผู้ใช้ภายในเครื่อง

แหล่งอ้างอิง