DEEP DIVE REPORT

CVE-2026-48710: Starlette Host 헤더 검증 누락으로 인한 HTTP 요청·응답 스머글링

SecurityDesk
2026.09.11 조회 2

2026년 9월 2일 CISA가 CVE-2026-48710(Starlette HTTP 요청/응답 스머글링)을 KEV(Known Exploited Vulnerabilities) 카탈로그에 추가했다. request.url 또는 request.url.path로 인증이나 라우팅 제한을 강제하는 Starlette 기반 미들웨어를 사용하는 서비스에는 starlette 1.0.1으로의 패치가 요구된다.

개요

개요 인포그래픽
CVE-2026-48710은 Starlette의 HTTP Host 헤더 검증 누락으로 발생하는 HTTP 요청/응답 스머글링 취약점이다. Starlette의 라우팅 알고리즘은 원본 HTTP 패스(raw path)를 기반으로 요청을 분배하지만, request.url은 Host 헤더에서 재구성된다. 이 불일치를 악용하면 공격자는 Host 헤더에 경로를 주입하여 request.url.path를 조작할 수 있다.

X41 D-Sec은 이 취약점을 X41-2026-002로 분류해 공개했으며, GitHub Security Advisory에서 해당 취약점이 Missing Host header validation poisons request.url.path로 기술되어 있다. 2026-09-02 CISA 공지에서 CVE-2026-48710이 KEV에 추가됨이 확인되었다.

영향 범위

영향받는 버전은 starlette >= 0.8.3, < 1.0.1이며, 패치된 버전은 starlette 1.0.1이다.

영향받는 환경:

  • request.url 또는 request.url.path로 인증·라우팅 제한을 적용하는 Starlette 기반 미들웨어 (FastAPI 미들웨어 포함)
  • 컨테이너, virtualenv, 벤더링된 아티팩트에 Starlette 버전이 고정된 설치 (LLM 툴링에 흔함)

OSTIF.org 공동 발표에 따르면, Starlette 기반 미들웨어(FastAPI 미들웨어 포함)가 request.url 또는 request.url.path를 사용해 인증이나 라우팅 제한을 강제하는 경우, 해당 제한이 인증되지 않은 원격 공격자에게 우회될 수 있다고 경고한다.

기술적 분석

취약점 메커니즘

Starlette의 요청 처리에서 두 가지 경로가 불일치한다.

  • 라우팅: 원본 HTTP 패스(raw path) 기반으로 요청을 엔드포인트에 분배
  • request.url 재구성: Host 헤더를 신뢰하여 URL을 재구성

공격자는 Host 헤더에 경로 형태의 값을 주입함으로써 request.url.path의 값을 변경할 수 있다. GitHub Security Advisory에 따르면, malformed header로 인해 request.url.path가 raw HTTP path와 달라질 수 있다. 이 조건 하에서 OSTIF.orgrequest.url 또는 request.url.path로 인증이나 라우팅 제한을 강제하는 Starlette 기반 미들웨어(FastAPI 미들웨어 포함)에서 해당 제한이 인증되지 않은 원격 공격자에게 우회될 수 있다고 지적한다.

공개 PoC·익스플로잇 분석

  • 출처: X41 D-Sec GmbH 및 연구진(JJ)이 2026-02-04에 PoC를 제작하고 벤더에 통보했다.
  • 전제조건: Starlette >= 0.8.3, < 1.0.1을 사용하는 서비스에서 request.url 또는 request.url.path 기반 인증·라우팅 미들웨어가 존재해야 한다.
  • 입증 범위: Host 헤더에 경로를 주입하여 request.url.path를 조작하고, 이를 기반으로 한 인증·라우팅 제한을 우회하는 것이 확인되었다. CISA KEV 카탈로그에서 "inject paths into the host part" 방식으로 악용된다고 기술하고 있다.
  • 운영상 의미: CISA가 CVE-2026-48710을 KEV에 추가했다는 확인된 사실이다. 영향받는 Starlette 버전(>= 0.8.3, < 1.0.1)은 1.0.1로 업데이트해야 한다.

한계

  • CISA KEV 설명이 "inject paths into the host part" 이후 절단되어 추가 악용 세부사항은 현재 확인되지 않는다.
  • CVSS 심각도 점수와 벡터는 현재 증거에서 완전하게 확인되지 않는다.
  • 영향받는 미들웨어 패턴의 전체 목록은 증거에 완전히 포함되지 않으며, 조건부 설명만 확인된다.

대응 방안

즉각 조치

  • starlette 1.0.1으로 업그레이드: 영향받는 서비스의 Starlette 버전을 즉시 1.0.1로 갱신한다.
  • 벤더링 설치 감사: 호스트의 pip list만으로는 부족하다. 모든 컨테이너 이미지, virtualenv, 벤더링 아티팩트를 감사하여 Starlette 버전을 확인해야 한다. LLM 툴링에는 벤더링 설치가 흔하므로 이미지 감사를 권장한다.
  • 미들웨어 코드베이스 점검: request.url 또는 request.url.path로 인증·라우팅 제한을 적용하는 미들웨어가 코드베이스에 있는지 확인한다.

지속적 개선

  • Starlette 버전을 고정하거나 벤더링하는 모든 컨테이너, virtualenv, 아티팩트를 재빌드 및 재배포한다.
  • LLM 툴링과 같은 벤더링 설치 환경에 대한 이미지 감사 프로세스를 수립한다.

참고자료

함께 읽으면 좋은 글

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9