Files
vuln-cve/data/2026/99xxx/CVE-2026-99246.json
T

264 lines
15 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-99246",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-09-25T10:25:14.403Z",
"datePublished": "2026-11-03T11:18:25.838Z",
"dateUpdated": "2026-11-03T19:14:37.365Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-11-03T19:14:37.365Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: protect node reset trace dump with node lock\n\nThe tipc_node_reset_links trace event asks tipc_node_dump() to walk the\nnode's link entries. Unlike the other node events that request link data,\nthis event runs without the node lock.\n\nThis permits bearer teardown to free a link while the trace callback is\ndumping it:\n\n CPU 0 CPU 1\n trace_tipc_node_reset_links()\n tipc_node_dump()\n l = n->links[0].link\n tipc_node_write_lock()\n kfree(l)\n n->links[0].link = NULL\n tipc_node_write_unlock()\n tipc_link_dump(l)\n\ntipc_link_dump() then dereferences the stale pointer. KASAN reported:\n\n BUG: KASAN: slab-use-after-free in tipc_link_dump\n Read of size 4 by task poc/115\n Call Trace:\n tipc_link_dump+0x10cb/0x16b0\n tipc_node_dump+0x4bb/0x740\n trace_event_raw_event_tipc_node_class+0x258/0x360\n tipc_node_reset_links+0x14d/0x1a0\n tipc_rcv+0x13f5/0x3030\n tipc_udp_recv+0x4e3/0x670\n Allocated by task 0:\n tipc_link_create+0x1e1/0x1020\n tipc_node_check_dest+0x7d2/0x11a0\n tipc_disc_rcv+0xdbf/0x1430\n Freed by task 89:\n kfree+0x131/0x3c0\n tipc_node_link_down+0x267/0x4b0\n tipc_node_delete_links+0xec/0x160\n bearer_disable+0x107/0x260\n\nTake the node write lock around the trace event. This serializes the\ndump against tipc_node_link_down(delete=true), which frees the link\nunder the same write lock."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 8.1,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - A TIPC-over-UDP datagram (default port 6118) is received by tipc_udp_recv() and handed to tipc_rcv(); a non-sequential broadcast skb takes tipc_node_bc_rcv() and a LINK_PROTOCOL skb takes tipc_node_bc_sync_rcv(), both calling tipc_node_reset_links() on TIPC_LINK_DOWN_EVT. CONFIG_TIPC_MEDIA_UDP defaults to y, so the trigger is a routable IP packet.\nAC:H - The UAF is the lockless trace_tipc_node_reset_links() dump in tipc_node_reset_links() racing kfree of n->links[].link in tipc_node_link_down(delete=true). That delete=true path is only tipc_node_delete_links() from bearer_disable()/tipc_reset_bearer(), which a remote UDP peer cannot invoke, and the dump runs only if the tipc_node_reset_links tracepoint is already enabled.\nPR:N - tipc_disc_rcv() accepts LINK_CONFIG discovery from any UDP source whose net_id matches (default 4711) with no credentials; TIPC_CRYPTO keys are optional. After tipc_node_check_dest() creates the node/link, that same unauthenticated peer’s broadcast or LINK_PROTOCOL packets reach tipc_node_reset_links().\nUI:N - Once a TIPC UDP bearer is already enabled, tipc_udp_recv() processes the attacker’s packets in softirq; no victim mount, click, or other interactive step is required at exploit time.\nS:U - The use-after-free is of a host-kernel tipc_link object inside tipc_node_dump()/tipc_link_dump(); impact stays in the same kernel security authority and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - KASAN reported a 4-byte read of a freed tipc_link in tipc_link_dump() from the stale n->links[0].link loaded by tipc_node_dump(); reclaiming that kmalloc object lets the dump read leftover or attacker-sprayed heap, including skb_peek() of transmq/deferdq heads.\nI:H - After bearer_disable() kfree()s the tipc_link, the stale pointer in tipc_node_dump() is a slab UAF: spraying a replacement object lets tipc_link_dump() follow attacker-chosen list pointers via skb_peek(), which is an exploitable kernel write/control-flow primitive.\nA:H - tipc_link_dump() dereference of the freed tipc_link oopses the kernel, matching the reported KASAN slab-use-after-free in the tipc_rcv() path; each overlapping packet and bearer teardown can repeat the crash."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"net/tipc/node.c"
],
"versions": [
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "c8b72ca0918e95f708f67c8b3e69b05290f2b6d2",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "6e492cb98ca69cc1145175e23e22e3b84da7f26d",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "7bb6a35bd6d69019539d8782fb590fd2aa8a3236",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "6abd93d01b0f495f29201925a5ee8e6a583c4044",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "a6101d62ccfa153db8c218ce59362b8e0316fd4f",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "b8b7d28dc2b7472ffd1eff3954c38f1976b21a7b",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "fa8c78c0e49aa11fae116fd841e41aa8f2d68751",
"status": "affected",
"versionType": "git"
},
{
"version": "eb18a510b5cd4daeb9736ad8db57a9fc49db185b",
"lessThan": "dddf197f29ba5e47a476dde82bf542ca2e0d5e5e",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"net/tipc/node.c"
],
"versions": [
{
"version": "5.0",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.0",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.10.273",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.224",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.191",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.6.161",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.115",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.59",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.2.13",
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "5.10.273"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "5.15.224"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "6.1.191"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "6.6.161"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "6.12.115"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "6.18.59"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "7.2.13"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.0",
"versionEndExcluding": "7.3"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/c8b72ca0918e95f708f67c8b3e69b05290f2b6d2"
},
{
"url": "https://git.kernel.org/stable/c/6e492cb98ca69cc1145175e23e22e3b84da7f26d"
},
{
"url": "https://git.kernel.org/stable/c/7bb6a35bd6d69019539d8782fb590fd2aa8a3236"
},
{
"url": "https://git.kernel.org/stable/c/6abd93d01b0f495f29201925a5ee8e6a583c4044"
},
{
"url": "https://git.kernel.org/stable/c/a6101d62ccfa153db8c218ce59362b8e0316fd4f"
},
{
"url": "https://git.kernel.org/stable/c/b8b7d28dc2b7472ffd1eff3954c38f1976b21a7b"
},
{
"url": "https://git.kernel.org/stable/c/fa8c78c0e49aa11fae116fd841e41aa8f2d68751"
},
{
"url": "https://git.kernel.org/stable/c/dddf197f29ba5e47a476dde82bf542ca2e0d5e5e"
}
],
"title": "tipc: protect node reset trace dump with node lock",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}