🇰🇷 한글 설명
Authlib 1.9.0 미만 버전의 RFC 9101 JWTAuthenticationRequest에서 인증되지 않은 클라이언트가 제어하는 request_uri 매개변수가 정책 검증 전에 처리되는 취약점이 발견되었습니다. 공격자는 이를 악용하여 내부 네트워크나 의도하지 않은 URL로 요청을 보내고 응답 차이나 타이밍을 통해 정보를 탈취할 수 있습니다.
💡 쉬운 설명
해커가 조작된 주소를 보내 서버가 내부 네트워크의 비밀 정보를 몰래 조회하도록 유도할 수 있는 보안 결함입니다. 서버가 외부에서 들어온 주소를 검사하기 전에 먼저 접근을 시도하기 때문에 발생합니다.
🇺🇸 원문 (English)
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, Authlib's RFC 9101 JWTAuthenticationRequest passes the unauthenticated, client-controlled request_uri parameter to the abstract get_request_object() hook before applying a destination or registration policy; the hook itself performs no network request, while the documentation demonstrates an unrestricted HTTP fetch. In deployments whose integrator implements that hook as an unrestricted outbound fetch, a remote attacker who knows a valid public client identifier can make the authorization server request internal, link-local, or otherwise unintended URLs and can distinguish fetch outcomes through different error responses and timing. Deployments whose custom hook already applies a secure allowlist, destination controls, and retrieval limits are not affected. The JWTAuthenticationRequest implementation in authlib/oauth2/rfc9101/authorization_server.py forwards request_uri to get_request_object() before an application-approved retrieval policy accepts the destination. This issue is fixed in version 1.9.0.
📍 영향받는 시스템
Authlib Python library versions prior to 1.9.0
⚔️ 공격 벡터
유효한 공개 클라이언트 식별자를 사용하여 조작된 request_uri를 포함한 요청을 전송하는 방식
🛡️ 대응 방법
Authlib 라이브러리를 최신 버전인 1.9.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 1.9.0보다 낮으면 취약한 상태입니다.
pip show authlib | grep Version