Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDiscover registered client_id on target server
-
DeliverySend token request selecting client_credentials arm
-
ExploitName scope outside client registration
-
ExecutionServer mints signed at+jwt with arbitrary scope
-
PersistPresent token to Punk::OAuth2::Checker resource server
-
ImpactAccess 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
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.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-64293
GHSA-cjjx-w599-qf62
NVD
CVE.org
EPSS
VulDB
Exploit-DB