Description
Plack::Middleware::OAuth versions through 0.10 for Perl do not support the OAuth 2.0 state parameter.

RequestTokenV2 builds the provider authorization redirect without issuing a state value, and AccessTokenV2 exchanges the callback code and registers the resulting token into the session (register_session) without verifying that the callback corresponds to an authorization request this session initiated.

Any application that uses this middleware for OAuth 2.0 login is exposed to login cross-site request forgery: because the callback is not bound to the session that began the flow, an attacker who starts an authorization with their own provider account can deliver the resulting callback to a victim, causing the victim's session to complete the attacker's authorization and associating the attacker's provider identity and access token with that session. Where the application persists this as an account link, the attacker may retain access to the victim's account through their own provider credentials.
Published: 2026-07-04
Score: 8.1 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Plack::Middleware::OAuth versions up through 0.10 omit support for the OAuth 2.0 state parameter, and the RequestTokenV2 routine builds the provider authorization redirect AccessTokenV2 routine accepts the callback code and registers the resulting token into the session (register_session) without verifying that the callback originates from an authorization request that this session initiated. This flaw, which is a Cross‑Site Request Forgery (CWE‑352) weakness, allows an attacker to perform login cross‑site request forgery. If an application uses this middleware for OAuth 2.0 authentication, the attacker can start an authorization flow with a malicious provider account and deliver the callback to a victim’s browser, causing the victim’s session to complete the attacker’s authorization and associate the victim’s session with the attacker’s provider identity and access token. When the application persists that link, the attacker may retain long‑term access to the victim’s account using their own provider credentials.

Affected Systems

The vulnerability impacts the Perl module Plack::Middleware::OAuth, developed by CORNELIUS, specifically versions through 0.10. Perl applications that incorporate this module for OAuth 2.0 authentication are susceptible if they use those versions.

Risk and Exploitability

The EPSS score is < 1%, indicating a very low exploitation probability. The CVSS score of 8.1 reflects a high risk to confidentiality, integrity, and availability. The flaw permits any authenticated OAuth flow without state validation, resulting in a high‑impact login cross‑site request forgery. The flaw is not listed in the CISA KEV catalog and there is no known public exploitation. The likely attack vector is an attacker initiating an OAuth authorization with a malicious provider account and then delivering the callback to a victim’s browser, thereby hijacking the victim’s session. While the vulnerability does not allow remote code execution, it enables an attacker to gain persistent access to a user’s linked account through the victim’s session.

Generated by OpenCVE AI on July 26, 2026 at 21:46 UTC.

Remediation

Vendor Workaround

Use the latest version from the git repository, with the patch applied.


OpenCVE Recommended Actions

  • Use the latest version from the git repository, which includes the patch for state parameter handling.
  • If an upgrade is not immediately possible, apply the patch available at https://security.metacpan.org/patches/P/Plack-Middleware‑OAuth/0.10/CVE-2026-12740‑r1.patch to your installation.
  • Verify that OAuth callbacks include a state value that matches the initiating session and reject any callback that does not match to prevent session hijacking.

Generated by OpenCVE AI on July 26, 2026 at 21:46 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 06 Jul 2026 23:15:00 +0000

Type Values Removed Values Added
First Time appeared Cornelius
Cornelius plack::middleware::oauth
Vendors & Products Cornelius
Cornelius plack::middleware::oauth

Mon, 06 Jul 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 04 Jul 2026 18:15:00 +0000

Type Values Removed Values Added
Description Plack::Middleware::OAuth versions through 0.10 for Perl do not support the OAuth 2.0 state parameter. RequestTokenV2 builds the provider authorization redirect without issuing a state value, and AccessTokenV2 exchanges the callback code and registers the resulting token into the session (register_session) without verifying that the callback corresponds to an authorization request this session initiated. Any application that uses this middleware for OAuth 2.0 login is exposed to login cross-site request forgery: because the callback is not bound to the session that began the flow, an attacker who starts an authorization with their own provider account can deliver the resulting callback to a victim, causing the victim's session to complete the attacker's authorization and associating the attacker's provider identity and access token with that session. Where the application persists this as an account link, the attacker may retain access to the victim's account through their own provider credentials.
Title Plack::Middleware::OAuth versions through 0.10 for Perl do not support the OAuth 2.0 state parameter
Weaknesses CWE-352
References

Subscriptions

Cornelius Plack::middleware::oauth
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-07-06T13:54:14.245Z

Reserved: 2026-06-19T16:43:08.971Z

Link: CVE-2026-12740

cve-icon Vulnrichment

Updated: 2026-07-04T19:29:05.133Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-26T22:00:05Z

Weaknesses
  • CWE-352

    Cross-Site Request Forgery (CSRF)