CVE-2020-15234
Redirect URL matching ignores character casing
In short
ORY Fosite's OAuth2 implementation incorrectly compared redirect URLs by ignoring uppercase and lowercase letters. An attacker could register a legitimate redirect URL, then use a slightly different version with different capitalization to bypass validation and potentially steal user authentication credentials.
Technical detail
Fosite v0.34.0 and earlier performs case-insensitive redirect URL validation using strings.ToLower() instead of exact string matching, enabling URL validation bypass (CWE-601). An attacker with client registration privileges can register a benign redirect URL, then supply a case-variant during the OAuth2 authorization flow to redirect the user to an unvalidated endpoint, potentially capturing authorization codes or tokens.
Summary generated and translated by AI from the official description.
ORY Fosite is a security first OAuth2 & OpenID Connect framework for Go. In Fosite before version 0.34.1, the OAuth 2.0 Client's registered redirect URLs and the redirect URL provided at the OAuth2 Authorization Endpoint where compared using strings.ToLower while they should have been compared with a simple string match. This allows an attacker to register a client with allowed redirect URL https://example.com/callback. Then perform an OAuth2 flow and requesting redirect URL https://example.com/CALLBACK. Instead of an error (invalid redirect URL), the browser is redirected to https://example.com/CALLBACK with a potentially successful OAuth2 response, depending on the state of the overall OAuth2 flow (the user might still deny the request for example). This vulnerability has been patched in ORY Fosite v0.34.1.
CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:N