무슨 일이 있었나
2026년 5월, FastAPI의 기반인 Python 프레임워크 Starlette에서 인증 우회 취약점 CVE-2026-48710(별칭 BadHost)이 공개됐습니다. 수정은 Starlette 1.0.1에 포함됐습니다. OSTIF가 후원한 감사에서 X41 D-Sec이 발견했고 Ars Technica가 보도했습니다.
심각한 이유: Starlette는 주당 약 3억 2,500만 회 다운로드되며 vLLM, LiteLLM, AI 에이전트를 도구·DB와 연결하는 MCP 서버, Google ADK-Python, Ray Serve, BentoML, 에이전트 대시보드 등 Python AI 인프라 상당수의 바탕입니다.
작동 방식
Starlette는 Host 헤더와 경로를 이어 request.url을 만들면서 Host를 검증하지 않았습니다. 공격자가 Host: example.com/health?x= 같은 값을 보내면:
- 라우터는 실제 경로(예:
/admin)로 요청을 넘기지만, - 인증 미들웨어는 "오염된" 경로(공개된
/health)를 보고 통과시킵니다.
결과적으로 미들웨어에서 하는 경로 기반 보안 규칙은 헤더의 문자 하나로 우회됩니다.
MCP 서버는 특히 쉬운 표적입니다. MCP 사양이 공개 OAuth 탐색 엔드포인트를 요구해 찾기 쉽기 때문입니다. X41의 스캔에서 취약한 시스템은 임상시험 데이터, 신원 확인, 메일함 전체, 인사 데이터, 산업 장비 SSH 접근 등을 노출했습니다.
보도에 따르면 Claude Mythos도 Project Glasswing에서 이 버그를 찾지 못했습니다. 각자 정상 동작하는 세 계층이 맞물려 생기는 문제이기 때문입니다.
대응
- Starlette를 1.0.1 이상으로 업데이트하세요(이를 포함한 FastAPI도).
- 당장 어렵다면 보안 판단을 하는 미들웨어·의존성에서
request.url.path를request.scope["path"]로 바꾸세요. - Host를 검증하는 리버스 프록시(nginx, Caddy, Traefik, HAProxy)를 앞단에 두세요.
- 오래된 버전이 고정됐을 수 있는 컨테이너 이미지와 가상환경을 점검하세요.
- badhost.org에 무료 스캐너가 있습니다.
교훈
AI 에이전트 인프라는 너무 빨리 성장하며 아무도 검토하지 않은 보안 가정을 물려받았습니다. FastAPI로 MCP 서버나 LLM 프록시를 운영한다면 최우선으로 대응하세요.
출처
- The Agent Report (28/05/2026): https://the-agent-report.com/2026/05/badhost-starlette-cve-critical-ai-agent-vulnerability/
회사에서 AI 에이전트나 MCP 서버를 운영하시나요? KGA IT가 무료로 보안을 점검해 드립니다: kga-it.com