ubuntu-cve-2026-72889
Vulnerability from osv_ubuntu
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.
{
"affected": [
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.28-2"
}
]
},
"package": {
"ecosystem": "Ubuntu:16.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.28-2?arch=source\u0026distro=xenial"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.28-2"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.28-2"
}
]
},
"package": {
"ecosystem": "Ubuntu:18.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.28-2?arch=source\u0026distro=bionic"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.28-2"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.28-3"
}
]
},
"package": {
"ecosystem": "Ubuntu:20.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.28-3?arch=source\u0026distro=focal"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.28-3"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.28-3"
}
]
},
"package": {
"ecosystem": "Ubuntu:22.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.28-3?arch=source\u0026distro=jammy"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.28-3"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.28-4"
}
]
},
"package": {
"ecosystem": "Ubuntu:24.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.28-4?arch=source\u0026distro=noble"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.28-4"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "libnet-oauth-perl",
"binary_version": "0.31-1"
}
]
},
"package": {
"ecosystem": "Ubuntu:26.04:LTS",
"name": "libnet-oauth-perl",
"purl": "pkg:deb/ubuntu/libnet-oauth-perl@0.31-1?arch=source\u0026distro=resolute"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.31-1"
]
}
],
"aliases": [],
"details": "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.",
"id": "UBUNTU-CVE-2026-72889",
"modified": "2026-08-20T00:00:00Z",
"published": "2026-08-20T00:00:00Z",
"references": [
{
"type": "REPORT",
"url": "https://ubuntu.com/security/CVE-2026-72889"
},
{
"type": "REPORT",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-72889"
},
{
"type": "REPORT",
"url": "https://lists.security.metacpan.org/cve-announce/msg/42818761/"
},
{
"type": "REPORT",
"url": "https://github.com/vurtdev/Net-OAuth/security/advisories/GHSA-c8rm-g5cm-4pf5"
},
{
"type": "REPORT",
"url": "https://datatracker.ietf.org/doc/html/rfc5849#section-3.4.2"
},
{
"type": "REPORT",
"url": "https://datatracker.ietf.org/doc/html/rfc5849#section-3.4.3"
},
{
"type": "REPORT",
"url": "https://github.com/vurtdev/Net-OAuth/commit/c467adf45c8d77ac4b92ad78b3eebf949252ba7f.patch"
},
{
"type": "REPORT",
"url": "https://metacpan.org/release/RRWO/Net-OAuth-0.33/changes"
}
],
"related": [],
"schema_version": "1.7.0",
"severity": [
{
"score": "medium",
"type": "Ubuntu"
}
],
"upstream": [
"CVE-2026-72889"
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.