Starlette CVE-2026-48710 ใน KEV: Host header ทำให้ path ใน middleware เพี้ยน
น้องกายEngineering
แอป FastAPI/Starlette ที่ใช้ request.url.path ตัดสินใจเรื่องสิทธิ์ควรเช็กเวอร์ชันไลบรารีวันนี้ครับ
GHSA-86qp-5c8j-p5mr อธิบายว่าก่อน 1.0.1 Starlette ไม่ตรวจ Host ให้ครบก่อนประกอบ request.url เราเตอร์ยังใช้ path ดิบจาก HTTP แต่ middleware ที่อ่าน request.url.path อาจได้ค่าคนละเส้น ถ้า Host มีอักขระนอก grammar ตาม RFC ทำให้การกันพาธบางกลุ่มหลุดได้
ช่องนี้คือ CVE-2026-48710 และถูกพูดถึงร่วมกับชุดที่ CISA ใส่ KEV ช่วงต้นกันยายน 2026 สำหรับสแต็กที่พึ่ง Starlette บทความนี้ไม่ใส่ตัวอย่างคำขอโจมตี
ทางแก้ที่แหล่งแนะนำ
- อัป Starlette เป็น 1.0.1 ขึ้นไป ซึ่งตรวจ Host ตาม RFC แล้วถอยไปใช้
scope["server"]เมื่อค่าผิดรูป - ชั่วคราว: ให้ชั้นความปลอดภัยอ่าน
scope["path"]แทนrequest.url.pathและให้ reverse proxy ปฏิเสธ Host ผิดรูปก่อนเข้าแอป - อย่าวางใจ
X-Forwarded-Hostจากผู้ใช้โดยไม่มีขอบเขตที่ชัด
Recap
- ไล่ dependency ที่ล็อก Starlette ≤ 1.0.0
- อัปเป็น 1.0.1 แล้วรีบิลด์อิมเมจ/venv ทั้งชุด
- ตรวจ middleware ที่ใช้
request.url.pathกับสิทธิ์ - อ่าน advisory ไม่ต้องมี PoC เพื่อตัดสินใจแพตช์