Files
vuln-cve/data/2026/63xxx/CVE-2026-63874.json
T

159 lines
9.0 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-63874",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-07-19T07:54:57.017Z",
"datePublished": "2026-07-19T14:18:41.907Z",
"dateUpdated": "2026-08-05T12:36:47.817Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T12:36:47.817Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: mctp: usb: fix race between urb completion and rx_retry cancellation\n\nIt's possible that sequencing between setting ->stopped and cancelling\nthe rx_retry work (in ndo_stop) could leave us with an urb queued:\n\n T1: ndo_stop T2: rx_retry_work\n ------------ ----------------\n LD: ->stopped => false\n ST: ->stopped <= true\n usb_kill_urb()\n mctp_usb_rx_queue()\n usb_submit_urb()\n cancel_delayed_work_sync()\n\nThat urb completion can then re-schedule rx_retry_work.\n\nStrenghen the sequencing between the stop (preventing another requeue)\nand the cancel by updating both atomically under a new rx lock. After\nsetting ->rx_stopped, and cancelling pending work, we know that the\nrequeue cannot occur, so all that's left is killing any pending urb."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 7.8,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The race is hit in `mctp_usb_stop()` (`ndo_stop`) during netdev teardown, which is reachable via local RTNETLINK (`ip link set down`) or USB disconnect; it is not reachable from remote network input. Per the uncertainty rule, Local is chosen over Physical.\nAC:L - An attacker can control both sides of the race by inducing RX ENOMEM to schedule `rx_retry_work` (memory pressure) and concurrently triggering netdev stop/disconnect, retrying timing until the window between `stopped=true` and `cancel_delayed_work_sync()` is won.\nPR:L - Triggering `ndo_stop` through RTNETLINK requires `CAP_NET_ADMIN`, which is obtainable in an unprivileged user namespace; a physical USB disconnect path needs no software privileges, but PR:L is the higher-severity choice when uncertain.\nUI:N - Exploitation does not require any victim user action beyond the attacker’s own interface teardown/disconnect and memory-pressure timing.\nS:U - Impact is kernel memory corruption/UAF within the same kernel security boundary, not a cross-boundary escape such as guest-to-host or sandbox breakout.\nC:H - Winning the race leaves RX URBs/completions running after `usb_free_urb()` and `free_netdev()`, producing a use-after-free on `net_device`, `urb`, and `sk_buff` objects that can be turned into arbitrary kernel memory disclosure.\nI:H - The post-teardown UAF on heap-allocated driver/netdev/USB objects provides exploitable write primitives (re-submitted URBs, corrupted completion handlers) suitable for control-flow hijack and privilege escalation.\nA:H - The bug reliably causes kernel crashes (oops/panic) when freed URBs/netdevs are touched by completion handlers or rescheduled `rx_retry_work`, even before full exploitation."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/net/mctp/mctp-usb.c"
],
"versions": [
{
"version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
"lessThan": "9c46f3ee1837f6881cb99a52ffecb2760f11dc73",
"status": "affected",
"versionType": "git"
},
{
"version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
"lessThan": "d90feaa3f74bea8dafb6494631a194c70e547d94",
"status": "affected",
"versionType": "git"
},
{
"version": "0791c0327a6e4e7691d6fc5ad334c215de04dcc9",
"lessThan": "54665dce982689e2fd99b32e9a0dcc204fda8a51",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/net/mctp/mctp-usb.c"
],
"versions": [
{
"version": "6.15",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.15",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.36",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.0.13",
"lessThanOrEqual": "7.0.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.1",
"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": "6.15",
"versionEndExcluding": "6.18.36"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.15",
"versionEndExcluding": "7.0.13"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.15",
"versionEndExcluding": "7.1"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/9c46f3ee1837f6881cb99a52ffecb2760f11dc73"
},
{
"url": "https://git.kernel.org/stable/c/d90feaa3f74bea8dafb6494631a194c70e547d94"
},
{
"url": "https://git.kernel.org/stable/c/54665dce982689e2fd99b32e9a0dcc204fda8a51"
}
],
"title": "net: mctp: usb: fix race between urb completion and rx_retry cancellation",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}