Advertisement
เทคโนโลยี

ช่องโหว่ Brotli ถูกโจมตีจริง เช็กและอัปเดต Node.js ให้เป็นรุ่นที่แก้แล้ว

ช่องโหว่ Brotli (CVE-2026-111497) ถูกขึ้นบัญชีว่าถูกโจมตีจริง ผู้ดูแลระบบที่ใช้ Node.js ควรเช็กรุ่นและอัปเดตตามขั้นตอนนี้

ช่องโหว่ Brotli ถูกโจมตีจริง เช็กและอัปเดต Node.js ให้เป็นรุ่นที่แก้แล้ว

ช่องโหว่ Brotli หมายเลข CVE-2026-111497 ถูกขึ้นบัญชีว่ามีการโจมตีจริงแล้ว ผู้ดูแลระบบและเจ้าของเว็บที่ใช้ Node.js ควรเช็กรุ่นและอัปเกรดให้เป็นรุ่นที่แก้ โดยเฉพาะระบบที่รับไฟล์ Brotli จากภายนอก สำนักงานความมั่นคงปลอดภัยไซเบอร์และโครงสร้างพื้นฐานของสหรัฐฯ (CISA) เพิ่มช่องโหว่นี้เข้าบัญชีเมื่อ 27 ต.ค. 2569 ส่วนผู้ใช้ทั่วไปที่แค่เปิดเว็บหรือใช้แอปไม่ต้องทำอะไร

สถานะเปลี่ยนเป็นถูกโจมตีจริง แปลว่าอะไร

CISA มีบัญชีชื่อ Known Exploited Vulnerabilities หรือ KEV รวบรวมช่องโหว่ที่หน่วยงานยืนยันว่ามีการนำไปโจมตีจริง ไม่ใช่แค่ช่องโหว่ที่มีโอกาสถูกใช้ในทางทฤษฎี เมื่อ 27 ต.ค. 2569 CISA เพิ่มช่องโหว่ในไลบรารี Brotli ของ Google หมายเลข CVE-2026-111497 เข้าบัญชีนี้ CISA ระบุว่าเป็นช่องโหว่ที่ผู้โจมตีระยะไกลไม่ต้องล็อกอินก็ใช้ได้ โดยส่งสตรีม Brotli ที่ปลอมขึ้นให้ระบบประมวลผล ผลที่อาจเกิดคือหน่วยความจำเสียหาย ข้อมูลรั่ว ระบบล่ม หรือถูกสั่งรันโค้ด

ก่อนหน้านี้ช่องโหว่นี้เป็นเพียงประกาศแก้ไขของซอฟต์แวร์ต่างๆ สถานะที่เพิ่งเปลี่ยนจึงเป็นสัญญาณให้ขยับลำดับงานขึ้นมา จากที่เคยเป็นงานอัปเดตตามรอบ ก็ควรเป็นงานที่ต้องรีบทำ

CISA กำหนดให้หน่วยงานรัฐบาลกลางของสหรัฐฯ แก้ภายใน 10 พ.ย. 2569 กรอบเวลานี้ใช้กับหน่วยงานสหรัฐฯ ไม่ใช่ข้อบังคับกับองค์กรในไทย แต่ใช้เป็นเกณฑ์จัดลำดับความสำคัญได้ ถ้าระบบของคุณใช้ซอฟต์แวร์ที่เกี่ยวข้อง การแก้ก่อนวันที่ 10 พ.ย. ก็เป็นเป้าที่สมเหตุสมผล

CISA ไม่ได้เปิดเผยว่าผู้โจมตีเป็นใคร เล็งเป้าหมายใด หรือมีผู้ได้รับผลกี่ราย CISA ระบุเพียงว่าช่องโหว่ใน Google Brotli ถูกโจมตีจริง จึงยังไม่มีข้อมูลว่ามีการโจมตี Node.js โดยเฉพาะ หรือมีระบบในไทยได้รับผลหรือไม่

ช่องโหว่ Brotli เกิดตรงไหน ใครต้องรีบจัดการ

Node.js ประกาศเมื่อ 21 ต.ค. 2569 ว่าช่องโหว่นี้อยู่ในระดับสูง สาเหตุคือตัวถอดรหัส Brotli รายงานบล็อกสลับที่ไม่ถูกต้องว่าต้องการข้อมูลเพิ่มชั่วคราว แทนที่จะเป็นข้อผิดพลาดถาวร ทำให้ตัวถอดรหัสแบบสตรีมเขียนข้อมูลต่อท้ายบัฟเฟอร์ภายใน 8 ไบต์เกินขอบเขต ผู้โจมตีที่ส่งข้อมูล Brotli ให้แอปคลายผ่าน node:zlib จึงทำให้หน่วยความจำเสียหาย โปรเซสล่ม ข้อมูลหน่วยความจำรั่ว หรือรันโค้ดจากระยะไกลได้

ผู้รายงานคือ OpenAI Codex Security (Khai Tran) และ Sylvie Mayer ส่วนผู้แก้ไขคือ mcollina และ aduh95 ช่องโหว่กระทบ Node.js สายรุ่น 22.x, 24.x และ 26.x

เงื่อนไขของความเสี่ยงคือแอปต้องคลายไฟล์ Brotli ที่ผู้อื่นส่งมา ตัวอย่างเช่น เซิร์ฟเวอร์ที่รับข้อมูลบีบอัดแบบ Brotli จากผู้ใช้หรือจากระบบภายนอก แล้วส่งต่อให้ node:zlib คลาย ถ้าแอปของคุณไม่เคยคลายข้อมูล Brotli ที่มาจากภายนอกเลย ความเสี่ยงก็ต่ำลง แต่การอัปเกรดก็ยังเป็นเรื่องที่ควรทำ เพราะโค้ดที่มีปัญหาแพ็กอยู่ในตัว Node.js เอง

กลุ่มที่ต้องลงมือคือนักพัฒนา ผู้ดูแลเซิร์ฟเวอร์ และเจ้าของเว็บที่รัน Node.js เอง ส่วนผู้ใช้ทั่วไปที่เข้าเว็บหรือใช้แอปไม่ต้องติดตั้งหรือตั้งค่าอะไร สิ่งที่ทำได้คือรอให้ผู้ให้บริการหรือผู้พัฒนาแอปอัปเดตระบบของตน

อัปเดต Node.js รับมือช่องโหว่ Brotli / เช็กรุ่นบนเครื่องที่รันจริง / เทียบกับรุ่นที่แก้แล้ว / อัปเกรดในสายเดียวกัน / รีสตาร์ตแล้วเช็กรุ่นซ้ำ
เช็กรุ่น Node.js บนเครื่องที่รันจริง แล้วอัปเกรดเป็นรุ่นที่แก้ในสายเดียวกัน

เช็กรุ่นและอัปเกรด Node.js

เริ่มจากดูว่าเครื่องหรือคอนเทนเนอร์ที่รันแอปใช้ Node.js รุ่นไหน พิมพ์คำสั่ง node -v ในเครื่องที่รันจริง ไม่ใช่เครื่องที่ใช้พัฒนา เพราะสองเครื่องอาจใช้คนละรุ่น ถ้าใช้ Docker ให้ตรวจรุ่นภายในอิมเมจที่ใช้งานจริง และถ้ามีหลายเซิร์ฟเวอร์ ให้ไล่เช็กทุกเครื่อง

รุ่นที่แก้ตามประกาศของ Node.js มีดังนี้

  • Node.js สาย 22.x ต้องเป็น v22.23.4 หรือใหม่กว่า
  • Node.js สาย 24.x ต้องเป็น v24.22.1 หรือใหม่กว่า
  • Node.js สาย 26.x ต้องเป็น v26.12.1 หรือใหม่กว่า

ถ้ารุ่นที่ได้จาก node -v ต่ำกว่าตัวเลขของสายรุ่นตัวเอง ให้อัปเกรดไปรุ่นที่แก้ในสายเดียวกันก่อน เพื่อลดผลข้างเคียงต่อแอปที่ทำงานอยู่ หลังอัปเกรดควรรีสตาร์ตบริการหรือรีดีพลอยคอนเทนเนอร์ แล้วเช็กรุ่นซ้ำ เพราะโปรเซสเดิมที่ยังรันค้างอยู่อาจยังใช้ Node.js ตัวเก่า

นอกจาก Node.js แล้ว ให้เช็กว่าโปรเจกต์มีแพ็กเกจที่เกี่ยวกับ Brotli หรือไม่ ฝั่ง Node.js ใช้คำสั่ง npm ls brotli ดูว่าแพ็กเกจชื่อ brotli อยู่ในรายการพึ่งพาของโปรเจกต์หรือเปล่า ฝั่ง Python ใช้คำสั่ง pip show brotli เพื่อดูว่าติดตั้งแพ็กเกจนี้ไว้และเป็นรุ่นอะไร ผลที่ได้ใช้เทียบกับประกาศของผู้พัฒนาแพ็กเกจนั้น ให้ดูรุ่นที่แก้จากประกาศของผู้พัฒนาแพ็กเกจนั้น

ซอฟต์แวร์อื่นที่ฝัง Brotli และวิธีลดความเสี่ยงชั่วคราว

ไลบรารี Brotli ถูกฝังอยู่ในซอฟต์แวร์หลายตัว Google ออกไลบรารี Brotli รุ่น v1.2.1 เธรดในรายชื่อส่งจดหมายด้านความปลอดภัย oss-security เมื่อ 24 ต.ค. 2569 ระบุว่าซอฟต์แวร์ที่อาจได้รับผลมี Envoy Proxy, Istio, Bun และแพ็กเกจ brotli บน PyPI โดยรายการ PyPI มาจากโพสต์ของ Aikido Security ที่อ้างในเธรดนั้น

คำว่าอาจได้รับผล หมายความว่ายังต้องรอดูประกาศของแต่ละโครงการ รุ่นที่แก้ของแต่ละโครงการแตกต่างกัน ให้ดูจากประกาศของโครงการนั้นโดยตรง ผู้ดูแลระบบที่ใช้ซอฟต์แวร์เหล่านี้ควรเปิดดูหน้าประกาศความปลอดภัยของแต่ละโครงการเอง และอัปเดตตามที่โครงการนั้นแนะนำ

ถ้าอัปเกรดทันทีไม่ได้ มีหลักทั่วไปที่ช่วยลดความเสี่ยงระหว่างรอ คือไม่รับไฟล์หรือข้อมูล Brotli จากแหล่งที่ไม่น่าเชื่อถือ และจำกัดช่องทางที่ให้ผู้ใช้ภายนอกส่งข้อมูลบีบอัดเข้ามา จนกว่าจะอัปเกรดเสร็จ นี่เป็นหลักทั่วไปด้านความปลอดภัย ไม่ใช่คำแนะนำอย่างเป็นทางการของ Node.js และไม่ได้ทดแทนการอัปเกรด

บทเรียนที่ใช้ซ้ำได้กับช่องโหว่ไลบรารีฝังครั้งต่อไปคือ ช่องโหว่มักซ่อนอยู่ในไลบรารีที่ซอฟต์แวร์อื่นแพ็กมาด้วย ไม่ใช่เฉพาะซอฟต์แวร์ที่ติดตั้งเอง เมื่อมีข่าวช่องโหว่ในไลบรารีใด ให้ถามสามข้อ คือระบบของเราใช้ไลบรารีนั้นผ่านซอฟต์แวร์ตัวไหนบ้าง รุ่นที่ใช้อยู่ตรงกับรุ่นที่แก้หรือยัง และผู้พัฒนาซอฟต์แวร์แต่ละตัวออกประกาศแล้วหรือไม่ แล้วติดตามบัญชี KEV ของ CISA ควบคู่ไปด้วย เพราะเป็นตัวบอกว่าช่องโหว่ไหนควรขึ้นมาอยู่หัวคิวก่อน

ที่มา: ประกาศความปลอดภัยของ Node.js (October 2026 security releases) บัญชี Known Exploited Vulnerabilities ของ CISA และเธรดในรายชื่อส่งจดหมาย oss-security วันที่ 24 ต.ค. 2569

บทความที่เกี่ยวข้อง