Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify RSA-SHA1 Net::OAuth provider
-
DeliveryCraft request naming HMAC-SHA1
-
ExploitSign with placeholder consumer_secret
-
ExecutionSubmit for target consumer/token
-
Persistverify() validates forged signature
-
ImpactImpersonate consumer, access protected resource
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires a Service Provider that uses Net::OAuth (before 0.33) to verify() incoming OAuth 1.0 messages without pinning the signature method - which is every pre-0.33 deployment, since no pinning mechanism existed. The fully-guessable, highest-impact path additionally requires the provider to be deployed on RSA-SHA1: because RFC 5849 RSA-SHA1 does not use consumer_secret/token_secret, those fields are non-secret placeholders that the forged HMAC signature is checked against. Symmetric deployments are still downgradable (HMAC-SHA256 → HMAC-SHA1 → PLAINTEXT) but the attacker must still not know the real shared secret, making that path weaker/harder. Limiting factors: no user interaction and no authentication are needed (PR:N/UI:N), but the trivial key-forgery hinges on the RSA-SHA1 (asymmetric) deployment mode; a symmetric-only provider that keeps its secrets confidential is far less exposed. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H = 9.8) reflects unauthenticated, remote, low-complexity forgery, and the CWE-347 root cause and vendor advisory corroborate a genuine authentication-bypass. However, the signals are mixed: EPSS is very low (0.11%, 2nd percentile), the CVE is not in CISA KEV, and no public PoC is referenced, indicating this is not yet mass-exploited. The most severe, fully-guessable case is conditional - it requires a provider deployed on RSA-SHA1 (or a symmetric-to-weaker downgrade), so real-world impact depends on deployment posture rather than being universal. I also differ from the input on availability: this is a forgery/impersonation flaw, so a C:H/I:H/A:N assessment is more defensible than A:H (see assessed vector). Net: a real and high-severity issue warranting prompt patching for any Net::OAuth Service Provider, but current exploitation pressure is low and the worst case is config-dependent, so it is a high - not emergency - priority absent RSA-SHA1 usage. |
| Exploit ScenarioDerived | An OAuth Service Provider runs Net::OAuth 0.32 configured for RSA-SHA1, holding only each Consumer's public key. An attacker crafts a protected-resource request with oauth_signature_method=HMAC-SHA1 and an HMAC signature computed over the non-secret placeholder consumer_secret, and submits it for any consumer key and token. verify() dispatches on the attacker-chosen method, validates the forged signature, and grants access - no credentials or user interaction required. No public PoC has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 26, 2026
Signature-verification bypass in the Net::OAuth Perl module before 0.33 lets a remote attacker forge valid OAuth requests for any consumer key and token by dictating which algorithm the Service Provider uses to check their signature. Because verify() resolves the signature-method class from the attacker-supplied signature_method parameter and offers no way to pin an expected method, a provider deployed on RSA-SHA1 (which holds only the consumer's public key) can be tricked into validating an HMAC-SHA1 signature against a placeholder/guessable consumer_secret. No public exploit has been identified at time of analysis and EPSS is low (0.11%), but the flaw is unauthenticated and network-reachable (CVSS 9.8).
RemediationAI
Upgrade to Vendor-released patch: Net::OAuth 0.33 (https://metacpan.org/release/RRWO/Net-OAuth-0.33/changes), which is a deliberate BREAKING change: verify() now croaks unless the verifying party explicitly states acceptable algorithms. After upgrading, you must set the allowed methods or verification will fail closed - pass allowed_signature_methods => [qw/RSA-SHA1/] (or the exact method your Consumers registered with) to every verified message, or set the process-wide default @Net::OAuth::ALLOWED_SIGNATURE_METHODS = qw/HMAC-SHA1/ when verification happens inside a framework/wrapper and you cannot reach each call site; a per-message list overrides the package default. If you cannot upgrade immediately, the compensating control is to enforce a single expected signature method upstream - reject any request whose oauth_signature_method differs from the one your deployment registered (e.g. drop non-RSA-SHA1 requests at a proxy/WAF for an RSA-SHA1 provider); trade-off is that legitimate multi-method Consumers break and this must be applied to every verification entry point. Patch commit: https://github.com/vurtdev/Net-OAuth/commit/c467adf45c8d77ac4b92ad78b3eebf949252ba7f.patch.
Affected ProductsAI
The affected product is the Net::OAuth Perl module (CPAN distribution Net-OAuth, maintainer RRWO/vurtdev) at all versions before 0.33; version 0.33 is the fixed release. The vulnerable code paths are in lib/Net/OAuth/Message.pm and lib/Net/OAuth.pm (verify()/_signature_method_class dispatch). Impact is on the Service Provider (verifying) side; Consumers that only sign are not affected. Vendor advisory: GitHub GHSA-c8rm-g5cm-4pf5 (https://github.com/vurtdev/Net-OAuth/security/advisories/GHSA-c8rm-g5cm-4pf5); tracked as EUVD-2026-62347 and VulDB 392992; reported by CPANSec via oss-security (https://seclists.org/oss-sec/2026/q3/516).
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
Net::OAuth implements the OAuth 1.0/1.0a signing and verification primitives (RFC 5849) for Perl Service Providers and Consumers. The root cause is CWE-347 (Improper Verification of Cryptographic Signature): on the verifying side, oauth_signature_method is untrusted network input, yet Net::OAuth::Message dispatched on it to pick the verification class and key-derivation path. RFC 5849 §3.4.2/§3.4.3 define distinct key material for HMAC-SHA1/HMAC-SHA256 (derived from consumer_secret and token_secret) versus RSA-SHA1 (the consumer's RSA public key). An RSA-SHA1 provider never uses consumer_secret, so that field is populated with a non-secret placeholder; letting the sender select HMAC-SHA1 moves verification onto the symmetric path and checks the forged signature against that guessable placeholder. The same mechanism enables weaker symmetric downgrades (HMAC-SHA256 → HMAC-SHA1 → PLAINTEXT). This is effectively an algorithm-confusion / key-confusion attack, structurally identical to the JWT alg-confusion class noted in the input tags.
Know when Jwt Attack gets its next vulnerability
- 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:H
Unauthenticated remote forgery bypasses signature checks (PR:N, C:H/I:H); AC:L as the highest-impact RSA-SHA1 case needs no special timing; A:N because impersonation does not affect availability.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
Net::OAuth versions before 0.33 for Perl allow the sender to choose the signature algorithm in verify.
verify resolves the signature method class from the signature_method parameter of the incoming message. signature_method is required on every request, so the algorithm used to check a signature is chosen by whoever sent it, and nothing lets the verifying party pin the method instead. When a message names HMAC-SHA1 or HMAC-SHA256, the key is derived from consumer_secret and token_secret rather than from the key the provider deployed.
A provider deployed on RSA-SHA1 holds only the consumer public key, and RFC 5849 does not use consumer_secret for that method, so the required parameter is filled with a placeholder. A client that names HMAC-SHA1 instead has its signature checked against that placeholder, so a guessable one is enough to forge requests for any consumer key and token.
Executive ViewAI
Net::OAuth Perl module versions before 0.33 contain a critical authentication bypass that allows unauthenticated attackers to forge OAuth authorization requests and access protected APIs and user accounts. Organizations deploying this library for OAuth signature validation require immediate patching to prevent account takeover and unauthorized data access. A vendor patch is available.
Apply vendor patch.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Jwt Attack
View allWhy is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update
Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke
Authentication bypass in WSO2 API Manager and related components (Universal Gateway, Traffic Manager, API Control Plane,
Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS
The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT
Authentication and authorization bypass in fast-jwt 6.2.0 through 6.2.4 (npm, NearForm) lets a remote, unauthenticated a
A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti
A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27
A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work
The Ruby SAML library is for implementing the client side of a SAML authorization. Rated critical severity (CVSS 9.8), t
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Critical| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
EUVD-2026-62347
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB