BadHost가 뭔가요
Python으로 웹 API를 만드는 분들 사이에서 FastAPI는 거의 표준처럼 자리잡았죠. 그런데 그 FastAPI의 토대가 되는 ASGI 프레임워크인 Starlette에서 인증을 우회할 수 있는 보안 취약점이 발견됐어요. 이름은 BadHost, 식별자는 CVE-2026-48710입니다.
핵심을 먼저 말씀드리면, 공격자가 HTTP 요청의 Host 헤더를 조작해서, 원래는 인증된 사용자만 접근할 수 있는 경로로 요청을 흘려보낼 수 있는 문제예요. Starlette 자체뿐 아니라 Starlette 위에 올라간 FastAPI 애플리케이션도 영향 범위 안에 들어갑니다. 국내에서 FastAPI 비중이 워낙 크기 때문에, "우리 회사 거 한 번 확인해야겠다" 싶은 분들이 많을 거예요.
Host 헤더가 뭐길래 인증을 뚫나요
이 부분이 헷갈리는 분들을 위해 짧게 풀어볼게요. HTTP 요청에는 Host라는 헤더가 항상 들어가요. 예를 들어 브라우저가 https://api.example.com/users 를 부르면, 내부적으로는 "Host: api.example.com" 이라는 줄이 같이 전송돼요. 서버 입장에서는 "아, 이 요청이 어떤 도메인을 향한 거구나" 하고 판단하는 단서가 되죠.
문제는 이 Host 값이 클라이언트가 마음대로 바꿔 보낼 수 있는 값이라는 점이에요. 만약 애플리케이션의 미들웨어나 라우팅 로직이 이 값을 "신뢰할 수 있는 출처"로 가정하고 의사결정을 내린다면, 공격자가 위조된 Host 값으로 보호된 경로에 우회 접근할 가능성이 생겨요. 흔한 패턴이 "내부 도메인에서 온 요청은 인증 면제" 같은 화이트리스트 로직인데, Host를 신뢰해서 분기하면 그게 그대로 우회 통로가 됩니다.
이번 BadHost는 Starlette의 라우팅·인증 처리 과정에서 Host 헤더를 다루는 방식에 허점이 있어서, 인증된 사용자만 봐야 할 엔드포인트를 인증 없이 호출할 수 있게 되는 시나리오로 알려져 있어요.
영향 범위와 점검 포인트
가장 먼저 확인할 건 Starlette 버전입니다. pip show starlette 또는 poetry show starlette 로 현재 버전을 확인하고, 공식 보안 권고에 적힌 패치 버전 이상으로 즉시 올리는 게 1순위예요. FastAPI는 Starlette을 의존성으로 끌고 가지만, FastAPI 자체 버전이 최신이어도 깔린 Starlette이 옛 버전이면 의미가 없어요. 그래서 pip install --upgrade starlette 처럼 명시적으로 올려주는 게 안전합니다.
둘째, TrustedHostMiddleware가 제대로 설정돼 있는지 보세요. Starlette/FastAPI는 allowed_hosts를 명시할 수 있는 미들웨어를 제공해요. 와일드카드 "*"로 열어둔 곳이 있다면, 실제로 서비스하는 도메인만 정확히 적어주는 게 좋습니다. 셋째, 리버스 프록시(Nginx, ALB, CloudFront 등) 단에서 Host 헤더 정규화가 되고 있는지 확인하세요. 백엔드까지 위조된 Host가 흘러가지 않게 1차 방어선을 두는 거죠.
업계 맥락
Host 헤더 인젝션 자체는 새로운 공격 기법이 아니에요. 과거 Django, Flask, Rails 등에서도 비슷한 이슈가 여러 번 있었고, 보통 "비밀번호 재설정 메일에 공격자 도메인 링크가 박혀 나가는" 시나리오로 유명했죠. 다만 BadHost가 흥미로운 건, 인증 우회라는 더 직접적인 영향이라는 점이에요. 메일 위조보다 한 단계 더 위협적이죠.
그리고 Python 생태계에서 ASGI 기반 서비스가 폭발적으로 늘면서, Starlette은 사실상 "공통 토대" 위치에 있어요. FastAPI뿐 아니라 자체 ASGI 앱을 짠 경우에도 영향 가능성이 있으니, 의존성 트리를 한 번 훑어보는 게 좋습니다.
한국 개발자에게 주는 시사점
국내 스타트업, 특히 ML/AI 서빙용 백엔드로 FastAPI를 깔아둔 팀이 정말 많아요. 모델 서버, 사내 어드민, 데이터 API 등 외부에 노출된 FastAPI 엔드포인트가 있다면, 오늘 안에 Starlette 버전 점검 + allowed_hosts 설정 검토를 추천드려요. Dependabot이나 Renovate가 알아서 PR을 올려주겠지만, 한 박자 빠르게 수동 업데이트할 가치가 있는 종류의 취약점입니다.
마무리
한 줄 정리: FastAPI를 쓴다면 오늘 바로 starlette 버전을 올리고 TrustedHostMiddleware를 점검하세요. 인증 우회는 데이터 유출의 가장 빠른 지름길이에요.
여러분 팀의 API 게이트웨이는 Host 헤더를 어떻게 다루고 있나요? 백엔드까지 그대로 흘려보내고 있는 건 아닌지 한 번 확인해보면 좋겠어요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공