# Microsoft ออกแพตช์ฉุกเฉิน .NET 8/9/10 ปิดช่องโหว่ Brotli และแก้ซ้ำ 2 CVE จากรอบ 13 ต.ค.

> แพตช์ฉุกเฉิน .NET ออก 25 ต.ค. 2026 เป็น 8.0.33, 9.0.22, 10.0.14 และ 11 RC3 ปิดช่องโหว่ Brotli CVE-2026-111497 CVSS 8.1 และแก้ซ้ำอีก 2 CVE จากรอบ 13 ต.ค.

- ประเภท: ข่าว · หมวด: Cybersecurity
- เผยแพร่: 2026-10-27T07:41:00.000Z · อัปเดต: 2026-10-27T07:41:00.000Z
- โดย: กองบรรณาธิการ THAI DATA, THAI DATA IT BUSINESS ENTERPRISE
- ที่มา: https://thaidata.co.th/security/dotnet-out-of-band-security-update-brotli-october-2026/

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

- Microsoft ออก**แพตช์ฉุกเฉิน .NET** (out-of-band) เมื่อ **25 ตุลาคม 2026** สำหรับ **.NET 8.0.33, 9.0.22, 10.0.14** และ .NET 11 Release Candidate 3 ส่วน .NET Framework ไม่ได้รับผลกระทบ
- ช่องโหว่หลักคือ **CVE-2026-111497** การเขียนข้อมูลเกินขอบเขตในตัวถอดรหัส **Brotli** คะแนน CVSS 3.1 ที่ **8.1** (MSRC จัดระดับ Critical) กระทบทุกแพลตฟอร์ม แต่เฉพาะแอปที่เปิดถอดรหัส Brotli จากข้อมูลที่ผู้โจมตีควบคุมได้
- แพตช์ยังปิด **CVE-2026-114148** (7.8) เรื่องสิทธิ์เจ้าของไฟล์ใน tarball ของ ASP.NET Core บน Linux และออกตัวแก้ที่ถูกต้องของ **CVE-2026-70197** (8.1) กับ **CVE-2026-102870** (8.8) ซึ่งแพตช์ **13 ตุลาคม** ยังแก้ไม่ครบ
- แอปแบบ self-contained, คอนเทนเนอร์ และ NativeAOT ต้อง**คอมไพล์และ deploy ใหม่**ด้วยแพตช์ฉุกเฉิน .NET การติดตั้งรันไทม์ใหม่บนเครื่องอย่างเดียวไม่พอ และ CVE-2026-102870 ต้องอัปเดตแพ็กเกจ Blazor WebAssembly Server/DevServer โดยตรง
- ช่องโหว่ Brotli ต้นทางกระทบ Google Brotli 1.0.3 ถึง 1.2.0 แก้ใน 1.0.10, 1.1.1 และ 1.2.1 ค้นพบโดยทีม OpenAI Codex Security และเป็น CVE เดียวกับที่ Node.js แพตช์ไปเมื่อ 21 ตุลาคม

Microsoft ออกแพตช์ฉุกเฉิน .NET แบบ out-of-band เมื่อ 25 ตุลาคม 2026 สำหรับ .NET 8.0.33, 9.0.22, 10.0.14 และ .NET 11 Release Candidate 3 เพื่อปิดช่องโหว่ CVE-2026-111497 ในตัวถอดรหัส Brotli และ CVE-2026-114148 เรื่องสิทธิ์ไฟล์ใน tarball บน Linux พร้อมออกตัวแก้ที่ถูกต้องของ CVE-2026-70197 และ CVE-2026-102870 ซึ่งแพตช์รอบ 13 ตุลาคมยังแก้ไม่ครบ Microsoft แนะนำให้อัปเดตโดยเร็วที่สุด ส่วน .NET Framework ไม่ได้รับผลกระทบ

แพตช์ฉุกเฉิน .NET รอบนี้ประกาศพร้อมกันใน .NET Blog โดย Rahul Bhandari ผู้จัดการโปรแกรมอาวุโสของ Microsoft และใน repository dotnet/announcements บน GitHub ซึ่งมีประกาศความปลอดภัยแยกรายช่องโหว่ 4 ฉบับ (issue #492 ถึง #495) ปกติ .NET ออกแพตช์ความปลอดภัยตามรอบ Patch Tuesday เดือนละครั้ง การออกแพตช์ฉุกเฉิน .NET นอกรอบจึงบอกว่า Microsoft เห็นว่ารอไม่ได้

## 4 CVE ในแพตช์ฉุกเฉิน .NET รอบ 25 ตุลาคม

| CVE | ปัญหา | CVSS 3.1 ตามประกาศบน GitHub | ระดับใน MSRC | แพลตฟอร์ม |
| --- | --- | --- | --- | --- |
| CVE-2026-111497 | เขียนข้อมูลเกินขอบเขต (CWE-787) ในตัวถอดรหัส Brotli ที่ .NET ใช้ | 8.1 High | Critical | ทุกแพลตฟอร์ม |
| CVE-2026-114148 | สิทธิ์เจ้าของไฟล์ผิด (CWE-276) ใน tarball ของ ASP.NET Core และ source-build บน Linux | 7.8 High | Important | Linux |
| CVE-2026-70197 | memory corruption ใน System.Net.Sockets เมื่อใช้ SocketAsyncEventArgs ซ้ำข้าม IPv4/IPv6 | 8.1 High | Important | Windows |
| CVE-2026-102870 | code injection (CWE-94) ใน Blazor WebAssembly debugger | 8.8 High | Important | Windows, Linux, macOS (.NET 10 และ 11) |

MSRC ระบุว่าทั้ง 4 รายการยังไม่พบการโจมตีจริง โดย CVE-2026-111497 ถูกเปิดเผยสาธารณะแล้วและประเมินว่า "Exploitation More Likely" ส่วนอีก 3 รายการประเมินว่า "Exploitation Less Likely" ข้อสังเกตคือ MSRC จัดช่องโหว่ Brotli เป็นระดับ Critical ขณะที่ประกาศบน GitHub ของทีม .NET ระบุ Severity: High ที่คะแนน 8.1 เท่ากัน บทความนี้จึงแสดงทั้งสองค่า

![กราฟแท่งคะแนน CVSS 3.1 ของ 4 CVE ในแพตช์ฉุกเฉิน .NET 25 ตุลาคม 2026: CVE-2026-102870 ได้ 8.8 CVE-2026-111497 และ CVE-2026-70197 ได้ 8.1 และ CVE-2026-114148 ได้ 7.8](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/dotnet-out-of-band-security-update-brotli-october-2026/dotnet-oob-oct-2026-cvss.webp?v=02c789b2) _(ภาพ: THAI DATA (ข้อมูล: Microsoft (dotnet/announcements)))_

## ช่องโหว่ Brotli CVE-2026-111497 กระทบแอป .NET เมื่อไร

ประกาศ CVE-2026-111497 ของทีม .NET อธิบายว่าเป็น buffer overflow ในไลบรารีถอดรหัส Brotli ที่ .NET ใช้ ผู้โจมตีที่ไม่ต้องยืนยันตัวตนอาจอ่านหรือเขียนทับหน่วยความจำของโปรเซส นำไปสู่การรั่วของข้อมูล การหยุดให้บริการ หรือการยกระดับสิทธิ์ แต่ ASP.NET Core และ HttpClient ไม่ได้ถอดรหัส Brotli อัตโนมัติในค่าเริ่มต้น การติดตั้งแพ็กเกจที่มีช่องโหว่ไว้เฉย ๆ จึงยังไม่ทำให้แอปเสี่ยง แอปจะเสี่ยงเมื่อถอดรหัสข้อมูล Brotli ที่ผู้โจมตีควบคุมได้ผ่านทางใดทางหนึ่งต่อไปนี้ และแอปกลุ่มนี้คือกลุ่มที่ต้องได้แพตช์ฉุกเฉิน .NET ก่อนใคร

- เปิด request decompression ของ ASP.NET Core โดยรองรับ `br`
- ตั้ง `HttpClientHandler.AutomaticDecompression` หรือ `SocketsHttpHandler.AutomaticDecompression` ให้รวม `DecompressionMethods.Brotli` หรือ `DecompressionMethods.All`
- เรียกใช้ API ถอดรหัส Brotli ใน `System.IO.Compression` โดยตรง เช่น `BrotliStream` หรือ `BrotliDecoder`

ระหว่างที่ยังไม่ได้ติดตั้งแพตช์ฉุกเฉิน .NET Microsoft แนะให้หยุดถอดรหัส Brotli จากข้อมูลที่ไม่น่าเชื่อถือ เช่น ถอด `br` ออกจาก `DecompressionProviders` ที่ตั้งไว้ หรือจำกัด `AutomaticDecompression` ให้เหลือ GZip กับ Deflate แต่เตือนชัดว่าห้ามเพิ่มการเรียก `AddRequestDecompression` หรือตั้ง `AutomaticDecompression` ใหม่ถ้าแอปไม่ได้ใช้อยู่ก่อน เพราะการเปิดถอดรหัสอัตโนมัติมีความเสี่ยง denial of service แม้จะตัด Brotli ออกแล้ว

## ต้นทางของช่องโหว่ Brotli และซอฟต์แวร์อื่นนอกจาก .NET ที่กระทบ

ต้นทางของช่องโหว่อยู่ที่ไลบรารี Brotli ของ Google ซึ่งบันทึก CVE ระบุว่ากระทบ Brotli 1.0.3 ถึง 1.2.0 บนทุกแพลตฟอร์ม และแก้ใน 1.0.10, 1.1.1 และ 1.2.1 ผู้ค้นพบคือ Khai Tran และ Sylvie Mayer จากทีม OpenAI Codex Security CVE เดียวกันนี้ทำให้ [Node.js ออกแพตช์ 22.23.4, 24.22.1 และ 26.12.1](/software/node-js-cve-2026-111497-brotli-security-release/) ไปเมื่อ 21 ตุลาคม และกำลังไล่แก้ในทุกซอฟต์แวร์ที่ฝังตัวถอดรหัสนี้ไว้

![หน้า CVE-2026-111497 ใน Security Update Guide ของ Microsoft เผยแพร่ 25 ตุลาคม 2026 ระดับ Critical CVSS 3.1 ที่ 8.1 ระบุว่า Google เป็นผู้ออก CVE และแพตช์ฉุกเฉิน .NET เป็นตัวแก้](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/dotnet-out-of-band-security-update-brotli-october-2026/msrc-cve-2026-111497-page.webp?v=94849bfe) _(ภาพ: Microsoft Security Response Center (ภาพหน้าจอ))_

## เวอร์ชันที่ต้องอัปเดต และกรณีที่ติดตั้งรันไทม์ใหม่อย่างเดียวไม่พอ

แพตช์ฉุกเฉิน .NET รอบนี้มีให้ดาวน์โหลดตามรุ่นดังนี้

| รุ่น .NET | รันไทม์ที่แก้แล้ว | SDK ที่แก้แล้ว |
| --- | --- | --- |
| .NET 8 | 8.0.33 | 8.0.133, 8.0.427 |
| .NET 9 | 9.0.22 | 9.0.123, 9.0.320 |
| .NET 10 | 10.0.14 | 10.0.114, 10.0.403 |
| .NET 11 (prerelease) | 11.0.0-rc.3.26522.148 | 11.0.100-rc.3.26522.148 |

.NET Blog ระบุวิธีอัปเดตแยกตามรูปแบบการ deploy ดังนี้ แอปแบบ framework-dependent ติดตั้งรันไทม์ใหม่แล้วรีสตาร์ตแอป แอปแบบ self-contained ต้อง build และ publish ใหม่ เพราะการติดตั้งรันไทม์บนเครื่องไม่ได้เปลี่ยนรันไทม์ที่ฝังอยู่ในแอป คอนเทนเนอร์ต้อง build และ deploy ใหม่จากอิมเมจ .NET ที่อัปเดตแล้ว แอป NativeAOT ต้องอัปเดต SDK และ republish เพราะตัวถอดรหัสถูกลิงก์เข้าไปในไฟล์ executable แล้ว ผู้ใช้ .NET 11 RC2 ให้ขึ้น RC3 ตรวจรันไทม์ที่ติดตั้งได้ด้วยคำสั่ง `dotnet --list-runtimes`

สำหรับ CVE-2026-114148 กรณีที่กระทบคือการติดตั้ง ASP.NET Core 8 และ 9 จาก tarball ที่ Microsoft เผยแพร่ (ทั้ง runtime, composite runtime และ targeting pack ต่ำกว่า 8.0.33 และ 9.0.22) รวมถึง tarball ที่ได้จาก source-build ของ .NET 8 ถึง 11 ประกาศระบุว่าสิทธิ์เจ้าของไฟล์ที่ผิดในไฟล์เก็บถาวรอาจทำให้บัญชีในเครื่องยกระดับสิทธิ์ได้ วิธีแก้ไม่ใช่แตกไฟล์ทับของเดิม แต่ต้องติดตั้งใหม่ลงไดเรกทอรีว่างจาก tarball รุ่นที่แก้แล้ว และแตกไฟล์โดยไม่คืนค่าเจ้าของไฟล์ตามที่อยู่ในไฟล์เก็บถาวร ส่วนการ restore แพ็กเกจ NuGet ของ ASP.NET Core ไม่ได้ทำให้เกิดปัญหานี้

## สอง CVE ที่แพตช์ 13 ตุลาคมแก้ไม่ครบ

ประกาศ #496 ระบุตรงไปตรงมาว่าแพตช์ Patch Tuesday วันที่ 13 ตุลาคม 2026 "ไม่ได้แก้ CVE-2026-70197 และ CVE-2026-102870 ได้อย่างสมบูรณ์" และแพตช์ฉุกเฉิน .NET รอบนี้คือตัวแก้ที่ถูกต้องภายใต้หมายเลข CVE เดิม ในหน้า MSRC ของ CVE-2026-70197 มีบันทึกการแก้ไขรุ่น 2.0 ลงวันที่ 19 ตุลาคมว่า Microsoft ทราบว่าช่องโหว่ที่ CVE นี้ระบุ "ยังไม่ได้รับการแก้ไข" และกำลังเตรียมตัวแก้ที่สมบูรณ์

CVE-2026-70197 อยู่ใน System.Net.Sockets บน Windows เมื่อนำอ็อบเจ็กต์ `SocketAsyncEventArgs` ตัวเดียวไปใช้ซ้ำข้ามซ็อกเก็ตแบบ datagram ทั้ง IPv4 และ IPv6 บัฟเฟอร์ที่อยู่ที่แคชไว้อาจมีขนาดเล็กเกินไป ทำให้เกิดการเขียนเกินขอบเขตระหว่าง `ReceiveFromAsync` โดยไม่ต้องยืนยันตัวตน กระทบแพ็กเกจรันไทม์ Windows ของ .NET 8 ถึง 11 รวมแพ็กเกจ Mono บน Windows ของ .NET 8

CVE-2026-102870 อยู่ใน debug proxy ของ Blazor WebAssembly ซึ่งประเมินนิพจน์ในดีบักเกอร์ด้วยการสร้างและคอมไพล์ซอร์ส C# ค่าที่มาจากแอปที่กำลังดีบัก เช่น ผลของ `ToString()` คำอธิบาย และชื่อคลาส ถูกฝังลงซอร์สโดยไม่ได้ escape อย่างสม่ำเสมอ ผู้โจมตีที่ควบคุมค่าเหล่านั้นจึงรันโค้ดบนเครื่องนักพัฒนาได้เมื่อนักพัฒนาประเมินนิพจน์ขณะดีบัก ช่องโหว่นี้อยู่ในแพ็กเกจ `Microsoft.AspNetCore.Components.WebAssembly.Server` และ `.DevServer` ของ .NET 10 และ 11 ต้องอัปเดตแพ็กเกจเป็น 10.0.14 หรือ 11.0.0-rc.3.26522.148 ที่มากับแพตช์ฉุกเฉิน .NET รอบนี้ Microsoft ย้ำว่าการอัปเดตรันไทม์ที่ใช้ร่วมกันอย่างเดียวไม่ทดแทนการอัปเดตแพ็กเกจเหล่านี้

![ตารางประกาศความปลอดภัยใน dotnet/announcements #496 แสดง 4 CVE ของแพตช์ฉุกเฉิน .NET 25 ตุลาคม 2026 พร้อมเวอร์ชัน 8.0.33, 9.0.22, 10.0.14 และ 11 RC3](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/dotnet-out-of-band-security-update-brotli-october-2026/dotnet-announcements-496-oob-advisories.webp?v=51f1056c) _(ภาพ: Microsoft (GitHub dotnet/announcements, ภาพหน้าจอ))_

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

ช่องโหว่ Brotli ตัวเดียวกำลังลามไปทั่วระบบนิเวศ เพราะตัวถอดรหัสของ Google ถูกฝังอยู่ในรันไทม์และเครื่องมือจำนวนมาก Node.js แพตช์ไปแล้ว ตามด้วย .NET ในสัปดาห์เดียวกัน องค์กรที่คิดว่าจัดการ [Node.js และ PHP2Shell](/security/php2shell-patch-guide-check-php-version/) ไปแล้วจึงต้องกลับมาไล่รายการแอป .NET ที่รับข้อมูลบีบอัดจากภายนอกอีกรอบ แล้วติดตั้งแพตช์ฉุกเฉิน .NET ให้ครบ และการที่แพตช์ 13 ตุลาคมแก้ 2 CVE ไม่ครบก็เป็นสัญญาณว่าทีมที่ "แพตช์แล้ว" ในรอบก่อนยังต้องแพตช์ซ้ำ

อีกประเด็นคือ .NET 8 และ .NET 9 ซึ่งเป็นรุ่นที่องค์กรใช้กันมากที่สุดกำลังจะหมดซัพพอร์ตตามที่เราเคยรายงานในข่าว [.NET 11 RC2 และกำหนดหมดซัพพอร์ตของ .NET 8 และ 9](/software/dotnet-11-rc1-go-live-net-8-9-end-of-support/) แพตช์ฉุกเฉิน .NET รอบนี้อาจเป็นหนึ่งในแพตช์ท้าย ๆ ที่สองรุ่นนั้นจะได้รับ ทีมที่ยังอยู่บน .NET 8 หรือ 9 จึงควรใช้โอกาสนี้วางแผนย้ายรุ่นไปพร้อมกัน

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

1. **ทำรายการแอป .NET ที่ถอดรหัส Brotli** ค้นในโค้ดหาคำว่า `AddRequestDecompression`, `DecompressionMethods.Brotli`, `DecompressionMethods.All`, `BrotliStream` และ `BrotliDecoder` แอปเหล่านี้คือกลุ่มแรกที่ต้องติดตั้งแพตช์ฉุกเฉิน .NET
2. **ติดตั้งแพตช์ฉุกเฉิน .NET ให้ครบทุกเครื่อง** ทั้งเซิร์ฟเวอร์ production, เครื่อง build และเครื่องนักพัฒนา เป็น 8.0.33, 9.0.22, 10.0.14 หรือ 11 RC3 แล้วรีสตาร์ตแอป
3. **Build และ deploy ใหม่** สำหรับแอป self-contained, อิมเมจคอนเทนเนอร์ และ NativeAOT เพราะรันไทม์ฝังอยู่ในตัวแอป การแพตช์โฮสต์อย่างเดียวไม่ช่วย
4. **ตรวจเครื่อง Linux ที่ติดตั้ง ASP.NET Core จาก tarball** ถ้าใช่ ให้ติดตั้งใหม่ลงไดเรกทอรีว่างตามคำแนะนำของ CVE-2026-114148 ไม่แตกไฟล์ทับของเดิม
5. **ให้ทีมที่พัฒนา Blazor WebAssembly บน .NET 10 หรือ 11 อัปเดตแพ็กเกจ Server และ DevServer** แล้วรีสตาร์ตดีบักเกอร์ และหากรอบ 13 ตุลาคมเคยแพตช์ CVE-2026-70197 ไปแล้ว ให้ถือว่ายังไม่ได้แก้จนกว่าจะขึ้นแพตช์ฉุกเฉิน .NET รอบนี้ ติดตามข่าวช่องโหว่อื่นได้ที่[หมวดความปลอดภัย](/security/)

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

### แพตช์ฉุกเฉิน .NET รอบ 25 ตุลาคม 2026 แก้อะไรบ้าง?

แพตช์ฉุกเฉิน .NET รอบนี้ออกเป็น .NET 8.0.33, 9.0.22, 10.0.14 และ 11 RC3 ปิด CVE-2026-111497 ช่องโหว่ตัวถอดรหัส Brotli และ CVE-2026-114148 เรื่องสิทธิ์ไฟล์ใน tarball บน Linux พร้อมออกตัวแก้ที่ถูกต้องของ CVE-2026-70197 และ CVE-2026-102870 ซึ่งแพตช์วันที่ 13 ตุลาคม 2026 ยังแก้ไม่ครบ

### แอป .NET ของเราเสี่ยงจาก CVE-2026-111497 เมื่อไร?

ตามประกาศของ Microsoft แอปจะเสี่ยงเมื่อถอดรหัสข้อมูล Brotli ที่ผู้โจมตีควบคุมได้ผ่าน 3 ทาง คือเปิด request decompression ของ ASP.NET Core ที่รองรับ br เปิด AutomaticDecompression ของ HttpClient ให้รวม Brotli หรือ All และเรียกใช้ BrotliStream หรือ BrotliDecoder โดยตรง ค่าเริ่มต้นของ ASP.NET Core และ HttpClient ไม่ได้เปิดการถอดรหัสเหล่านี้ แต่แอปที่เปิดใช้ควรติดตั้งแพตช์ฉุกเฉิน .NET ทันที

### ติดตั้งรันไทม์ใหม่แล้ว แอป .NET ทุกตัวปลอดภัยหรือไม่?

ไม่ทั้งหมด แอปแบบ framework-dependent จะได้รับการแก้เมื่อติดตั้งรันไทม์ใหม่และรีสตาร์ตแอป แต่แอป self-contained คอนเทนเนอร์ และ NativeAOT ฝังรันไทม์ไว้ในตัว ต้องคอมไพล์และ deploy ใหม่ด้วย SDK จากแพตช์ฉุกเฉิน .NET ส่วน CVE-2026-102870 ต้องอัปเดตแพ็กเกจ Microsoft.AspNetCore.Components.WebAssembly.Server หรือ DevServer โดยตรง

### ถ้ายังติดตั้งแพตช์ฉุกเฉิน .NET ไม่ได้ ควรทำอย่างไร?

Microsoft แนะให้หยุดถอดรหัสข้อมูล Brotli ที่ไม่น่าเชื่อถือชั่วคราว เช่น ถอด br ออกจาก DecompressionProviders ที่ตั้งไว้แล้ว หรือตั้ง AutomaticDecompression ให้เหลือ GZip และ Deflate แต่ห้ามเพิ่มการถอดรหัสเข้าไปถ้าแอปไม่ได้ใช้อยู่แล้ว เพราะอาจเปิดความเสี่ยง denial of service


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

- [.NET October 2026 Out-of-Band Security Updates](https://devblogs.microsoft.com/dotnet/dotnet-october-2026-oob-security-updates/) — Microsoft (.NET Blog)
- [.NET October 2026 out-of-band security updates (dotnet/announcements #496)](https://github.com/dotnet/announcements/issues/496) — Microsoft (GitHub dotnet/announcements)
- [Microsoft Security Advisory CVE-2026-111497 | .NET Brotli Decoder Out-of-bounds Write Vulnerability](https://github.com/dotnet/announcements/issues/494) — Microsoft (GitHub dotnet/announcements)
- [Microsoft Security Advisory CVE-2026-70197 | .NET and Visual Studio Remote Code Execution Vulnerability | October 25, 2026 OOB update](https://github.com/dotnet/announcements/issues/493) — Microsoft (GitHub dotnet/announcements)
- [Google: CVE-2026-111497 Buffer overflow vulnerability in the Brotli decoder](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-111497) — Microsoft Security Response Center
- [CVE-2026-111497: Out-of-Bounds Write in Google Brotli Decoder](https://www.cve.org/CVERecord?id=CVE-2026-111497) — CVE Program (Google CNA)
