ข้ามไปยังเนื้อหา
Software

Node.js แพตช์ CVE-2026-111497 ช่องโหว่ Brotli รันโค้ดได้ และอีก 9 ช่องโหว่ในสาย 22–26

CVE-2026-111497 ช่องโหว่ระดับ High ในตัวถอดรหัส Brotli ของ Node.js ทำให้รันโค้ดได้ แพตช์แล้ว 21 ต.ค. 2026 ใน 22.23.4, 24.22.1 และ 26.12.1 พร้อมอีก 9 CVE

โดย กองบรรณาธิการ THAI DATA อ่าน 5 นาที

แชร์FacebookXLINELinkedIn
ภาพประกาศ Node.js Wednesday, October 21, 2026 Security Releases ซึ่งแก้ CVE-2026-111497 และช่องโหว่อื่นอีก 9 รายการ
ภาพ: Node.js

สรุปประเด็นสำคัญ

  • โครงการ Node.js ออก 22.23.4, 24.22.1 และ 26.12.1 เมื่อ 21 ตุลาคม 2026 แก้ช่องโหว่ 10 รายการ ระดับ High 4 รายการ Medium 3 รายการ และ Low 3 รายการ
  • CVE-2026-111497 เป็นการเขียนข้อมูลเกินขอบเขตในตัวถอดรหัส Brotli ที่ Node.js ระบุว่าเปิดทางรันโค้ดจากระยะไกล กระทบทั้งสาย 22.x, 24.x และ 26.x และ Node.js 20 ที่หมดอายุแล้วจะไม่ได้รับการแก้
  • ประกาศของ Vercel วันที่ 21 ต.ค. ระบุว่าแอปจะเสี่ยงเมื่อโค้ดหรือไลบรารีถอดรหัสข้อมูล Brotli ที่ผู้โจมตีควบคุม ทั้งใน request body และ response ที่ดึงมา และนักวิจัยสาธิตการรั่วของหน่วยความจำและการรันคำสั่งได้แล้ว
  • แพตช์ชุดนี้ยังปิดช่องโหว่ข้ามการตรวจชื่อโฮสต์ในใบรับรอง TLS 2 รายการ อัปเดต OpenSSL, c-ares, Undici และชุดใบรับรองต้นทางจากกรณี eMudhra Intermediate CA

โครงการ Node.js ออกรุ่นแก้ช่องโหว่ 22.23.4, 24.22.1 และ 26.12.1 เมื่อวันที่ 21 ตุลาคม 2026 ตามที่ประกาศล่วงหน้าไว้ รายการร้ายแรงที่สุดคือ CVE-2026-111497 การเขียนข้อมูลเกินขอบเขตในตัวถอดรหัส Brotli ที่ Node.js ระบุว่าเปิดทางรันโค้ดจากระยะไกล และกระทบทุกสายที่ยังได้รับการดูแล

แพตช์รอบนี้แก้ช่องโหว่รวม 10 รายการ ระดับ High 4 รายการ Medium 3 รายการ และ Low 3 รายการ ทั้ง 10 รายการยังไม่มีบันทึกเผยแพร่บน cve.org ณ วันที่ 22 ตุลาคม จึงยังไม่มีคะแนน CVSS ให้อ้าง Node.js ใช้การจัดระดับของโครงการเอง และย้ำว่ารุ่นที่หมดอายุแล้วได้รับผลกระทบเสมอทุกครั้งที่มีแพตช์ความปลอดภัย

ประกาศ Wednesday, October 21, 2026 Security Releases ของ Node.js แสดงรายการ dependency ที่อัปเดตและช่องโหว่ระดับ high รวม CVE-2026-111497 Brotli decoder out-of-bounds write
รายการช่องโหว่ในประกาศ Node.js วันที่ 21 ตุลาคม 2026 รวม CVE-2026-111497 ช่องโหว่ Brotli ระดับ high ที่กระทบสาย 26.x, 24.x และ 22.x ภาพ: Node.js (ภาพหน้าจอ)

CVE-2026-111497 คืออะไรและใครเสี่ยง

ประกาศของ Node.js ให้ข้อมูลสั้น ๆ ว่าช่องโหว่ทำให้ตัวถอดรหัส Brotli ของ Node.js เขียนข้อมูลเกินขอบเขตจนนำไปสู่การรันโค้ดจากระยะไกลได้ ผู้รายงานคือ Matteo Collina (mcollina) และผู้แก้คือ Antoine du Hamel (aduh95) คอมมิตที่แก้ใน repository ของ Node.js ระบุว่านำการแก้จากโครงการ Brotli ของ Google มาใส่ ซึ่งเป็นคอมมิตของ Evgenii Kliuchnikov ชื่อ "Detect and report invalid stream earlier" ลงวันที่ 27 กุมภาพันธ์ 2026 และโมดูล zlib ของ Node.js ยังเพิ่มรหัสข้อผิดพลาด BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH ให้รายงานได้ด้วย

Vercel ซึ่งมี runtime ของ Node.js ให้ลูกค้าใช้บนแพลตฟอร์ม ออกประกาศด้านความปลอดภัยวันเดียวกันที่อธิบายเงื่อนไขชัดกว่า

  • Node.js ไม่ได้ถอดรหัส Brotli เอง แอปจะเสี่ยงเมื่อโค้ดของแอปหรือไลบรารีที่ใช้ถอดรหัสข้อมูล Brotli ที่ผู้โจมตีควบคุม
  • ช่องทางมีทั้ง request body ที่ส่งเข้ามา และ response ที่แอปดึง จากเซิร์ฟเวอร์อื่น
  • นักวิจัยสาธิตได้ทั้งการรั่วของหน่วยความจำและการรันคำสั่งใน process ของ Node.js บนสาย 22.x, 24.x และ 26.x ที่ยังไม่แพตช์ โดยคำสั่งรันด้วยสิทธิ์ของ process นั้น
  • Next.js ที่ติดตั้งเองไม่ได้บล็อก response แบบ Brotli ในฟีเจอร์ image optimization จึงต้องอัปเดต Node.js เช่นกัน

ประกาศของ Node.js และ Vercel ไม่ได้ระบุว่า CVE-2026-111497 ถูกโจมตีจริงแล้ว และแค็ตตาล็อก KEV ของ CISA ฉบับวันที่ 21 ตุลาคม 2026 ยังไม่มีช่องโหว่นี้

ประกาศ Security Bulletin ของ Vercel วันที่ 21 ตุลาคม 2026 เรื่อง Node.js Brotli decoder RCE CVE-2026-111497 พร้อมคำแนะนำให้อัปเดตเป็น 22.23.4, 24.22.1 หรือ 26.12.1
ประกาศของ Vercel เรื่อง CVE-2026-111497 ระบุว่ากฎ WAF บล็อกรูปแบบการโจมตีที่รู้จักแล้ว แต่ไม่ได้แทนการอัปเดต Node.js ภาพ: Vercel (ภาพหน้าจอ)

ช่องโหว่ทั้ง 10 รายการและสายที่ได้รับผลกระทบ

CVE เรื่อง ระดับ สายที่กระทบ
CVE-2026-111497 ตัวถอดรหัส Brotli เขียนข้อมูลเกินขอบเขต รันโค้ดได้ High 26.x, 24.x, 22.x
CVE-2026-105482 dns.resolve ตัดชื่อที่มีอักขระ NUL High 26.x, 24.x, 22.x
CVE-2026-105483 ข้ามการตรวจชื่อโฮสต์ในใบรับรอง TLS เมื่อเขียน IP ด้วยตัวเลขแบบเต็มความกว้าง High 26.x, 24.x
CVE-2026-106069 ข้ามการตรวจชื่อโฮสต์ในใบรับรอง TLS เมื่อชื่อโฮสต์ถูกตีความเป็น IP แบบหลวม ๆ High 26.x, 24.x, 22.x
CVE-2026-105481 socket แบบ keep-alive ประมวลผล response ที่ถูกเขียนก่อนส่ง request Medium 26.x, 24.x, 22.x
CVE-2026-106072 ตรวจใบรับรองผิดกับ IPv4 รูปแบบไม่มาตรฐาน ทำให้ชื่อ DNS ใน SAN ยืนยันปลายทางที่เป็น IP ได้ Medium 26.x, 24.x, 22.x
CVE-2026-106074 แคชค่าสุ่มของ crypto.randomUUID() และ randomInt() ติดไปใน startup snapshot และ SEA ทุก process จึงได้ค่าซ้ำกัน Medium 26.x, 24.x, 22.x
CVE-2026-106070 ZipFile คืนไบต์ที่ผู้โจมตีกำหนดหลังตรวจ header ไม่ผ่าน Low 26.x
CVE-2026-106071 Permission Model ให้สิทธิ์ไฟล์เกินผ่าน wildcard Low 26.x
CVE-2026-106073 เลี่ยง Permission Model ผ่าน fs.realpathSync Low 26.x, 24.x, 22.x

เมื่อนับตามสาย สาย 26.x ได้รับผลกระทบครบ 10 รายการ (High 4, Medium 3, Low 3) สาย 24.x มี 8 รายการ (High 4, Medium 3, Low 1) และสาย 22.x มี 7 รายการ (High 3, Medium 3, Low 1)

กราฟแท่งจำนวนช่องโหว่ Node.js ที่แพตช์ 21 ตุลาคม 2026 แยกตามสาย: 26.x ระดับ High 4 Medium 3 Low 3, 24.x High 4 Medium 3 Low 1 และ 22.x High 3 Medium 3 Low 1
จำนวนช่องโหว่ Node.js ที่แพตช์ 21 ตุลาคม 2026 แยกตามสายและระดับความร้ายแรง ภาพ: THAI DATA (ข้อมูล: Node.js)

ช่องโหว่ที่ควรดูต่อจาก CVE-2026-111497

ช่องโหว่ TLS ระดับ High สองรายการควรได้รับความสนใจรองจาก Brotli เพราะเป็นการข้ามการตรวจว่าใบรับรองตรงกับชื่อโฮสต์ที่เชื่อมต่อหรือไม่ ซึ่งเป็นหัวใจของการป้องกันการดักกลางทาง ส่วน CVE-2026-106074 กระทบแอปที่สร้าง startup snapshot หรือแพ็กเป็น Single Executable Application (SEA) โดยตรง เพราะค่า UUID และตัวเลขสุ่มอาจซ้ำกันทุก process

รุ่นที่ต้องอัปเดตและส่วนประกอบที่อัปเดตพร้อมกัน

สาย รุ่นที่แก้แล้ว ส่วนประกอบที่อัปเดตในรุ่นนี้
26.x (Current) 26.12.1 c-ares 1.34.9, Undici 8.12.2, ใบรับรองต้นทาง NSS 3.131.1
24.x (LTS 'Krypton') 24.22.1 c-ares 1.34.9, OpenSSL 3.5.9, Undici 7.30.1, NSS 3.131.1
22.x (LTS 'Jod') 22.23.4 c-ares 1.34.9, OpenSSL 3.5.9, SQLite 3.53.4, Undici 6.29.1, NSS 3.131.1

ประกาศของ Node.js ระบุด้วยว่าทั้งสามสายอัปเดตชุดใบรับรองต้นทางจากกรณีกุญแจของ eMudhra Intermediate CA ถูกเปิดเผย และ release notes มีรายการปฏิเสธ chain ของใบรับรองที่มี public key ที่ถูกบล็อก อ่านเบื้องหลังได้ในข่าวกุญแจ eMudhra Intermediate CA หลุด

Release notes ของ Node.js 24.22.1 'Krypton' (LTS) วันที่ 21 ตุลาคม 2026 หัวข้อ Notable Changes รวม CVE-2026-111497 และการอัปเดต OpenSSL 3.5.9
Release notes ของ Node.js 24.22.1 (LTS) วันที่ 21 ตุลาคม 2026 แสดงรายการ CVE ที่แก้ รวม CVE-2026-111497 และการอัปเดต OpenSSL 3.5.9 ภาพ: Node.js (ภาพหน้าจอ)

ทำไมเรื่องนี้สำคัญ

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

อีกประเด็นคือ Node.js 20 หมดอายุแล้วและจะไม่ได้รับการแก้ CVE-2026-111497 ระบบที่ยังค้างอยู่บนสายนั้นมีทางเดียวคือย้ายไป 22.x หรือ 24.x

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

  • อัปเดตเป็น 22.23.4, 24.22.1 หรือ 26.12.1 ทุกที่ที่รัน Node.js ไม่ใช่แค่เซิร์ฟเวอร์ production แต่รวมถึง container image ที่ build เอง, runner ของ CI/CD และเครื่องของนักพัฒนา ตามรายการที่ Vercel แนะนำ
  • ไล่หาระบบที่ยังใช้ Node.js 20 หรือเก่ากว่า ทั้งในแอป ฟังก์ชัน serverless และอิมเมจฐานของ Docker แล้ววางแผนย้ายไป 22.x หรือ 24.x ทันที
  • เรียงลำดับตามความเสี่ยงของ CVE-2026-111497 เริ่มจากบริการที่รับข้อมูลบีบอัดจากภายนอกหรือดึงข้อมูลจาก API ภายนอกที่ควบคุมไม่ได้ จากนั้นตามด้วยบริการที่ใช้ TLS เชื่อมต่อด้วย IP โดยตรง
  • rebuild อิมเมจจากอิมเมจฐานที่แพตช์แล้ว การอัปเดตแพ็กเกจในแอปอย่างเดียวไม่พอ เพราะช่องโหว่อยู่ในตัว runtime และตรวจผลด้วยคำสั่ง node -v ในอิมเมจที่ deploy จริง ติดตามข่าวซอฟต์แวร์และ Open Source อื่น ๆ ได้ที่หมวด Software

คำถามที่พบบ่อย

CVE-2026-111497 คืออะไร?

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

Node.js รุ่นใดแก้ CVE-2026-111497 แล้ว?

รุ่นที่แก้ CVE-2026-111497 แล้วคือ Node.js 22.23.4, 24.22.1 และ 26.12.1 ซึ่งออกวันที่ 21 ตุลาคม 2026 ทุกระบบที่ใช้สาย 22.x, 24.x หรือ 26.x ควรอัปเดตเป็นรุ่นเหล่านี้ ส่วน Node.js 20 หมดอายุแล้วและจะไม่ได้รับการแก้ ต้องย้ายไปสายที่ยังดูแลอยู่

แอปแบบไหนเสี่ยงจาก CVE-2026-111497?

Vercel อธิบายว่า Node.js ไม่ได้ถอดรหัส Brotli เอง แอปจะเสี่ยงจาก CVE-2026-111497 เมื่อโค้ดของแอปหรือไลบรารีที่ใช้ถอดรหัสข้อมูล Brotli ที่ผู้โจมตีควบคุมได้ ทั้งข้อมูลใน request body ที่รับเข้ามา และ response ที่แอปดึงจากเซิร์ฟเวอร์อื่น

WAF ป้องกัน CVE-2026-111497 แทนการอัปเดตได้หรือไม่?

ไม่ได้ทั้งหมด Vercel ออกกฎ WAF บล็อกรูปแบบการโจมตี CVE-2026-111497 ให้ทุกโปรเจกต์บนแพลตฟอร์ม แต่ระบุว่า WAF ครอบคลุมเฉพาะทราฟฟิกที่ผ่านเครือข่ายของ Vercel ไม่ครอบคลุม response ที่แอปดึงจากเซิร์ฟเวอร์อื่น จึงยังต้องอัปเดต Node.js

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

  1. Wednesday, October 21, 2026 Security Releases — Node.js
  2. Node.js 24.22.1 (LTS) — Node.js
  3. Node.js 22.23.4 (LTS) — Node.js
  4. Node.js 26.12.1 (Current) — Node.js
  5. Node.js security advisory: Brotli decoder RCE (CVE-2026-111497) — Vercel
  6. deps: brotli: cherry-pick 0ed4268a4401abcb44720963 — GitHub (nodejs/node)

บุคคล องค์กร และสถานที่ในข่าวนี้

เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว

องค์กรและบริษัท
Vercel3eMudhra2Google106CISA29
ผลิตภัณฑ์และเทคโนโลยี
Node.js10Next.js4Docker12
แชร์FacebookXLINELinkedIn

พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ