Skip to main content

Punk::OAuth2::Server EUVDEUVD-2026-64293

| CVE-2026-75866 CRITICAL
Missing Authorization (CWE-862)
2026-08-22 CPANSec GHSA-cjjx-w599-qf62
9.1
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Discover registered client_id on target server
  2. Delivery
    Send token request selecting client_credentials arm
  3. Exploit
    Name scope outside client registration
  4. Execution
    Server mints signed at+jwt with arbitrary scope
  5. Persist
    Present token to Punk::OAuth2::Checker resource server
  6. Impact
    Access protected resources beyond authorization

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target run Punk::OAuth2::Server (through 0.03) as its authorization server with a resource server trusting its at+jwt tokens (e.g., via Punk::OAuth2::Checker). The attacker must be able to reach the token endpoint and possess a valid registered client_id; for confidential clients this means a registered client secret, but for clients registered WITHOUT a secret the client_id alone suffices, so anyone who knows that identifier qualifies. The attacker then simply names a grant_type or scope beyond the client's registration - the concrete precondition is that the client-supplied grant_type/scope in the token or authorize request is not compared against the stored registration. The main limiting factors are the small deployment base of this module, the need for a valid client_id on the specific server, and the fact that an operator who has made the consent hook mandatory and scope-validating is not exploitable.

Impact

The signals are mixed but lean toward a genuine authorization-integrity priority rather than a mass-exploitation emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H) rates it 9.1 Critical, and the flaw is deterministic and trivial to trigger - no memory corruption, race, or special timing. However, EPSS is only 0.20% (10th percentile), there is no CISA KEV listing, and no public exploit code was identified, so widespread opportunistic exploitation is not indicated. The PR:N rating is defensible only for public (secretless) clients that authenticate on client_id alone, which is not a secret; confidential clients still need valid registration, so real-world exploitation presupposes access to a registered client_id on a deployment actually using this module. The most important limiter is deployment footprint: Punk::OAuth2 is an obscure CPAN package, so the population of exposed targets is small. Any operator who has embedded this library in a production authorization server should treat it as urgent regardless of size, because a signed over-scoped token silently defeats the resource server's access controls; the low EPSS reflects rarity of the product, not safety of the flaw.

Exploit ScenarioDerived

An attacker who knows the client_id of a public (secretless) client registered on a Punk::OAuth2::Server deployment sends a token request to the client_credentials arm naming a high-privilege scope the client was never granted; the server signs an at+jwt token carrying that scope, and the attacker presents it to a Punk::OAuth2::Checker resource server, which honours the scope and grants the corresponding access. No public exploit code is currently identified, but the network-reachable, low-complexity vector (AV:N/AC:L) makes crafting one straightforward.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 25, 2026

Scope and grant-type escalation in the Punk::OAuth2::Server Perl module (through version 0.03) lets a registered OAuth2 client obtain correctly signed at+jwt access tokens carrying scopes and grant types it was never registered for. Because the token endpoint dispatches on the request-body grant_type and passes the requested scope straight to the token minter without checking it against the client's registration, and because authorize copies the query scope into the authorization-code record unchecked, any client can mint over-privileged tokens that a Punk::OAuth2::Checker resource server will accept and honour. There is no public exploit identified at time of analysis and EPSS risk is low (0.20%), but the flaw is authorization-model-breaking and remotely reachable.

RemediationAI

Vendor-released patch: upgrade the Punk-OAuth2 CPAN distribution to version 0.04 or later (see the changes at https://metacpan.org/release/LNATION/Punk-OAuth2-0.04/changes), which is the primary and complete fix. If you cannot upgrade immediately, apply compensating controls at the issuance side: enforce the client's registered scopes and grant_types before minting by making the optional consent hook mandatory and having it reject any requested scope not present in the client registration (trade-off: adds a required hook to every flow and may break clients that currently rely on implicit broad scopes); require client secrets for every registered client and remove secretless/public client registrations so client_id alone cannot authenticate (trade-off: breaks public/native client flows); and at the resource server, constrain Punk::OAuth2::Checker or an upstream gateway to accept only an allow-list of expected scopes per audience so an over-scoped token is rejected downstream (trade-off: must be maintained per resource). Also review issued tokens and rotate/revoke any that may already carry unauthorized scopes. Advisory references: https://seclists.org/oss-sec/2026/q3/549 and http://www.openwall.com/lists/oss-security/2026/08/22/6.

Affected ProductsAI

Punk::OAuth2::Server (the Punk-OAuth2 CPAN distribution by author LNATION) for Perl, all versions through 0.03, including the affected Punk::OAuth2::Server::Store issuance logic; resource servers using the companion Punk::OAuth2::Checker are the parties that accept the over-scoped tokens. The vulnerable source is visible at https://metacpan.org/release/LNATION/Punk-OAuth2-0.03/view/lib/Punk/OAuth2/Server/Store.pm and the fix is in release 0.04 (https://metacpan.org/release/LNATION/Punk-OAuth2-0.04/changes). No CPE string was provided in the input. Tracking identifiers include CVE-2026-75866, ENISA EUVD-2026-64293, and VulDB 394332 (https://vuldb.com/vuln/394332); the coordination advisory is on oss-security (https://seclists.org/oss-sec/2026/q3/549).

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability lies in an OAuth2 authorization server implementation for Perl (Punk::OAuth2::Server / ::Store / ::Checker), distributed via CPAN. The root cause is CWE-862 (Missing Authorization): Punk::OAuth2::Server::Store persists per-client scopes and grant_types at registration, but no code path on the issuance side reads them back for enforcement. The token routine branches on the grant_type supplied in the request body rather than on what the client registered, so a client registered only for authorization_code can invoke the client_credentials arm; that arm forwards the client-supplied scope directly into the JWT minter, which signs it into an at+jwt token. Separately, authorize writes the raw query scope into the authorization-code record with no comparison to the registration, leaving an optional consent hook as the only gate. Notably redirect_uris on the same client row IS read and enforced, showing the enforcement gap is specific to scope/grant_type. The relevant standard behaviour that is violated is RFC 6749 §3.3 (scope must not exceed what is authorized) and the token-response handling in §5.2.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (CPANSec) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 9.1 CRITICAL

Network token endpoint, deterministic trigger (AC:L); PR:N because secretless public clients authenticate on non-secret client_id alone; over-scoped tokens break confidentiality and integrity of protected resources (C:H/I:H), no availability impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
CVSS changed
Aug 25, 2026 - 20:22 NVD
9.1 (CRITICAL)
CVE Published
Aug 22, 2026 - 13:52 cve.org
UNKNOWN (no severity yet)
CVE Published
Aug 22, 2026 - 13:52 cve.org
CRITICAL 9.1

DescriptionCVE.org

Punk::OAuth2::Server versions through 0.03 for Perl issue access tokens outside a client's registered scopes and grant types because no authorization path reads them.

Punk::OAuth2::Server::Store registers scopes and grant_types per client and documents both as client registration. token dispatches on the grant_type in the request body, so a client registered for authorization_code alone can ask for client_credentials, and that arm passes the requested scope straight to the minter, which signs it into the at+jwt access token. authorize copies the query scope into the authorization code record without comparing it against the registration, leaving the optional consent hook as the only check between an arbitrary scope and the issued code. redirect_uris on the same client row is read and enforced.

A registered client can obtain a correctly signed token carrying any scope it names, and a resource server running Punk::OAuth2::Checker accepts that token and honours the scope. A client registered without a secret authenticates on its client_id alone, so anyone who knows that identifier can request one.

Executive ViewAI

Why It Matters

Punk::OAuth2::Server Perl module (through version 0.03) contains a critical authorization flaw allowing any registered OAuth2 client to mint access tokens with elevated scopes and grant types beyond their registered permissions. This breaks the core authorization model of OAuth2 and remotely reachable, potentially exposing protected resources to unauthorized access. Organizations deploying this module face immediate risk of privilege escalation attacks if clients are compromised or malicious.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Implement wrapper validation at the token endpoint to enforce scope checking against client registration records; add scope validation to the authorize endpoint to prevent scope elevation in authorization code generation; require resource servers to validate token scopes and reject over-privileged requests; establish monitoring and alerting for tokens granted with unexpected or elevated scopes; and restrict new OAuth2 client provisioning until remediation is complete.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Rare
obscure single-author CPAN OAuth2 module, negligible enterprise footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Very High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy