🇰🇷 한글 설명
OAuthLib의 RevocationEndpoint에서 enable_jsonp=True로 설정된 경우, 검증되지 않은 callback 요청 파라미터가 응답 본문에 그대로 반영되는 취약점이 존재합니다. 공격자가 callback 파라미터를 조작하여 브라우저에서 임의의 자바스크립트를 실행할 수 있는 Cross-Site Scripting(XSS) 공격이 가능합니다.
💡 쉬운 설명
웹사이트의 특정 설정이 켜져 있을 때, 공격자가 악성 코드를 심은 링크를 보내 사용자의 브라우저에서 몰래 실행할 수 있는 보안 약점입니다. 이로 인해 사용자의 개인 정보나 로그인 정보가 탈취될 위험이 있습니다.
🇺🇸 원문 (English)
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
📍 영향받는 시스템
OAuthLib 0.6.1 버전부터 4.0.0 미만 버전 (enable_jsonp=True 설정 시)
⚔️ 공격 벡터
조작된 callback 파라미터가 포함된 요청을 통해 브라우저에서 악성 자바스크립트 실행
🛡️ 대응 방법
OAuthLib를 4.0.0 이상의 버전으로 업데이트하거나, enable_jsonp 설정을 False로 유지
🔧 검증 코드
출력된 버전이 4.0.0 미만인지 확인하여 취약 여부를 판단합니다.
pip show oauthlib | grep Version