Skip to content
Heist/ feed
Back to feed
Critical

joserfc: JWS signature verification bypass via empty signatures array in jws.deserialize_json

Type: advisorySources: OSV

joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.7.4, joserfc.jws.deserialize_json() accepts a JWS General JSON Serialization with an empty signatures array as authenticated. The verify_general_json() loop performs no iterations for the empty array and returns success because no signature check failed, allowing an attacker without a signing key to supply an arbitrary payload that relying applications may treat as authentic. The issue affects the General JSON Serialization path; compact JWS and JWT decoding, Flattened JSON serialization, and JWE JSON processing do not follow this vulnerable path. This issue is fixed in version 1.7.4.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-102946
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 20:32 UTC · Revision 1

Source evidence

joserfc: JWS signature verification bypass via empty signatures array in jws.deserialize_json

core-osv · Original source

Published 15 Oct 2026, 18:28 UTC

joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.7.4, joserfc.jws.deserialize_json() accepts a JWS General JSON Serialization with an empty signatures array as authenticated. The verify_general_json() loop performs no iterations for the empty array and returns success because no signature check failed, allowing an attacker without a signing key to supply an arbitrary payload that relying applications may treat as authentic. The issue affects the General JSON Serialization path; compact JWS and JWT decoding, Flattened JSON serialization, and JWE JSON processing do not follow this vulnerable path. This issue is fixed in version 1.7.4.

osv:CVE-2026-102946
Complete source record
{
  "id": "df86957bcf39f134846bb8dedb526853b8259bbb90110f0f79e89ed463fcbb7e",
  "url": "https://osv.dev/vulnerability/CVE-2026-102946",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "joserfc: JWS signature verification bypass via empty signatures array in jws.deserialize_json",
    "summary": "joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.7.4, joserfc.jws.deserialize_json() accepts a JWS General JSON Serialization with an empty signatures array as authenticated. The verify_general_json() loop performs no iterations for the empty array and returns success because no signature check failed, allowing an attacker without a signing key to supply an arbitrary payload that relying applications may treat as authentic. The issue affects the General JSON Serialization path; compact JWS and JWT decoding, Flattened JSON serialization, and JWE JSON processing do not follow this vulnerable path. This issue is fixed in version 1.7.4.",
    "evidence": "osv:CVE-2026-102946",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-102946",
      "aliases": [
        "CVE-2026-102946",
        "GHSA-4pp3-559j-c5c2"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/authlib/joserfc",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7facdee77fc8735ad88e586b31c5b0c940ee0a78"
                },
                {
                  "fixed": "f409f8f058225d7686acab6546c94593e4c1bfbe"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.7.4"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "f409f8f058225d7686acab6546c94593e4c1bfbe"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7facdee77fc8735ad88e586b31c5b0c940ee0a78"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "1.7.4"
                  }
                ]
              }
            }
          ],
          "versions": [
            "1.7.3",
            "1.7.2",
            "1.7.1",
            "1.7.0",
            "1.6.7",
            "1.6.5",
            "1.6.4",
            "1.6.3",
            "1.6.2",
            "1.6.1",
            "1.6.0",
            "1.5.0",
            "1.4.3",
            "1.4.1",
            "1.4.0",
            "1.3.3",
            "1.3.2",
            "1.3.1",
            "1.3.0",
            "1.2.2",
            "1.2.1",
            "1.2.0",
            "1.1.0",
            "1.0.4",
            "1.0.3",
            "1.0.2",
            "1.0.1",
            "1.0.0",
            "0.12.0",
            "0.11.1",
            "0.11.0",
            "0.10.0",
            "0.9.0",
            "0.8.0",
            "0.7.0",
            "0.6.0",
            "0.5.0",
            "0.4.0",
            "0.3.0",
            "0.2.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-102946.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:39.247786105Z",
      "provider": "osv",
      "references": [
        "https://github.com/authlib/joserfc/releases/tag/1.7.4",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102946.json",
        "https://github.com/authlib/joserfc/security/advisories/GHSA-4pp3-559j-c5c2",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-102946",
        "https://github.com/authlib/joserfc/commit/f409f8f058225d7686acab6546c94593e4c1bfbe"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-290",
          "CWE-345",
          "CWE-347"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102946.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-102946",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 506714,
  "published_at": "2026-10-15T18:28:06.913+00:00"
}