CVE-2026-41425
Authlib: Cross-site request forging when using cache
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.4
Authlib: Cross-site request forging when using cache
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
EUVDEUVD-2026-25615
5.4
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
EUVD-2026-25615- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jj8c-mmj3-mmgv
5.4
Authlib: Cross-site request forging when using cache
Summary
There is no CSRF protection on the cache feature on most integrations clients.
Details
In authlib.integrations.starlette_client.OAuth, no CSRF protection is set up when using the cache parameter. When not using the cache parameter, the use of SessionMiddleware ties the client to the auth state, preventing CSRF attacks. With the cache, there is no such mechanism. Other integratons have the same issue, it's not just starlette.
The state parameter is taken from the callback URL and the state is fetched from the cache without checking that it is the same client calling the redirect endpoint as was the one that initiated the auth flow.
This issue is documented in RFC 6749 section 10.12: https://datatracker.ietf.org/doc/html/rfc6749#section-10.12
PoC
- Set up a Starlette integration with a cache
- The attacker starts the auth flow up until before the callback URL is followed.
- The attacked sends the redirect URL to the victim
- The victim now completes the authorisation
Impact
This impacts all users that use the cache to store auth state.
All users will be vulnerable to CSRF attacks and may have an attacker's account tied to their own.
- Record
GHSA-jj8c-mmj3-mmgv- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
NVD
5.4
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
OSV
5.4
Authlib: Cross-site request forging when using cache
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-03
OSVDEBIAN-CVE-2026-41425
5.4
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
DEBIAN-CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
Show 8 moreShow less
OSVGHSA-jj8c-mmj3-mmgv
5.4
Authlib: Cross-site request forging when using cache
Summary
There is no CSRF protection on the cache feature on most integrations clients.
Details
In authlib.integrations.starlette_client.OAuth, no CSRF protection is set up when using the cache parameter. When not using the cache parameter, the use of SessionMiddleware ties the client to the auth state, preventing CSRF attacks. With the cache, there is no such mechanism. Other integratons have the same issue, it's not just starlette.
The state parameter is taken from the callback URL and the state is fetched from the cache without checking that it is the same client calling the redirect endpoint as was the one that initiated the auth flow.
This issue is documented in RFC 6749 section 10.12: https://datatracker.ietf.org/doc/html/rfc6749#section-10.12
PoC
- Set up a Starlette integration with a cache
- The attacker starts the auth flow up until before the callback URL is followed.
- The attacked sends the redirect URL to the victim
- The victim now completes the authorisation
Impact
This impacts all users that use the cache to store auth state.
All users will be vulnerable to CSRF attacks and may have an attacker's account tied to their own.
- Record
GHSA-jj8c-mmj3-mmgv- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
OSVPYSEC-2026-25
5.4
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
PYSEC-2026-25- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2026-41425
5.4
CVE-2026-41425 in Authlib - Patched by Root
Root has patched CVE-2026-41425 in the Authlib package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVROOT-APP-PYPI-GHSA-jj8c-mmj3-mmgv
5.4
GHSA-jj8c-mmj3-mmgv in Authlib - Patched by Root
Root has patched GHSA-jj8c-mmj3-mmgv in the Authlib package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-GHSA-jj8c-mmj3-mmgv- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-41425
5.4
Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth. This vulnerability is fixed in 1.6.11.
- Record
UBUNTU-CVE-2026-41425- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12390-1 No score
python313-Authlib-1.9.1-1.1 on GA media
These are all security issues fixed in the python313-Authlib-1.9.1-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12390-1- Updated
- 2026-11-03
OSVSUSE-SU-2026:2968-1 No score
Security update for python-Authlib
This update for python-Authlib fixes the following issues
- CVE-2026-41425: Prior to 1.6.11, there is no CSRF protection on the cache feature in authlib.integrations.starlette_client.OAuth (bsc#1263114).
- CVE-2026-44681: Prior to 1.6.12 and 1.7.1, an unauthenticated open redirect in Authlib's OpenIDImplicitGrant and OpenIDHybridGrant authorization endpoint exists (bsc#1266665).
- Record
SUSE-SU-2026:2968-1- Updated
- 2026-11-02
OSVUSN-8557-1 No score
python-authlib vulnerabilities
Jay Neiva and Mauro Carrillo discovered that Authlib did not properly validate cryptographic keys embedded in JWT headers. An attacker could possibly use this issue to forge trusted tokens, resulting in authentication and authorization bypass. (CVE-2026-27962)
Jay Neiva and Mauro Carrillo discovered that Authlib incorrectly handled RSA1_5 encrypted tokens. An attacker could possibly use this issue to recover sensitive encrypted information, resulting in information disclosure. (CVE-2026-28490)
Jay Neiva and Mauro Carrillo discovered that Authlib did not properly reject unsupported cryptographic algorithms when validating OpenID Connect ID tokens. An attacker could possibly use this issue to bypass token integrity checks, resulting in authentication bypass. (CVE-2026-28498)
Johnny Deuss discovered that Authlib did not provide cross-site request forgery protection for the OAuth cache feature in its Starlette integration. An attacker could possibly use this issue to perform unauthorized OAuth actions, resulting in cross-site request forgery. This issue only affected Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. (CVE-2026-41425)
- Record
USN-8557-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
authlibPyPI |
before 1.6.11 | 1.6.11 |
python-authlibDebian:12 |
before 1.2.0-1+deb12u2, plus listed versions 1.2.0-11.2.0-1+deb12u1 |
1.2.0-1+deb12u2 |
python-authlibDebian:13 |
All versions, plus listed versions 1.6.0-11.6.0-1+deb13u11.6.1-11.6.3-11.6.4-1 Show 8 moreShow less1.6.5-11.6.6-11.6.7-11.6.8-11.6.9-11.7.0-11.7.2-11.7.2-2 |
None known |
python-authlibDebian:14 |
before 1.7.0-1, plus listed versions 1.6.0-11.6.1-11.6.3-11.6.4-11.6.5-1 Show 4 moreShow less1.6.6-11.6.7-11.6.8-11.6.9-1 |
1.7.0-1 |
authlibPyPI |
before 1.6.11, plus listed versions 0.10.100.110.120.12.1 Show 45 moreShow less0.130.140.14.10.14.20.14.30.150.15.10.15.20.15.30.15.40.15.50.15.60.1rc00.20.2.10.30.40.4.10.50.5.10.60.70.80.91.0.01.0.0a11.0.0a21.0.0b11.0.0b21.0.0rc11.0.11.1.01.2.01.2.11.3.01.3.11.3.21.4.01.4.11.5.01.5.11.5.21.6.01.6.11.6.10 |
1.6.11 |
AuthlibRoot:PyPI |
before 1.6.6+aikido.6 | 1.6.6+aikido.61.6.10+aikido.31.6.10+aikido.41.6.6+aikido.71.6.6+aikido.8 |
rootio-AuthlibRoot:PyPI |
before 1.6.6+root.io.6 | 1.6.6+root.io.61.6.10+root.io.31.6.10+root.io.41.6.6+root.io.7 |
AuthlibRoot:PyPI |
before 1.6.6+aikido.5 | 1.6.6+aikido.51.6.10+aikido.21.6.6+aikido.61.6.10+aikido.31.6.10+aikido.41.6.6+aikido.71.6.6+aikido.8 |
rootio-AuthlibRoot:PyPI |
before 1.6.10+root.io.1 | 1.6.10+root.io.11.6.6+root.io.41.6.6+root.io.51.6.10+root.io.21.6.6+root.io.61.6.10+root.io.31.6.10+root.io.41.6.6+root.io.7 |
python-AuthlibSUSE:Linux Enterprise Module for Python 3 15 SP7 From an advisory covering 2 CVEs |
before 1.3.1-150600.3.22.1 | 1.3.1-150600.3.22.1 |
Show 8 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-authlibUbuntu:Pro:24.04:LTS |
before 1.3.0-1ubuntu0.1~esm2, plus listed versions 1.2.1-11.3.0-11.3.0-1ubuntu0.1~esm1 |
1.3.0-1ubuntu0.1~esm2 |
python-authlibUbuntu:25.10 |
All versions, plus listed versions 1.5.1-11.5.2-11.6.0-1 |
None known |
python-authlibUbuntu:26.10 |
All versions, plus listed versions 1.6.7-11.7.2-11.7.2-2 |
None known |
python-authlibUbuntu:Pro:26.04:LTS |
before 1.6.7-1ubuntu0.1~esm1, plus listed versions 1.6.0-11.6.5-11.6.6-11.6.7-1 |
1.6.7-1ubuntu0.1~esm1 |
python-authlibUbuntu:Pro:22.04:LTS From an advisory covering 4 CVEs |
before 0.15.5-1ubuntu0.1~esm2, plus listed versions 0.15.4-10.15.5-10.15.5-1ubuntu0.1~esm1 |
0.15.5-1ubuntu0.1~esm2 |
python-authlibUbuntu:Pro:24.04:LTS From an advisory covering 4 CVEs |
before 1.3.0-1ubuntu0.1~esm2, plus listed versions 1.2.1-11.3.0-11.3.0-1ubuntu0.1~esm1 |
1.3.0-1ubuntu0.1~esm2 |
python-authlibUbuntu:Pro:26.04:LTS From an advisory covering 4 CVEs |
before 1.6.7-1ubuntu0.1~esm1, plus listed versions 1.6.0-11.6.5-11.6.6-11.6.7-1 |
1.6.7-1ubuntu0.1~esm1 |
python-AuthlibopenSUSE:Tumbleweed From an advisory covering 10 CVEs |
before 1.9.1-1.1 | 1.9.1-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| affected, aliases, facts, references | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-41425 is a medium vulnerability (CVSS 5.4) in Authlib, published April 16, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.11%, the 1st percentile. Fixed in authlib 1.6.11.
References
github.com/authlib/authlib/security/advisories/GHSA-jj8c-mmj3-mmgv
nvd.nist.gov/vuln/detail/CVE-2026-41425
github.com/pypa/advisory-database/tree/main/vulns/authlib/PYSEC-2026-25.yaml
github.com/advisories/GHSA-jj8c-mmj3-mmgv
github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41425.json
security-tracker.debian.org/tracker/CVE-2026-41425
Show 21 moreShow less
github.com/authlib/authlib
suse.com/support/update/announcement/2026/suse-su-20262968-1
bugzilla.suse.com/1263114
bugzilla.suse.com/1266665
suse.com/security/cve/CVE-2026-41425
suse.com/security/cve/CVE-2026-44681
ubuntu.com/security/CVE-2026-41425
cve.org/CVERecord?id=CVE-2026-41425
ubuntu.com/security/notices/USN-8557-1
ubuntu.com/security/CVE-2026-27962
ubuntu.com/security/CVE-2026-28490
ubuntu.com/security/CVE-2026-28498
suse.com/security/cve/CVE-2025-62706
suse.com/security/cve/CVE-2026-114614
suse.com/security/cve/CVE-2026-114615
suse.com/security/cve/CVE-2026-114616
suse.com/security/cve/CVE-2026-114617
suse.com/security/cve/CVE-2026-114618
suse.com/security/cve/CVE-2026-114619
suse.com/security/cve/CVE-2026-116672
suse.com/security/cve/CVE-2026-96760
Left out here: 8 versions. The JSON record has them.