EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / Security Notice / Starlette ข้ามการตรวจสิทธิ์ผ่าน Host header CVE-2026-48710
Security Notice

Starlette ข้ามการตรวจสิทธิ์ผ่าน Host header CVE-2026-48710

โดย Ton-Or ·2 ก.ย. 2026·อ่าน 4 นาที
Starlette ข้ามการตรวจสิทธิ์ผ่าน Host header CVE-2026-48710

ผู้ดูแลแอปที่ใช้ Starlette รุ่นที่มีช่องโหว่ควรเร่งอัปเดต โดยเฉพาะแอปที่ตรวจสิทธิ์จาก request.url.path เพราะมีการโจมตีจริงแล้ว

สรุปใน 1 นาที

อาการ/ปัญหา
Host header ที่ผิดรูปแบบอาจทำให้ path ที่ใช้ตรวจสิทธิ์ไม่ตรงกับ path ที่ router เรียกทำงาน
ใครควรอ่าน
แอปที่ใช้ Starlette 1.0.0 และเก่ากว่า โดยเฉพาะ middleware หรือ endpoint ที่ตัดสินสิทธิ์จาก request.url
ทางแก้แบบสั้น
อัปเดต Starlette เป็น 1.0.1 หรือใหม่กว่าที่เข้ากันได้กับแอป แล้วทดสอบการตรวจสิทธิ์ก่อนนำขึ้นใช้งาน
ข้ามไปขั้นตอน

พอดีไล่ฟีด CISA KEV เจอ Starlette หมายเลข CVE-2026-48710 ซึ่งเพิ่มเข้ารายการวันที่ 2 กันยายน 2026 เพราะมีการใช้โจมตีจริงแล้ว CISA เรียกปัญหานี้ว่า HTTP request/response smuggling ผลคือแอปอาจอ่าน path ที่ใช้ตรวจสิทธิ์ผิด ผู้ดูแลเว็บและ API ควรตรวจ dependency ด้วย เพราะแพ็กเกจอื่นอาจติดตั้ง Starlette มาให้

Starletteไลบรารีที่ได้รับผลกระทบ
6.5CVSS 3.1 จากผู้พัฒนา
1.0.1รุ่นที่แก้ช่องโหว่
16/09/2026วันครบกำหนด CISA

เกิดอะไรขึ้น

Starlette เป็น framework และ toolkit สำหรับเว็บ Python แบบ ASGI ปัญหาอยู่ที่การนำ HTTP Host header มาประกอบกับ path เพื่อสร้าง request.url โดยไม่ได้ตรวจรูปแบบของ Host ก่อน ถ้ามีอักขระที่ไม่ควรอยู่ในส่วนนี้ การแยกองค์ประกอบ URL อาจเปลี่ยนขอบเขตของ path, query หรือ fragment ไปจากคำขอจริง

router ยังเลือก endpoint จาก path จริง แต่ middleware ที่อ่าน request.url.path อาจเห็นอีกเส้นทาง หากแอปใช้ค่านี้ตัดสินว่าเส้นทางไหนต้องล็อกอิน ผู้โจมตีอาจผ่านการตรวจไปถึง endpoint ที่ต้องมีสิทธิ์ได้ ดูรายละเอียดใน advisory ของผู้พัฒนา GHSA-86qp-5c8j-p5mr

ผู้พัฒนาให้ระดับ Moderate และ CVSS 3.1 ที่ 6.5 เวกเตอร์ระบุว่าโจมตีผ่านเครือข่ายได้ ไม่ต้องมีสิทธิ์เดิมและไม่ต้องให้ผู้ใช้ทำอะไร ส่วน CISA ระบุว่าถูกใช้โจมตีจริง และอาจใช้ร่วมกับ CVE-2026-42271 วันครบกำหนดใน KEV คือ 16 กันยายน 2026 ตาม ข้อมูล KEV ที่ CISA เผยแพร่ ผลกระทบยังขึ้นกับวิธีตรวจสิทธิ์และรับ header ของแต่ละแอป

ใครโดนและรุ่นที่แก้

ตารางนี้ยึดรุ่นแพ็กเกจจาก advisory ของ Starlette โดยตรง แอปที่ใช้ request.url หรือ request.url.path เพื่อตัดสินเรื่องความปลอดภัยเป็นกลุ่มที่ต้องตรวจเป็นพิเศษ

แพ็กเกจ รุ่นที่ได้รับผลกระทบ รุ่นที่แก้
starlette บน PyPI 1.0.0 และเก่ากว่า 1.0.1

แพตช์ตรวจ Host ตามรูปแบบใน RFC 9112 §3.2 และ RFC 3986 §3.2.2 ก่อนสร้าง URL หากค่าไม่ถูกต้องจะใช้ scope["server"] แทน ข้อมูลรุ่นและวิธีแก้ตรงกับ ระเบียน CVE-2026-48710

ต้องทำอะไร

เริ่มจากตรวจรุ่นใน environment หรือ container ที่รันแอปจริง รวมถึงไฟล์ dependency และ lockfile สำรองไฟล์ที่ต้องเปลี่ยน แล้วอัปเดตเป็น 1.0.1 หรือใหม่กว่าที่ framework และแพ็กเกจอื่นรองรับ หากใช้ pip โดยตรง ให้รันใน environment ของโครงการ ตัวอย่างคำสั่งคือ

python -m pip show starlette
python -m pip install --upgrade "starlette>=1.0.1"
python -m pip check

ถ้าโครงการใช้เครื่องมือจัดการ dependency ตัวอื่น ให้แก้รุ่นและสร้าง lockfile ด้วยเครื่องมือนั้น ก่อน deploy ให้ทดสอบทั้งเส้นทางสาธารณะและเส้นทางที่ต้องล็อกอิน ตรวจว่า middleware ปฏิเสธผู้ไม่มีสิทธิ์ได้ แล้วตรวจรุ่นในระบบหลัง deploy อีกครั้ง การแก้ไฟล์ dependency อย่างเดียวอาจยังไม่เปลี่ยนแพ็กเกจที่ process ใช้อยู่

เงื่อนไขของ proxy

ผู้พัฒนาระบุว่าการมี proxy หรือ load balancer ช่วยลดความเสี่ยงได้เฉพาะเมื่อมันปฏิเสธหรือทำ Host ที่ผิดรูปแบบให้ถูกต้องก่อนส่งต่อ และแอปไม่เชื่อถือ host header อื่นที่ผู้โจมตีควบคุมได้ เช่น X-Forwarded-Host ควรตรวจเงื่อนไขนี้ระหว่างรออัปเดต

ส่วนตัวผมให้เร่งแพตช์ โดยเริ่มจากแอปที่เปิดรับอินเทอร์เน็ตและตรวจสิทธิ์จาก path เพราะมีหลักฐานการโจมตีจริงแล้ว ที่มา: CISA KEV — Kludex Starlette HTTP Request/Response Smuggling Vulnerability, CVE-2026-48710 และ Starlette Security Advisory หากมีรายละเอียดเพิ่มเติมจากผู้พัฒนา เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

อยากให้เราทำให้ไหม?

ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า

คุยเรื่องงานกับเรา

เคยเจองานแบบนี้ไหม? ติดตรงไหน?

มาแลกวิธีกันต่อในบอร์ด LinuxThai

→ คุยต่อในบอร์ด

ความคิดเห็น 0

ยังไม่มีความคิดเห็น — เป็นคนแรกเลย