Description
OIDC::Lite versions through 0.12.1 for Perl allow ID Token signature verification bypass via a token-controlled algorithm allowlist in verify.

When the caller does not pin an algorithm, OIDC::Lite::Model::IDToken::verify sets $self->alg($self->header->{alg}) from the token's own header and then calls decode_jwt(token, key, 1, [$self->alg]), handing JSON::WebToken an accepted-algorithm allowlist taken from the untrusted token. A token with alg=none yields ['none'], so decode_jwt returns the claims with no signature check, and a token with alg=HS256 is verified with the RP's RSA public key as the HMAC secret (RS to HS confusion).

The ID Token is the OpenID Connect authentication assertion delivered to the Relying Party. Any caller that verifies an ID Token through the unpinned load(token)->verify path, or load(token, key) with only the key pinned, accepts a forged token carrying attacker-chosen claims such as sub and is authenticated as any user. Passing an explicit algorithm so $self->alg is already set bypasses the header-derived allowlist and is not affected.

Note that the latest version uploaded to CPAN is 0.10. Later versions are available in the git repository.
Published: 2026-07-22
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

OIDC::Lite versions up to 0.12.1 allow a malicious token to bypass signature verification by using the algorithm value from the token header to build an allowlist for JSON::WebToken. A token with alg=none results in a ['none'] allowlist, causing the library to skip signature validation, and a token with alg=HS256 uses the RP’s RSA public key as the HMAC secret, leading to a key type mismatch. When an attacker forges such a token, the relying party accepts it as a valid ID Token and authenticates as the victim, enabling impersonation and credential theft.

Affected Systems

The affected vendor is RITOU. Any installation of the Perl module OIDC::Lite, particularly versions 0.10 through 0.12.1, is vulnerable if the library loads ID Tokens without explicitly pinning the expected algorithm. Later versions in the git repository are not affected, but the CPAN upload as of this advisory remains version 0.10.

Risk and Exploitability

The vulnerability allows an attacker to forge an ID Token by exploiting the flexible algorithm allowlist derived from the token header. Because the expected algorithm is not pinned, a token with alg=none or a mismatched algorithm leads JSON::WebToken to skip signature validation or use the wrong key, respectively. A malicious actor can then supply a crafted token to any system that verifies ID Tokens with OIDC::Lite, resulting in the relying party accepting the forged token as authentic and authenticating as the chosen user. The CVSS score of 7.5 indicates a high‑severity vulnerability, while the EPSS score of < 1% reflects a low probability of exploitation. The CVE is not listed in the CISA KEV catalog, suggesting that it is not currently known to be widely exploited. Nonetheless, any system that allows unpinned ID Token validation is a reachable attack surface from outside the trusted network.

Generated by OpenCVE AI on August 3, 2026 at 23:13 UTC.

Remediation

Vendor Workaround

Apply the patch. Otherwise, pin the expected signature algorithm at the call site, for example OIDC::Lite::Model::IDToken->load($token, $key, $alg) with an explicit non-none $alg, so verify uses the pinned algorithm instead of the value in the token header.


OpenCVE Recommended Actions

  • Upgrade to a patched version of OIDC::Lite (e.g., the latest release available on CPAN or the git repository).
  • If an upgrade is not immediately feasible, supply an explicit algorithm to the verify call, such as OIDC::Lite::Model::IDToken->load($token, $key, $alg) with a fixed non‑none algorithm, so the library does not use the token’s header to build the allowlist.
  • Ensure that all ID Token validation code paths use the patched implementation or the explicit algorithm pinning approach, and audit the code to confirm that no unpinned load->verify sequences remain.

Generated by OpenCVE AI on August 3, 2026 at 23:13 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 27 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 23 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
First Time appeared Ritou
Ritou oidc::lite
Vendors & Products Ritou
Ritou oidc::lite

Wed, 22 Jul 2026 21:00:00 +0000

Type Values Removed Values Added
Description OIDC::Lite versions through 0.12.1 for Perl allow ID Token signature verification bypass via a token-controlled algorithm allowlist in verify. When the caller does not pin an algorithm, OIDC::Lite::Model::IDToken::verify sets $self->alg($self->header->{alg}) from the token's own header and then calls decode_jwt(token, key, 1, [$self->alg]), handing JSON::WebToken an accepted-algorithm allowlist taken from the untrusted token. A token with alg=none yields ['none'], so decode_jwt returns the claims with no signature check, and a token with alg=HS256 is verified with the RP's RSA public key as the HMAC secret (RS to HS confusion). The ID Token is the OpenID Connect authentication assertion delivered to the Relying Party. Any caller that verifies an ID Token through the unpinned load(token)->verify path, or load(token, key) with only the key pinned, accepts a forged token carrying attacker-chosen claims such as sub and is authenticated as any user. Passing an explicit algorithm so $self->alg is already set bypasses the header-derived allowlist and is not affected. Note that the latest version uploaded to CPAN is 0.10. Later versions are available in the git repository.
Title OIDC::Lite versions through 0.12.1 for Perl allow ID Token signature verification bypass via a token-controlled algorithm allowlist in verify
Weaknesses CWE-347
References

Subscriptions

Ritou Oidc::lite
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-07-27T17:33:19.516Z

Reserved: 2026-06-23T18:53:35.254Z

Link: CVE-2026-13089

cve-icon Vulnrichment

Updated: 2026-07-22T22:21:41.686Z

cve-icon NVD

Status : Deferred

Published: 2026-07-22T21:17:12.743

Modified: 2026-07-27T18:16:51.057

Link: CVE-2026-13089

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T23:15:04Z

Weaknesses
  • CWE-347

    Improper Verification of Cryptographic Signature