GitHub Advisoryadvisory · PyPI
GHSA-3pgj-pg6c-r5p7 OAuthLib vulnerable to DoS when attacker provides malicious IPV6 URI
MEDIUM
Official page ↗
- Aliases
- CVE-2022-36087
- Ecosystem
- PyPI
- Packages
- oauthlib
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-20, CWE-601
- Reviewed
- 2022-09-16
Affected packages
• PyPI oauthlib: >= 3.1.1, < 3.2.2 → fixed in 3.2.2
Description
Impact
• Attacker providing malicious redirect uri can cause DoS to oauthlib's web application.
• Attacker can also leverage usage of `uri_validate` functions depending where it is used.
_What kind of vulnerability is it? Who is impacted?_
Oauthlib applications using OAuth2.0 provider support or use directly `uri_validate` function.
Patches
_Has the problem been patched? What versions should users upgrade to?_
Issue fixed in 3.2.2 release.
Workarounds
_Is there a way for users to fix or remediate the vulnerability without upgrading?_
The `redirect_uri` can be verified in web toolkit (i.e `bottle-oauthlib`, `django-oauth-toolkit`, ...) before oauthlib is called. A sample check if `:` is present to reject the request can prevent the DoS, assuming no port or IPv6 is fundamentally required.
References
Attack Vector:
• Attacker providing malicious redirect uri:
https://github.com/oauthlib/oauthlib/blob/d4bafd9f1d0eba3766e933b1ac598cbbf37b8914/oauthlib/oauth2/rfc6749/grant_types/base.py#L232
• Vulnerable `uri_validate` functions:
https://github.com/oauthlib/oauthlib/blob/2b8a44855a51ad5a5b0c348a08c2564a2e197ea2/oauthlib/uri_validate.py
PoC
```python
is_absolute_uri("http://[:::::::::::::::::::::::::::::::::::::::]/path")
```
Acknowledgement
Special thanks to Sebastian Chnelik - PyUp.io
Related
Alias · CVE (1)
- CVE-2022-36087 OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. vulnerability
References
- https://github.com/oauthlib/oauthlib/security/advisories/GHSA-3pgj-pg6c-r5p7 web
- https://nvd.nist.gov/vuln/detail/CVE-2022-36087 advisory
- https://github.com/oauthlib/oauthlib/commit/2e40b412c844ecc4673c3fa3f72181f228bdbacd web
- https://github.com/oauthlib/oauthlib package
- https://github.com/oauthlib/oauthlib/blob/2b8a44855a51ad5a5b0c348a08c2564a2e197ea2/oauthlib/uri_validate.py web
- https://github.com/oauthlib/oauthlib/blob/d4bafd9f1d0eba3766e933b1ac598cbbf37b8914/oauthlib/oauth2/rfc6749/grant_types/base.py#L232 web
- https://github.com/oauthlib/oauthlib/releases/tag/v3.2.1 web
- https://github.com/pypa/advisory-database/tree/main/vulns/oauthlib/PYSEC-2022-269.yaml web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/LXOPIA6M57CFQPUT6HHSNXCTV6QA3UDI web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/NBCQJR3ZF7FVNTJYRVPVSQEQRAYZIUHU web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/QRYLYHE5HWF6R2CRLJFUK4PILR47WXOE web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/X2CQZM5CKOUM4GW2GTAPQEQFPITQ6F7S web