Starlette HTTP Host 헤더 검증 미흡으로 인한 보안 미들웨어 우회 취약점 (CVE-2026-48710)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENT1.0.1 미만 버전의 Starlette ASGI 프레임워크를 사용하는 모든 웹 애플리케이션
조작된 Host 헤더를 통해 실제 요청 경로와 request.url.path가 불일치하게 되어, URL 기반 보안 미들웨어 및 접근 제어 로직이 완전히 우회될 수 있음
Starlette 패키지를 최신 보안 패치가 적용된 1.0.1 이상 버전으로 즉시 업그레이드
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
PATCH & WORKAROUND1. 공식 패치 적용 (권장)
Starlette 의존성을 1.0.1 이상 버전으로 업데이트하십시오. 이 버전에서는 RFC 9112 §3.2 및 RFC 3986 §3.2.2 규격에 따라 Host 헤더를 엄격히 검증하며, 비정상적인 값 발견 시 scope["server"] 정보를 기반으로 안전하게 대체(Fallback)합니다.
# pip를 사용하는 경우
pip install --upgrade "starlette>=1.0.1"
# Poetry를 사용하는 경우
poetry add starlette@latest2. 임시 완화 조치 (패치 적용 전)
즉각적인 패치가 어려운 경우, 리버스 프록시(Nginx, AWS ALB 등) 또는 WAF 단에서 비정상적인 Host 헤더를 가진 요청을 사전에 차단하십시오.
Nginx 설정 예시:
# RFC 규격에 맞지 않는 Host 헤더를 가진 요청 차단
if ($http_host !~* ^[a-z0-9.-]+(:[0-9]+)?$) {
return 400;
}내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요
간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.
취약점 발생 원리 및 공격 메커니즘
본 취약점(CVE-2026-48710)은 경량 ASGI 프레임워크인 Starlette에서 HTTP Host 요청 헤더를 검증하지 않고 request.url 객체를 재구성할 때 발생합니다.
Starlette의 내부 라우팅 알고리즘은 ASGI scope에 포함된 원시 HTTP 경로(raw path)를 기준으로 동작하는 반면, 개발자가 작성한 미들웨어나 엔드포인트 보안 로직은 흔히 request.url 또는 request.url.path를 참조하여 접근 제어를 수행합니다. 공격자가 RFC 규격에 맞지 않는 비정상적인(Malformed) Host 헤더를 전송할 경우, request.url이 재구성되는 과정에서 파싱 오류나 왜곡이 발생하여 request.url.path가 실제 라우팅된 경로와 다르게 표현됩니다.
이로 인해 특정 관리자 경로(/admin 등)에 대한 접근을 제한하는 보안 미들웨어가 무력화되어, 비인가 사용자가 제한된 엔드포인트에 접근할 수 있는 심각한 보안 결함이 발생합니다. 본 취약점은 실제 공격에 악용된 이력이 존재하여 CISA KEV에 등재되었으며, EPSS 점수가 0.94에 달해 신속한 대응이 요구됩니다.
공식 보안 권고문 및 참조 링크
Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP `Host` request header was not validated before being used to reconstruct `request.url`. Because the routing algorithm relies on the raw HTTP path while `request.url` is rebuilt from the `Host` header, a malformed header could make `request.url.path` differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on `request.url` (rather than the raw `scope` path) could therefore be bypassed. Users should upgrade to a version greater than or equal to version 1.0.1, which validates the `Host` header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing `request.url` and falls back to `scope["server"]` for malformed values.
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.