Hono: Unbounded dot-notation nesting in `parseBody()` can cause memory exhaustion
Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, when parseBody() expands dot-separated form field names into nested objects with dot-notation parsing enabled, it does not limit the nesting depth or the total number of intermediate objects created. Empty segments are preserved, so one deeply dotted field name can encode one nesting level per byte, while a large number of shallowly dotted fields can create the same amplification across a request. A request body within a normal size limit can therefore allocate an object graph far larger than the request after the body has already been accepted. An unauthenticated attacker who can reach an affected endpoint can send concurrent requests that exhaust the JavaScript heap, terminate the server process, and leave the service unavailable until restart. Dot-notation parsing is not enabled by default, and applications using the default behavior are not affected. This issue is fixed in version 4.13.5.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-84364
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 04:06 UTC · Revision 1
Source evidence
Hono: Unbounded dot-notation nesting in `parseBody()` can cause memory exhaustion
core-osv · Original sourcePublished 1 Sept 2026, 20:24 UTC
Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, when parseBody() expands dot-separated form field names into nested objects with dot-notation parsing enabled, it does not limit the nesting depth or the total number of intermediate objects created. Empty segments are preserved, so one deeply dotted field name can encode one nesting level per byte, while a large number of shallowly dotted fields can create the same amplification across a request. A request body within a normal size limit can therefore allocate an object graph far larger than the request after the body has already been accepted. An unauthenticated attacker who can reach an affected endpoint can send concurrent requests that exhaust the JavaScript heap, terminate the server process, and leave the service unavailable until restart. Dot-notation parsing is not enabled by default, and applications using the default behavior are not affected. This issue is fixed in version 4.13.5.
osv:CVE-2026-84364
Complete source record
{
"id": "5390afeb4fa5d237c004a521379aeb551a50889071bd35ecf7efc73f0d3f5a77",
"url": "https://osv.dev/vulnerability/CVE-2026-84364",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Hono: Unbounded dot-notation nesting in `parseBody()` can cause memory exhaustion",
"summary": "Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, when parseBody() expands dot-separated form field names into nested objects with dot-notation parsing enabled, it does not limit the nesting depth or the total number of intermediate objects created. Empty segments are preserved, so one deeply dotted field name can encode one nesting level per byte, while a large number of shallowly dotted fields can create the same amplification across a request. A request body within a normal size limit can therefore allocate an object graph far larger than the request after the body has already been accepted. An unauthenticated attacker who can reach an affected endpoint can send concurrent requests that exhaust the JavaScript heap, terminate the server process, and leave the service unavailable until restart. Dot-notation parsing is not enabled by default, and applications using the default behavior are not affected. This issue is fixed in version 4.13.5.",
"evidence": "osv:CVE-2026-84364",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-84364",
"aliases": [
"CVE-2026-84364",
"GHSA-g6gw-c38x-mqfc"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/honojs/hono",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "06880c4a2b04de9dd74217f26dd831209b9c01f1"
},
{
"fixed": "531e9c5a3ae058d10de33f643055bd4009a87178"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "4.13.5"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "531e9c5a3ae058d10de33f643055bd4009a87178"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "06880c4a2b04de9dd74217f26dd831209b9c01f1"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v4.13.5"
}
]
}
}
],
"versions": [
"v4.13.4",
"v4.13.1",
"v4.13.3",
"v4.13.2",
"v4.13.0",
"v4.12.34",
"v4.12.33",
"v4.12.32",
"v4.12.31",
"v4.12.30",
"v4.12.29",
"v4.12.28",
"v4.12.27",
"v4.12.26",
"v4.12.25",
"v4.12.24",
"v4.12.23",
"v4.12.22",
"v4.12.21",
"v4.12.20",
"v4.12.19",
"v4.12.18",
"v4.12.17",
"v4.12.16",
"v4.12.15",
"v4.12.14",
"v4.12.13",
"v4.12.12",
"v4.12.11",
"v4.12.10",
"v4.12.9",
"v4.12.8",
"v4.12.7",
"v4.12.6",
"v4.12.5",
"v4.12.4",
"v4.12.3",
"v4.12.2",
"v4.12.1",
"v4.12.0",
"v4.11.10",
"v4.11.9",
"v4.11.8",
"v4.11.7",
"v4.11.6",
"v4.11.5",
"v4.11.4",
"v4.11.3",
"v4.11.2",
"v4.11.1",
"v4.11.0",
"v4.10.8",
"v4.10.7",
"v4.10.6",
"v4.10.5",
"v4.10.4",
"v4.10.3",
"v4.10.2",
"v4.10.1",
"v4.10.0",
"v4.9.12",
"v4.9.11",
"v4.9.10",
"v4.9.9",
"v4.9.8",
"v4.9.7",
"v4.9.6",
"v4.9.5",
"v4.9.4",
"v4.9.3",
"v4.9.2",
"v4.9.1",
"v4.9.0",
"v4.8.12",
"v4.8.11",
"v4.8.10",
"v4.8.9",
"v4.8.8",
"v4.8.7",
"v4.8.6",
"v4.8.5",
"v4.8.4",
"v4.8.3",
"v4.8.2",
"v4.8.1",
"v4.8.0",
"v4.7.11",
"v4.7.10",
"v4.7.9",
"v4.7.8",
"v4.7.7",
"v4.7.6",
"v4.7.5",
"v4.7.4",
"v4.7.3",
"v4.7.2",
"v4.7.1",
"v4.7.0",
"v4.6.20",
"v4.6.19",
"v4.6.18",
"v4.6.17",
"v4.6.16",
"v4.6.15",
"v4.6.14",
"v4.6.13",
"v4.6.12",
"v4.6.11",
"v4.6.10",
"v4.6.9",
"v4.6.8",
"v4.6.7",
"v4.6.6",
"v4.6.5",
"v4.6.4",
"v4.6.3",
"v4.6.2",
"v4.6.1",
"v4.6.0",
"v4.5.11",
"v4.5.10",
"v4.5.9",
"v4.5.8",
"v4.5.7",
"v4.5.6",
"v4.5.5",
"v4.5.4",
"v4.5.3",
"v4.5.2",
"v4.5.1",
"v4.5.0",
"v4.4.13",
"v4.4.12",
"v4.4.11",
"v4.4.10",
"v4.5.0-rc.2",
"v4.4.9",
"v4.4.8",
"v4.4.7",
"v4.4.6",
"v4.5.0-rc.1",
"v4.4.5",
"v4.4.4",
"v4.4.3",
"v4.4.2",
"v4.4.1",
"v4.4.0",
"v4.3.11",
"v4.3.10",
"v4.3.9",
"v4.3.8",
"v4.3.7",
"v4.3.6",
"v4.3.5",
"v4.3.4",
"v4.3.3",
"v4.3.2",
"v4.3.1",
"v4.3.0",
"v4.2.9",
"v4.2.8",
"v4.2.7",
"v4.2.6",
"v4.2.5",
"v4.2.4",
"v4.2.3",
"v4.2.2",
"v4.2.1",
"v4.2.0",
"v4.1.7",
"v4.1.6",
"v4.1.5",
"v4.1.4",
"v4.1.3",
"v4.1.2",
"v4.1.1",
"v4.1.0",
"v4.0.10",
"v4.1.0-rc.1",
"v4.0.9",
"v4.0.8",
"v4.0.7",
"v4.0.6",
"v4.0.5",
"v4.0.4",
"v4.0.3",
"v4.0.2",
"v4.0.1",
"v4.0.0",
"v3.12.12",
"v3.12.11",
"v3.12.10",
"v3.12.9",
"v4.0.0-rc.3",
"v3.12.8",
"v3.12.7",
"v4.0.0-rc.2",
"v3.12.6",
"v4.0.0-rc.1",
"v3.12.5",
"v3.12.4",
"v3.12.3",
"v3.12.2",
"v4.0.0-rc.0",
"v3.12.1",
"v3.12.0",
"v3.11.12",
"v3.11.11",
"v3.11.10",
"v3.11.9",
"v3.11.8",
"v3.11.7",
"v3.11.6",
"v3.11.5",
"v3.11.4",
"v3.11.3",
"v3.11.2",
"v3.11.1",
"v3.11.0",
"v3.10.5",
"v3.10.4",
"v3.10.3",
"v3.10.2",
"v3.10.1",
"v3.10.0",
"v3.9.2",
"v3.9.1",
"v3.9.0",
"v3.9.0-rc.1",
"v3.8.4",
"v3.8.3",
"v3.8.2",
"v3.8.1",
"v3.8.0",
"v3.8.0-rc.3",
"v3.7.6",
"v3.8.0-rc.2",
"v3.7.5",
"v3.8.0-rc.1",
"v3.7.4",
"v3.7.3",
"v3.7.2",
"v3.7.1",
"v3.7.0",
"v3.6.3",
"v3.6.2",
"v3.6.1",
"v3.6.0",
"v3.6.0-rc.2",
"v3.6.0-rc.1",
"v3.5.8",
"v3.5.7",
"v3.5.6",
"v3.5.5",
"v3.5.4",
"v3.5.3",
"v3.5.2",
"v3.5.1",
"v3.5.0",
"vv3.5.0-rc.1",
"v3.4.3",
"v3.4.2",
"v3.4.1",
"v3.4.0",
"v3.3.4",
"v3.3.3",
"v3.3.2",
"v3.3.1",
"v3.3.0",
"v3.3.0-rc.1",
"v3.2.7",
"v3.2.6",
"v3.2.5",
"v3.2.4",
"v3.2.3",
"v3.2.2",
"v3.2.1",
"v3.2.0",
"v3.2.0-rc.3",
"v3.2.0-rc.1",
"v3.1.8",
"v3.1.7",
"v3.1.6",
"v3.1.5",
"v3.1.4",
"v3.1.3",
"v3.1.2",
"v3.1.1",
"v3.1.0",
"v3.0.5",
"v3.0.4",
"v3.0.3",
"v3.0.2",
"v3.0.1",
"v3.0.0",
"v3.0.0-rc.16",
"v3.0.0-rc.15",
"v2.7.8",
"v3.0.0-rc.14",
"v3.0.0-rc.13",
"v2.7.7",
"v2.7.6",
"v3.0.0-rc.9",
"v3.0.0-rc.10",
"v2.7.5",
"v2.7.4",
"v2.7.3",
"v3.0.0-rc.5",
"v2.7.2",
"v3.0.0-rc.4",
"v2.7.1",
"v2.7.0",
"v2.6.2",
"v2.6.1",
"v2.6.0",
"v2.5.10",
"v2.5.9",
"v2.5.8",
"v2.5.7",
"v2.5.6",
"v2.5.5",
"v2.5.4",
"v2.5.3",
"v2.5.2",
"v2.5.1",
"v2.5.0",
"v2.4.1",
"v2.4.0",
"v2.3.2",
"v2.3.1",
"v2.3.0",
"v2.2.5",
"v2.2.4",
"v2.2.3",
"v2.2.2",
"v2.2.1",
"v2.2.0",
"v2.1.4",
"v2.1.3",
"v2.1.2",
"v2.1.1",
"v2.1.0",
"v2.0.9",
"v2.0.8",
"v2.0.7",
"v2.0.6",
"v2.0.5",
"v2.0.4",
"v2.0.3",
"v2.0.2",
"v2.0.1",
"v2.0.0",
"v1.6.5-0",
"v1.6.4",
"v1.6.3",
"v1.6.2",
"v1.6.1",
"v1.6.0",
"v1.6.0-0",
"v1.5.2",
"v1.5.1",
"v1.5.0",
"v1.4.7",
"v1.4.6",
"v1.4.5",
"v1.4.4",
"v1.4.3",
"v1.4.2",
"v1.4.1",
"v1.4.0",
"v1.3.6",
"v1.3.5",
"v1.3.4",
"v1.3.3",
"v1.3.2",
"v1.3.1",
"v1.3.0",
"v1.2.2",
"v1.2.1",
"v1.2.0",
"v1.1.1",
"v1.1.0",
"v1.0.0",
"v0.5.10",
"v0.5.9",
"v0.5.8",
"v0.5.7",
"v0.5.6",
"v0.5.5",
"v0.5.4",
"v0.5.3",
"v0.5.2",
"v0.5.1",
"v0.5.0",
"v0.4.2",
"v0.4.1",
"v0.4.0",
"v0.3.8",
"v0.3.7",
"v0.3.6",
"v0.3.5",
"v0.3.4",
"v0.3.3",
"v0.3.2",
"v0.3.1",
"v0.3.0",
"v0.2.4",
"v0.2.3",
"v0.2.2",
"v0.2.1",
"v0.2.0",
"v0.1.0",
"v0.0.16",
"v0.0.15",
"v0.0.14",
"v0.0.13",
"v0.0.11",
"v0.0.10",
"v0.0.9",
"v0.0.8",
"v0.0.7",
"v0.0.5",
"v0.0.4",
"v0.0.2",
"v0.0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-84364.json"
}
}
],
"modified": "2026-10-28T02:30:49.529544188Z",
"provider": "osv",
"references": [
"https://github.com/honojs/hono/releases/tag/v4.13.5",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84364.json",
"https://github.com/honojs/hono/security/advisories/GHSA-g6gw-c38x-mqfc",
"https://nvd.nist.gov/vuln/detail/CVE-2026-84364",
"https://github.com/honojs/hono/commit/531e9c5a3ae058d10de33f643055bd4009a87178"
],
"provider_metadata": {
"cwe_ids": [
"CWE-400"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84364.json"
}
},
"related_cves": [
{
"value": "CVE-2026-84364",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 517995,
"published_at": "2026-09-01T20:24:55.966+00:00"
}