CVE-2026-9537
Full vulnerability record from the local CVENow database.
Description
Mojo::JWT versions before 1.02 for Perl verify HMAC signatures with a non-constant-time string comparison. The decode() method compares the supplied signature to the recomputed HMAC with Perl's eq operator, which stops at the first differing byte, so the comparison time varies with the number of matching leading bytes. A caller that decodes attacker supplied tokens leaks the expected signature through this timing variation, which can be aggregated over many requests to recover the signature and forge a token.
Severity
MEDIUM
CVSS score
5.3
(v3.1)
Vulnerability status
Deferred
Source identifier
9b29abf9-4ab0-4765-b253-1875cd9b441e
Published
2026-07-17 16:17:20.417000
Last modified
2026-10-24 20:10:00.137000
View original CVE JSON
{
"id": "CVE-2026-9537",
"sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"published": "2026-07-17T16:17:20.417",
"lastModified": "2026-10-24T20:10:00.137",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Mojo::JWT versions before 1.02 for Perl verify HMAC signatures with a non-constant-time string comparison.\n\nThe decode() method compares the supplied signature to the recomputed HMAC with Perl's eq operator, which stops at the first differing byte, so the comparison time varies with the number of matching leading bytes.\n\nA caller that decodes attacker supplied tokens leaks the expected signature through this timing variation, which can be aggregated over many requests to recover the signature and forge a token."
},
{
"lang": "es",
"value": "Las versiones de Mojo::JWT anteriores a la 1.02 para Perl verifican las firmas HMAC con una comparación de cadenas de tiempo no constante.\n\nEl método decode() compara la firma proporcionada con el HMAC recalculado utilizando el operador eq de Perl, que se detiene en el primer byte diferente, por lo que el tiempo de comparación varía con el número de bytes iniciales coincidentes.\n\nUn llamador que decodifica tokens proporcionados por el atacante filtra la firma esperada a través de esta variación de tiempo, la cual puede agregarse a lo largo de muchas solicitudes para recuperar la firma y falsificar un token."
}
],
"affected": [
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"affectedData": [
{
"vendor": "JBERGER",
"product": "Mojo::JWT",
"defaultStatus": "unaffected",
"collectionURL": "https://cpan.org/modules",
"packageName": "Mojo-JWT",
"programFiles": [
"lib/Mojo/JWT.pm"
],
"programRoutines": [
{
"name": "Mojo::JWT::decode"
}
],
"repo": "http://github.com/jberger/Mojo-JWT",
"versions": [
{
"version": "0",
"lessThan": "1.02",
"versionType": "custom",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 3.9,
"impactScore": 1.4
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-20T19:37:00.356255Z",
"id": "CVE-2026-9537",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-208"
}
]
}
],
"references": [
{
"url": "https://github.com/jberger/Mojo-JWT/commit/b8aefb846613e44b5b12bc170898ffd5b05094a2.patch",
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
},
{
"url": "http://www.openwall.com/lists/oss-security/2026/07/17/11",
"source": "af854a3a-2127-422b-91ae-364da2661108"
}
]
}