Node.js แก้ CVE-2026-111497 ใน Brotli decoder: ตรวจรุ่น 22, 24 และ 26
Node.js ออก security release วันที่ 21 ตุลาคม 2026 แก้ช่องโหว่ Brotli decoder ที่อาจทำให้หน่วยความจำเสียหายหรือรันโค้ดได้ ตรวจรุ่นแก้ 22.23.4, 24.22.1 และ 26.12.1
โครงการ Node.js ออก security release สำหรับสาย 22.x, 24.x และ 26.x เมื่อวันที่ 21 ตุลาคม 2026 โดยหนึ่งในรายการระดับ High คือ CVE-2026-111497 ช่องโหว่การเขียนหน่วยความจำเกินขอบเขตในตัวถอดรหัส Brotli ซึ่งอาจทำให้โปรเซสล้ม เปิดเผยข้อมูลในหน่วยความจำ หรือในเงื่อนไขที่เหมาะสมอาจนำไปสู่การรันโค้ดจากระยะไกล ระเบียน CVE เผยแพร่ครั้งแรกวันที่ 22 ตุลาคม 2026 จึงเป็นประเด็นใหม่ที่ทั้งประกาศผู้พัฒนาและระเบียน CVE อยู่ภายใน 48 ชั่วโมง
รุ่น Node.js ที่โครงการเผยแพร่เพื่อแก้ปัญหานี้คือ 22.23.4, 24.22.1 และ 26.12.1 ตามลำดับของแต่ละสาย รายการนี้ไม่ใช่คำเตือนว่าแอป Node.js ทุกตัวจะถูกโจมตีจากอินเทอร์เน็ตโดยอัตโนมัติ เงื่อนไขที่ต้องพิจารณาคือมีข้อมูล Brotli ที่ผู้โจมตีควบคุมได้ไหลเข้าตัวถอดรหัสหรือไม่ และโปรเซสรันด้วยสิทธิ์ใด บทความนี้สรุปสิ่งที่ผู้ดูแลและนักพัฒนาควรตรวจ โดยยึด ประกาศ security release ของ Node.js และ ระเบียน CVE ต้นทาง
ช่องโหว่อยู่ในส่วนไหน
Brotli เป็นรูปแบบบีบอัดข้อมูลที่ใช้ได้กับเนื้อหาเว็บและข้อมูลชนิดอื่น เมื่อแอปหรือ runtime รับสตรีมที่บีบอัดมา ตัวถอดรหัสจะอ่านโครงสร้างและสร้างข้อมูลต้นฉบับกลับออกมา ระเบียน CVE ระบุข้อผิดพลาดในตัวถอดรหัสของ Google Brotli ที่ไฟล์ c/dec/decode.c ซึ่งอาจทำให้เกิด buffer overflow จากสตรีมที่สร้างขึ้นเป็นพิเศษ ผลที่ระบุรวมถึงการทำให้หน่วยความจำสถานะของ decoder เสียหาย การเปิดเผยข้อมูลจากหน่วยความจำ การปฏิเสธการให้บริการ และความเป็นไปได้ของการรันโค้ด
ประกาศของ Node.js ระบุว่า CVE นี้กระทบสาย 26.x, 24.x และ 22.x และรวมการแก้ไขของ Brotli ไว้ใน security release วันที่ 21 ตุลาคม ทีมงานจัดความรุนแรงของรายการนี้เป็น High ระเบียน CVE ครอบคลุมไลบรารี Brotli ที่ใช้แยกจาก Node.js ด้วย แต่การตรวจรุ่นและวิธีอัปเดตของไลบรารีที่ติดตั้งตรง ๆ ต้องอิงแพ็กเกจหรือระบบปฏิบัติการที่นำมาใช้งาน ไม่ควรคิดว่าการอัปเกรด Node.js เพียงอย่างเดียวจะแก้สำเนา Brotli ทุกชุดในเครื่อง
การโจมตีตามคำอธิบายของ CVE ไม่ต้องมีบัญชีผู้ใช้ในตัว decoder เอง แต่ความเสี่ยงของบริการจริงขึ้นกับเส้นทางรับข้อมูล หากแอปดาวน์โหลดเนื้อหาจากภายนอกแล้วแตกไฟล์ Brotli, รับไฟล์ที่ผู้ใช้ส่งมา, หรือมีฟังก์ชันที่ถอดรหัสสตรีมจากแหล่งที่ควบคุมไม่ได้ ควรให้ความสำคัญกับการตรวจเส้นทางเหล่านั้น แอปที่ไม่มีทางส่งข้อมูลไม่เชื่อถือเข้าตัวถอดรหัสอาจมีความเสี่ยงต่างกัน อย่างไรก็ดี การอัปเดต runtime ยังเป็นวิธีจัดการที่ตรงที่สุด เพราะการติดตามทุกเส้นทางข้อมูลด้วยมืออาจพลาด library ที่เรียกใช้ภายใน
รุ่นแก้ไขที่ต้องแยกตามสาย
Node.js 22.23.4 ระบุรายการแก้ Brotli ภายใต้ CVE-2026-111497 เช่นเดียวกับ Node.js 24.22.1 และ Node.js 26.12.1 ผู้ดูแลควรตรวจ major line ก่อนเลือกแพตช์ เพราะการเปลี่ยนจาก 22 ไป 26 ไม่ใช่ขั้นตอนเดียวกับการอัปเดต patch release ภายในสายที่ใช้อยู่ หากองค์กรใช้ Node.js ผ่าน container image ให้ตรวจเวอร์ชันใน image ที่ถูก deploy จริง ไม่ใช่เฉพาะ package.json หรือเวอร์ชันที่ติดตั้งบนเครื่องพัฒนา
ประกาศ Node.js ยังมีรายการแก้ปัญหาความปลอดภัยอื่นใน security release เดียวกัน เช่น TLS, DNS และ dependency หลายตัว ข่าวนี้เจาะเฉพาะ CVE-2026-111497 เพื่อให้ตรวจสอบต้นเหตุและผลกระทบได้ชัด ผู้ใช้ที่กำลังวางแผนอัปเดตควรอ่านประกาศทั้งฉบับและ release note ของสายที่ใช้อยู่ เพราะการย้าย runtime จะรวมการเปลี่ยนอื่นไปพร้อมกัน
วิธีตรวจและรับมือ
เริ่มจากทำบัญชีจุดที่รัน Node.js: เว็บแอป, API, worker, job, CLI ที่เปิดให้ผู้ใช้ส่งข้อมูล และ image ที่ใช้ใน CI/CD ตรวจเวอร์ชันของโปรเซสจริงด้วย node --version ภายใน environment ที่ deploy ไม่ใช่ตรวจเฉพาะเครื่อง build ถ้ามีหลาย replica หรือ blue-green deployment ให้ตรวจครบทุกชุดก่อนถือว่าการอัปเดตเสร็จ จากนั้นเลือก security release ตามสายเดิม: 22.23.4, 24.22.1 หรือ 26.12.1 หรือรุ่นใหม่กว่าของสายที่ได้รับการสนับสนุน
ทดสอบเส้นทางที่รับข้อมูลบีบอัดหลังอัปเดต เช่น การอ่าน response จาก upstream, การประมวลผลไฟล์อัปโหลด และงาน queue ที่แตกสตรีม Brotli ตรวจว่าค่าการใช้หน่วยความจำ อัตรา error และการรีสตาร์ตโปรเซสกลับสู่ระดับปกติ การทดสอบนี้เป็นการยืนยันการทำงานของระบบหลังเปลี่ยนรุ่น ไม่ใช่หลักฐานว่าแอปเคยถูกโจมตีหรือไม่ถูกโจมตี
หากสงสัยว่ามีการโจมตี ให้เก็บ access log, application log และข้อมูลการล่มของโปรเซสตามนโยบายองค์กรก่อนหมุนเวียนทิ้ง สังเกตคำขอหรือไฟล์บีบอัดที่สัมพันธ์กับ crash ซ้ำ ๆ และพิจารณาขอบเขตสิทธิ์ของโปรเซสที่รัน Node.js การจำกัดสิทธิ์ container, filesystem และข้อมูลลับที่โปรเซสเข้าถึงได้ช่วยลดผลกระทบหากมีช่องโหว่อื่นร่วม แต่ไม่ใช่การแก้บั๊ก decoder แทนการอัปเดต
สำหรับระบบที่ติดตั้ง Google Brotli แยกจาก Node.js ระเบียน CVE ระบุช่วงเวอร์ชันของไลบรารีที่ได้รับผลกระทบและรุ่นแก้ในแต่ละสายไว้ต่างหาก จึงต้องตรวจแพ็กเกจนั้นจาก package manager หรือผู้แจกจ่ายของระบบ ไม่ควรใช้เลขเวอร์ชัน Node.js ไปตัดสินความปลอดภัยของไลบรารี Brotli ที่ฝังอยู่ในซอฟต์แวร์อื่น
วันที่อ้างอิง: ประกาศ Node.js และ release 22.23.4 ลงวันที่ 21 ตุลาคม 2026; ระเบียน CVE-2026-111497 เผยแพร่วันที่ 22 ตุลาคม 2026