Evidence dossier

CVE-2026-102268

PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard

GitHub_M reports CVSS 3.1 9.1.

22.8–85.4Priority evidence range
Evidence through Sep 28, 2026, 11:59 PM UTC

As of Sep 28, 2026

Normalized restatement

PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, is_pem_format in jwt/utils.py is affected because is_pem_format does not recognize every PEM representation accepted by the cryptography loader. This occurs when an application mixes HMAC and asymmetric algorithms and supplies a mutated public-key PEM as raw key bytes. As a result, HMACAlgorithm.prepare_key treats the unrecognized asymmetric public key as an HMAC secret. Consequently, an attacker who knows the public key can forge authenticated HMAC tokens. This issue is fixed in version 2.14.0.

State
PUBLISHED
Published
Sep 28, 2026
Updated
Sep 28, 2026
Evidence coverage
25%

Evidence chronology

What was known when

Download this view's receipt →
  1. Source dateSource date omittedFirst observed by CASCA
    GitHub_M

    Record text: PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard

    Inspect raw assertion
    Field
    container
    Value
    PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard
    Original evidence ↗
ExploitationCISA KEV: last verified catalog retained

The last verified source boundary remains in force for this claim.

Exploit likelihoodFIRST EPSS window predates this record

The relevant event date falls after the bounded source window.

SeverityCVSS 9.1

GitHub_M · CVSS 3.1 · first observed Sep 28, 2026 · same-version scores align in this snapshot

Evidence detail

Source limits and decisions

Why each evidence state has this value

casca-unknown-reasons-v1
Exploitation statusLast verified source snapshot retained

The last verified source boundary remains in force for this claim.

Revision
evidence-policy-v1.1.0
Cutoff
Sep 28, 2026
Resolution
Review source contract
Exploit likelihoodSource window predates this record

The relevant event date falls after the bounded source window.

Revision
evidence-policy-v1.1.0
Cutoff
Sep 28, 2026
Resolution
Extend source window
Severity assessmentEvidence supported

Eligible evidence is present for this bounded claim.

Revision
casca-direct-cvss-eligibility-v1
Cutoff
Sep 28, 2026
Resolution
None
Affected productsSource-reported scope

The cited source assertion is retained while canonical product linkage remains open.

Revision
casca-factor-d-obligations-v1
Cutoff
Sep 28, 2026
Resolution
Resolve identity

Source comparison

Who said what

GitHub_MOriginal assertion
Record text

PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard

Inspect raw assertion
Field
container
Value
PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard
Source dateSource date omittedFirst observed by CASCAOriginal evidence ↗

Applicability

Cited product scope

Trace impact →

1 scope groups

GitHub_M · source assertedjpadillapyjwtDirect source scope
Affected: < 2.14.0
Source-reported scope

Canonical linkage remains open; the cited source assertion is retained below.

Inspect raw assertion[{"status": "affected", "version": "< 2.14.0"}]

Affected-product evidence

Accepted scope and product mapping

0 canonical links · 1 source-reported links

Source-reported scopeSource-reported scope

Canonical linkage remains open; the cited source assertion is retained below.

Vendor specified only by source · Product specified only by source

Source class
Direct cve affected
Assertions
1
Mapping revision
cpe23-exact-mapping-v1
Observed cutoff
Sep 28, 2026
Retained assertion IDs
c27d8c3a-3dd9-431e-a9da-962c400c9114

Assessments

CVSS by origin

9.1
security-advisories@github.comCVSS 3.1 · role Secondary · priority eligiblevalid_matchCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
9.1
GitHub_MCVSS 3.1 · role unknown · display onlyDirect record assessment retained outside normalized eligibilityCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Direct CVE/CNA normalized decisions

9.1Priority eligible

GitHub_M

CVSS 3.1 · Primary · Original assertion · rank 1

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Validation
Valid match
Recomputed
9.1
Decision reason
Evidence supported
Policy
casca-direct-cvss-eligibility-v1

Assessments are retained side by side under closed precedence. Cascade never averages CVSS.

Evidence boundaries

  • CISA KEV catalog silence leaves exploitation status unassessed.
  • FIRST EPSS coverage falls outside this snapshot’s dated scoring window.
  • Affected or fixed status applies only to the exact cited product and version scope; remaining scope stays source-scoped.
  • NVD-carried upstream facts remain derivative; independent corroboration requires a separately authored source.
  • Only NVD metrics validated under the generation-bound calculator are Public Priority eligible; direct CVE record metrics remain display-only.
  • NVD CVSS source eligibility is closed: NVD-authored, exact record-source, or registered same-CVE container origin; unmapped sources remain display-only.
  • Core replay supports the active and immediately prior generation; retrospective valid-at replay is deferred.
  • OSV aggregation and OSV-converted NVD material are not independent corroboration.
  • Red Hat facts are vendor assertions for the exact supplied products.
  • Nonmembership and not-yet-observed states are not proof of safety.