Chỉ cần một ký tự đặc biệt trong tiêu đề HTTP Host, kẻ tấn công chưa xác thực có thể vượt qua mọi kiểm tra ủy quyền dựa trên đường dẫn trong Starlette, ảnh hưởng nghiêm trọng đến FastAPI, vLLM, LiteLLM, máy chủ MCP, v.v. Trong khi điểm CVSS v3.1 chính thức chỉ xếp lỗ hổng ở mức Trung bình 6.5, các nhà nghiên cứu tại...

Create a landscape editorial hero image for this Studio Global article: What is the CVE-2026-48710 "BadHost" vulnerability in the Starlette web framework, how does it allow attackers to bypass path-based authoriz. Article summary: ## Overview. Topic tags: general, general web, user generated. Reference image context from search candidates: Reference image 1: visual subject "A critical vulnerability tracked as **CVE-2026-48710** and nicknamed "BadHost" was disclosed in the **Starlette** ASGI framework, affecting all versions prior to **1.0.1**, sources" source context "Starlette Vulnerability Exposes AI Agent Endpoints | Let's Data Science" Reference image 2: visual subject "# Critical 'BadHost' Flaw in Starlette Exposes Millions of AI Agent Deployments to Auth Bypass. * CVE-2026-48710 ('BadHost') allows unauthenticated attackers to bypass path-based a" source context "Critical 'BadHost'
Một lỗ hổng mới được công bố trong framework ASGI Starlette cho phép kẻ tấn công vượt qua các kiểm tra ủy quyền dựa trên đường dẫn trên hàng triệu tác nhân AI và máy chủ API chỉ bằng cách tiêm một ký tự độc hại vào tiêu đề HTTP. Được định danh là CVE-2026-48710 và đặt biệt danh là "BadHost", lỗ hổng này tác động đến nền tảng của hạ tầng AI Python hiện đại—FastAPI, vLLM, LiteLLM và các máy chủ MCP (Model Context Protocol)—cho phép truy cập trái phép vào các tài nguyên được bảo vệ mà không cần bất kỳ thông tin xác thực nào .
Được phát hiện bởi X41 D-Sec trong một cuộc kiểm tra bảo mật vLLM do OSTIF tài trợ, lỗ hổng bắt nguồn từ một sơ suất đơn giản nhưng sâu sắc: Starlette tái tạo lại đối tượng request.url từ tiêu đề Host do kẻ tấn công kiểm soát mà không xác thực nó trước. Bởi vì engine định tuyến của framework điều hướng yêu cầu dựa trên đường dẫn HTTP thô, nhưng middleware ủy quyền thường đọc request.url.path từ URL đã tái tạo, một sự không nhất quán xuất hiện, mở ra một lỗ hổng bảo mật lớn .
Logic tái tạo URL của Starlette tạo ra sự không khớp nguy hiểm giữa đường dẫn được định tuyến và đường dẫn được ủy quyền. Khi một yêu cầu HTTP đến, bộ định tuyến xác định chính xác endpoint đích từ dòng yêu cầu thô. Tuy nhiên, khi ứng dụng sau đó kiểm tra request.url để quyết định xem người dùng có được ủy quyền hay không, Starlette xây dựng lại URL đó bằng cách nối tiêu đề Host với đường dẫn yêu cầu và phân tích cú pháp lại kết quả .
Kẻ tấn công có thể khai thác điều này bằng cách gửi một yêu cầu đến endpoint được bảo vệ như /admin/secure với tiêu đề Host bị nhiễm độc một cách tinh vi, ví dụ:
Host: legitimate.com/health?x=
Bộ định tuyến điều hướng yêu cầu một cách chính xác đến trình xử lý /admin/secure—nhưng khi middleware ủy quyền kiểm tra request.url.path, nó lại thấy /health. Nếu middleware sử dụng danh sách trắng (allowlist) tin tưởng /health là một endpoint kiểm tra sức khỏe công khai, kẻ tấn công sẽ lọt qua dễ dàng. Kiểm tra ủy quyền bị vượt qua một cách âm thầm; không cần token, mật khẩu hay bất kỳ tương tác nào từ người dùng .
Cố vấn từ X41 D-Sec xác nhận sự đơn giản đáng kinh ngạc: "Chỉ cần chèn một ký tự duy nhất vào tiêu đề HTTP Host là đủ để đánh lừa máy chủ" . Các ký tự cụ thể gây ra sự nhầm lẫn bao gồm dấu gạch chéo lên (
/), dấu hỏi chấm (?) và ký hiệu thăng (#)—những dấu phân cách URL tiêu chuẩn mà Starlette chưa bao giờ xác thực .
Phạm vi ảnh hưởng của lỗ hổng là đáng kinh ngạc. Starlette là động cơ ẩn đằng sau hầu hết các công cụ điều phối và phục vụ AI dựa trên Python, được tải xuống khoảng 325 triệu lần mỗi tuần . Tất cả các dự án sử dụng Starlette phiên bản trước 1.0.1 đều bị ảnh hưởng:
Các phiên bản bị ảnh hưởng đã được xác nhận trải dài từ Starlette >= 0.8.3 đến < 1.0.1, có nghĩa là các hệ thống đang chạy các bản phát hành ổn định trong nhiều năm đều có nguy cơ bị tấn công .
Mức độ nghiêm trọng chính thức của CVE-2026-48710 đã gây ra nhiều bất đồng đáng kể trong cộng đồng bảo mật:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N coi tác động về tính bảo mật và tính toàn vẹn là "Thấp", giới hạn phạm vi ở mức "Không thay đổi" và báo cáo không có tác động đến tính sẵn sàng CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:NBa yếu tố củng cố lập luận của các nhà nghiên cứu rằng điểm 6.5 là thấp một cách nguy hiểm:
SC:H/SI:H của CVSS v4.0 cuối cùng đã nắm bắt được Starlette phiên bản 1.0.1, được phát hành vào ngày 22 tháng 5 năm 2026, chứa bản vá dứt điểm. Bản sửa lỗi được theo dõi trong Tư vấn Bảo mật GitHub GHSA-86qp-5c8j-p5mr và tư vấn X41-2026-002 từ X41 .
Bản vá triển khai hai biện pháp bảo vệ cốt lõi:
Host hiện được xác thực dựa trên ngữ pháp được chỉ định trong RFC 9112 §3.2 và RFC 3986 §3.2.2 trước khi được sử dụng để tạo request.url scope["server"]—bộ thông tin kết nối máy chủ thực tế—thay vì giá trị do kẻ tấn công cung cấp. Nhờ đó, request.url.path luôn phản ánh đúng đường dẫn đã được định tuyến Dự án FastAPI đã xác nhận bản sửa lỗi có hiệu quả và khuyến nghị nâng cấp starlette lên >=1.0.1 ngay lập tức .
Nâng cấp gói Starlette là bước đầu tiên thiết yếu, nhưng một chiến lược phòng thủ toàn diện đòi hỏi nhiều lớp bảo vệ:
Vá lỗi ngay lập tức. Trong mọi môi trường ảo, image container và pipeline triển khai đang chạy hạ tầng AI, hãy thực thi:
pip install --upgrade starlette
Khởi động lại tất cả các dịch vụ bị ảnh hưởng. Điều này áp dụng cho cả các cài đặt Starlette trực tiếp cũng như các phiên bản FastAPI, vLLM, LiteLLM và máy chủ MCP .
Kiểm tra và ghim các phụ thuộc. FastAPI và các framework khác có thể không tự động áp đặt phiên bản Starlette tối thiểu. Hãy yêu cầu rõ ràng starlette>=1.0.1 trong requirements.txt, pyproject.toml, poetry.lock, hoặc các tệp khóa tương đương. Chạy pip list | grep starlette.
Quét mọi thành phần trong stack AI. Bất kỳ dịch vụ Python nào phục vụ HTTP—các ứng dụng FastAPI tùy chỉnh, endpoint suy luận LLM, mặt phẳng điều phối tác nhân, bảng đánh giá mô hình và proxy tương thích OpenAI—đều có thể chứa phiên bản Starlette dễ bị tấn công. Tiến hành kiểm tra toàn bộ hạ tầng .
Tăng cường proxy ngược và WAF. Cấu hình nginx, Envoy, HAProxy, Cloudflare hoặc AWS ALB để từ chối hoặc làm sạch các tiêu đề Host không đúng định dạng trước khi chuyển tiếp lưu lượng đến các ứng dụng Python. Điều này cung cấp khả năng phòng thủ theo chiều sâu, chặn đứng việc khai thác ngay cả khi việc vá ứng dụng bị trì hoãn .
Viết lại các kiểm tra an toàn đường dẫn để không dùng request.url.path. Nguyên nhân gốc rễ là sự không khớp giữa đường dẫn định tuyến và request.url.path. Bất cứ khi nào có thể, hãy chuyển middleware ủy quyền sang sử dụng request.scope["path"], được lấy từ phạm vi ASGI thô và không thể bị đầu độc bởi tiêu đề Host . X41 D-Sec khuyến nghị tránh hoàn toàn ủy quyền dựa trên đường dẫn mà thay vào đó là các cơ chế xác thực nội tại của endpoint
.
Kiểm tra khả năng bị lộ. Một công cụ quét trực tuyến đã được phát hành để giúp các tổ chức xác minh xem máy chủ của họ có dễ bị tấn công hay không . Kết hợp với kiểm tra thâm nhập kỹ lưỡng dựa trên các ranh giới xác thực, điều này có thể tiết lộ các bề mặt tấn công bị bỏ sót.
Đối với các triển khai dựa trên Debian, CVE-2026-48710 được theo dõi trong Debian Security Tracker với mức độ nghiêm trọng là "quan trọng" (important), và các bản phát hành điểm starlette đã được vá tương ứng có sẵn cho các phiên bản bị ảnh hưởng . Hãy áp dụng giao dịch
apt khắc phục từ kho bullseye-security hoặc tương đương, và tải lại các tệp systemd unit bị ảnh hưởng .
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
Chỉ cần một ký tự đặc biệt trong tiêu đề HTTP Host, kẻ tấn công chưa xác thực có thể vượt qua mọi kiểm tra ủy quyền dựa trên đường dẫn trong Starlette, ảnh hưởng nghiêm trọng đến FastAPI, vLLM, LiteLLM, máy chủ MCP, v.v.
Chỉ cần một ký tự đặc biệt trong tiêu đề HTTP Host, kẻ tấn công chưa xác thực có thể vượt qua mọi kiểm tra ủy quyền dựa trên đường dẫn trong Starlette, ảnh hưởng nghiêm trọng đến FastAPI, vLLM, LiteLLM, máy chủ MCP, v.v. Trong khi điểm CVSS v3.1 chính thức chỉ xếp lỗ hổng ở mức Trung bình 6.5, các nhà nghiên cứu tại X41 D Sec và Secwest cho rằng mức điểm này đánh giá thấp trầm trọng rủi ro, vì nó tạo ra một cổng hậu chưa xác thực vào...
Bản vá là Starlette 1.0.1, trong đó tiêu đề Host được xác thực dựa trên các tiêu chuẩn RFC.