<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-31T21:47:15.128925+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/cve-2026-114618</id>
    <title>CVE-2026-114618 — Authlib: Default JWT bearer grant accepts assertions for the wrong audience</title>
    <updated>2026-10-31T21:47:15.132719+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> authlib</p>
<p>Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, the default RFC 7523 JWTBearerGrant.get_audiences() returns an empty list, causing JWTBearerGrant.verify_claims() to require only that an aud claim exists without matching the current authorization server. An attacker holding a legitimate assertion for another service can present it to a server that shares the signing key and uses the default grant, obtaining an access token across a trust boundary. Implementations that override get_audiences() with the server's valid audience identifiers are not affected. This issue is fixed in version 1.9.0.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-114618"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-fch4-3c6x-j4gc</id>
    <title>GHSA-fch4-3c6x-j4gc — Authlib: Default JWT bearer grant accepts assertions for the wrong audience</title>
    <updated>2026-10-31T21:47:15.132834+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: authlib</p>
<p>## Description</p>
<p>### Summary</p>
<p>Authlib's default RFC 7523 JWT bearer grant leaves `get_audiences()` empty, so `verify_claims()` only checks that an `aud` claim *exists* instead of requiring it to match the current authorization server's token endpoint. An attacker holding a legitimately issued JWT assertion for *any* audience can present it to a different authorization server sharing the same signing key and obtain an access token.</p>
<p>To be completely transparent, AI tools helped surface it. However, we have independently reproduced and carefully validated the issue. We follow responsible disclosure practices and are sharing this privately.</p>
<p>### Affected Entrypoints</p>
<p>- `authlib.oauth2.rfc7523.JWTBearerGrant` — default `get_audiences()` returns empty list
- `authlib.jose.jwt.decode()` with `claims_options` for audience validation
- `authlib.integrations.flask_oauth2.ResourceProtector.validate_request()` when audience checking is enabled</p>
<p>### Exploit Path</p>
<p>```
1. Attacker authenticates to Service A (low-privilege)
2. Authorization server issues JWT with "aud": "https://evil.test/token"
3. Attacker presents this assertion to Service B's token endpoint
4. Service B uses default JWTBearerGrant (get_audiences() = [])
5. verify_claims() only checks aud *exists*, not its value
6. Service B issues an access token — audience bypass achieved
```</p>
<p>### Proof of Concept</p>
<p>```python
#!/usr/bin/env python3
"""
Demonstrates that the default JWTBearerGrant accepts JWT assertions
whose audience doe…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-fch4-3c6x-j4gc"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/pysec-2026-4358</id>
    <title>PYSEC-2026-4358</title>
    <updated>2026-10-31T21:47:15.132955+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: authlib</p>
<p>Authlib is a Python library which builds OAuth and OpenID Connect servers. Prior to 1.9.0, the default RFC 7523 JWTBearerGrant.get_audiences() returns an empty list, causing JWTBearerGrant.verify_claims() to require only that an aud claim exists without matching the current authorization server. An attacker holding a legitimate assertion for another service can present it to a server that shares the signing key and uses the default grant, obtaining an access token across a trust boundary. Implementations that override get_audiences() with the server's valid audience identifiers are not affected. This issue is fixed in version 1.9.0.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/pysec-2026-4358"/>
  </entry>
</feed>
