264 lines
15 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
} |