Files
vuln-cve/data/2026/98xxx/CVE-2026-98419.json
T

264 lines
15 KiB
JSON

{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-98419",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-09-25T10:25:14.348Z",
"datePublished": "2026-10-14T13:27:49.005Z",
"dateUpdated": "2026-10-24T14:08:45.212Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-10-24T14:08:45.212Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrop_monitor: fix out-of-bounds write in reset_per_cpu_data()\n\nIn reset_per_cpu_data(), al is computed as:\n\n al = sizeof(struct net_dm_alert_msg);\n al += dm_hit_limit * sizeof(struct net_dm_drop_point);\n al += sizeof(struct nlattr);\n\n skb = genlmsg_new(al, GFP_KERNEL);\n ...\n nla = nla_reserve(skb, NLA_UNSPEC, sizeof(struct net_dm_alert_msg));\n ...\n msg = nla_data(nla);\n memset(msg, 0, al);\n\nBecause al includes sizeof(struct nlattr) (the 4-byte attribute header),\ngenlmsg_new() allocates al bytes of tailroom starting at nla.\nHowever, msg points to nla_data(nla), which is located\nsizeof(struct nlattr) bytes past nla. Calling memset(msg, 0, al)\ntherefore writes al bytes starting from msg, exceeding the allocated\nbuffer by sizeof(struct nlattr) (4 bytes) and corrupting\nskb_shared_info.\n\nFix this by letting al represent only the payload length, allocating\nthe skb with genlmsg_new(nla_total_size(al), GFP_KERNEL), and zeroing\nal bytes from msg."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 7,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - On affected 2.6.32-era 4-byte-cache builds, local NETLINK_GENERIC NET_DM_CMD_START enters net_dm_cmd_trace(); locally generated drops then run trace_drop_common()->sched_send_work()->send_dm_alert()->reset_per_cpu_data(). No routable protocol message supplies al.\nAC:H - The harmful layout requires non-default CONFIG_NET_DROP_MONITOR on H8/300 or early MicroBlaze, where SMP_CACHE_BYTES is 4 and skb_shared_info begins with dataref; that rare target condition is outside attacker control. The attacker can otherwise fill the alert and control both multicast listeners without racing.\nPR:L - In those affected kernels NET_DM_CMD_START has no GENL_ADMIN_PERM, while NETLINK_GENERIC enables NL_NONROOT_RECV, so an ordinary local user can start tracing and join the alert group without a user namespace or initial-namespace capability.\nUI:N - The local attacker sends START, creates the listener sockets, generates dropped skbs, and receives the alerts; no separate victim action is required.\nS:U - The corrupted skb_shared_info and subsequent use-after-free remain within the host kernel; this is ordinary kernel compromise rather than a VM, IOMMU, or sandbox boundary crossing.\nC:H - reset_per_cpu_data() zeroes dataref from 1 to 0. After a full alert makes netlink_trim() retain the head, a second listener causes skb_clone() to count two heads as one reference; receiving the first frees the head and the second can read attacker-groomed reclaimed heap.\nI:H - The queued clone survives after its head is freed; reclaiming and forging that allocation lets its later skb_release_data() decrement and process attacker-shaped skb_shared_info metadata, providing exploitable use-after-free memory corruption.\nA:H - The prematurely freed head remains referenced by the second queued clone, so skb_copy_datagram_iovec() or its later skb_release_data() can access reclaimed memory and crash the kernel."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"net/core/drop_monitor.c"
],
"versions": [
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "caf09c09e0f323015ab6777ed1bad5aa10688631",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "56b12f0cd476e4d90a0e2663a80102b388ebf78c",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "88d640efd655b10f9fa4e381caf777da1f17c2a6",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "d54a044136b129822715e8798899af540ec7a9e9",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "8a04047c6dbff2f49a561b1ff53b043f4807e855",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "530ae0a1458078c7a81fbffd9ff17d42129364d9",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "03b672eba4937ff18337049824a114012d57f202",
"status": "affected",
"versionType": "git"
},
{
"version": "683703a26e4677db437a1480682851e27c7a154f",
"lessThan": "439f392084f8f7f59ab9d47a9579185accefe1d8",
"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/core/drop_monitor.c"
],
"versions": [
{
"version": "2.6.31",
"status": "affected"
},
{
"version": "0",
"lessThan": "2.6.31",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.10.271",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.222",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.189",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.6.158",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.112",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.54",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.2.8",
"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": "2.6.31",
"versionEndExcluding": "5.10.271"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "5.15.222"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "6.1.189"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "6.6.158"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "6.12.112"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "6.18.54"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "7.2.8"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.31",
"versionEndExcluding": "7.3"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/caf09c09e0f323015ab6777ed1bad5aa10688631"
},
{
"url": "https://git.kernel.org/stable/c/56b12f0cd476e4d90a0e2663a80102b388ebf78c"
},
{
"url": "https://git.kernel.org/stable/c/88d640efd655b10f9fa4e381caf777da1f17c2a6"
},
{
"url": "https://git.kernel.org/stable/c/d54a044136b129822715e8798899af540ec7a9e9"
},
{
"url": "https://git.kernel.org/stable/c/8a04047c6dbff2f49a561b1ff53b043f4807e855"
},
{
"url": "https://git.kernel.org/stable/c/530ae0a1458078c7a81fbffd9ff17d42129364d9"
},
{
"url": "https://git.kernel.org/stable/c/03b672eba4937ff18337049824a114012d57f202"
},
{
"url": "https://git.kernel.org/stable/c/439f392084f8f7f59ab9d47a9579185accefe1d8"
}
],
"title": "drop_monitor: fix out-of-bounds write in reset_per_cpu_data()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}