Five findings in FastAPI, and what happened when I reported them

개요

FastAPI 프로젝트의 보안 취약점 발견 및 보고 과정에 대한 글은 5가지 발견 사항과 그 처리 경과, 그리고 프로젝트의 보안 정책에 대한 분석을 다룬다.

주요 내용

* 보안 보고 절차 및 처리: 2026년 7월 26일, 5가지 취약점이 GitHub의 비공개 취약점 보고 기능을 통해 FastAPI 프로젝트에 비공개로 보고되었으며, 8월 11일에 모두 공개 없이 종료되었다. 보고된 지 3일 후, 한 가지 취약점은 유지보수자에 의해 직접 수정되었다.
* FastAPI의 보안 취약점 처리 정책: FastAPI 프로젝트의 공개된 보안 권고(Advisory) 기록은 매우 적으며, 자체 코드의 취약점은 2021년 6월 CVE-2021-32677이 유일하다. 이는 프로젝트가 취약점을 일반 버그처럼 수정하고, 보안 권고는 예외적인 경우에만 사용하는 정책을 일관되게 유지하고 있음을 시사한다.
* frontend() 함수 관련 버그: 2026년 7월 26일, FastAPI의 frontend() 헬퍼 함수가 인증 의존성에서 설정된 헤더, Set-Cookie, 상태 변경, 백그라운드 작업 등을 무시하고 폐기하는 문제가 보고되었다. 이 문제는 7월 29일에 app.frontend()에서 백그라운드 작업 및 헤더 지원을 수정하는 PR(#16105)로 해결되었으며, 0.141.1 릴리스에 포함되었다. 해당 보고서는 이 수정과 직접적으로 연결되지 않았으나, 문제 제기와 수정이 거의 동시에 이루어진 것으로 보인다.
* 미해결 및 논쟁의 여지가 있는 취약점:
* jsonable_encoder가 Pydantic의 Secret[T] 내용을 반환하는 문제 (미해결)
* 스트리밍 라우트에서 response_model이 수락되지만 무시되는 문제 (미해결)
* Json[T]가 문서화된 엄격한 Content-Type 보장을 우회하는 문제 (미해결)
* root_path가 Swagger UI 및 ReDoc 페이지에 이스케이프되지 않은 채 반영되는 문제 (미해결)
* 발행 결정: 발견된 취약점 중 4가지(프론트엔드() 제외)는 현재 버전(0.141.1)에서도 여전히 존재하며, 보고자의 분석에 따르면 2가지(jsonable\_encoder, Json[T] bypass)는 명확한 프레임워크 결함으로, 2가지(response\_model, root\_path)는 논쟁의 여지가 있는 것으로 분류된다.

시사점

FastAPI의 보안 취약점 처리 방식은 공개된 보안 권고 기록이 적다는 점에서 일반적인 프레임워크와 다르며, 발견된 일부 취약점은 여전히 해결되지 않은 채 현재 버전에 남아 있어 사용자의 주의가 필요하다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions