เส้นทางคำขอสองชั้นในห้องเขียวเข้มที่ Host เพี้ยนทำให้จุดตรวจ middleware เลื่อนจาก path จริง

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 เพื่อตัดสินใจแพตช์