CVE-2026-72122 (GCVE-0-2026-72122)
Vulnerability from cvelistv5
Published
2026-08-15 05:53
Modified
2026-08-17 05:40
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
can: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure
bcm_sendmsg() reads bo->ifindex and checks bo->bound before taking
lock_sock(), while bcm_notify(), bcm_connect() and bcm_release() all
mutate both fields under that same lock. Because the lockless reads
and the locked writes are unordered with respect to each other, a
racing bcm_notify() (device unregister) or bcm_connect() (concurrent
bind on another thread sharing the socket) can make bcm_sendmsg()
observe an inconsistent combination, e.g. a stale bound=1 together
with the now-cleared ifindex=0, silently turning a socket bound to a
specific CAN interface into one that also matches "any" interface.
Keep the lockless bo->bound check purely as a fast-path reject, and
move the ifindex read (and a bo->bound re-check) into the locked
section, where every writer already serializes. This removes the
possibility of observing the two fields torn against each other,
rather than trying to fix it with more READ_ONCE()/WRITE_ONCE() pairs
on two independently updated fields. Annotate the now-purely-lockless
bo->bound accesses consistently across all its write sites.
Also fix bcm_rx_setup() silently returning success when the target
device disappears concurrently instead of reporting -ENODEV, so a
broken RX op is no longer left registered as if it had succeeded.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 Version: ffd980f976e7fd666c2e61bf8ab35107efd11828 |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"net/can/bcm.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "9e60c586faeaed80d55ab8ce2a4b8e56133bc395",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "ffa80a2af27c97453861a5128e537214a31cd18a",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "6bcc5cd247c2934373bc2a1cdf8bf12321169543",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "0f6f9f95294b4cbb26ba02209e893e3bd91237c3",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "b70f1a15533afeeec5d07f20bec3f3867ab1c7b6",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "35f0ac19efb1a3f6c5e12c00e475a9ec2d9c3a6d",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "b9c6ac6fb4e01b34575816066e5d3890a57b3c86",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
},
{
"lessThan": "d9b091d9d22fee81ec53fb55d2032951993ceadb",
"status": "affected",
"version": "ffd980f976e7fd666c2e61bf8ab35107efd11828",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"net/can/bcm.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "2.6.25"
},
{
"lessThan": "2.6.25",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.261",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.212",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.178",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.145",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.97",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.40",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.5",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.261",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.212",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.178",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.145",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.97",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.40",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.5",
"versionStartIncluding": "2.6.25",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "2.6.25",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncan: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure\n\nbcm_sendmsg() reads bo-\u003eifindex and checks bo-\u003ebound before taking\nlock_sock(), while bcm_notify(), bcm_connect() and bcm_release() all\nmutate both fields under that same lock. Because the lockless reads\nand the locked writes are unordered with respect to each other, a\nracing bcm_notify() (device unregister) or bcm_connect() (concurrent\nbind on another thread sharing the socket) can make bcm_sendmsg()\nobserve an inconsistent combination, e.g. a stale bound=1 together\nwith the now-cleared ifindex=0, silently turning a socket bound to a\nspecific CAN interface into one that also matches \"any\" interface.\n\nKeep the lockless bo-\u003ebound check purely as a fast-path reject, and\nmove the ifindex read (and a bo-\u003ebound re-check) into the locked\nsection, where every writer already serializes. This removes the\npossibility of observing the two fields torn against each other,\nrather than trying to fix it with more READ_ONCE()/WRITE_ONCE() pairs\non two independently updated fields. Annotate the now-purely-lockless\nbo-\u003ebound accesses consistently across all its write sites.\n\nAlso fix bcm_rx_setup() silently returning success when the target\ndevice disappears concurrently instead of reporting -ENODEV, so a\nbroken RX op is no longer left registered as if it had succeeded."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.3,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - Exploitation requires local access to a PF_CAN SOCK_DGRAM CAN_BCM socket via sendmsg()/connect() syscalls; the race is in kernel socket state handling, not in remote packet reception or the physical CAN bus itself.\nAC:L - The attacker controls both sides of the race by concurrently calling sendmsg() on one thread while triggering bcm_connect() or NETDEV_UNREGISTER (e.g. ip link del) on another, making the torn bound/ifindex observation reliably triggerable.\nPR:L - No real-root capability is required beyond opening BCM sockets and binding to a CAN interface; unprivileged users with CAN access or CAP_NET_ADMIN via user namespaces can create vcan devices and drive the unregister/connect race.\nUI:N - Exploitation is fully attacker-driven through concurrent syscalls and does not require any victim user action such as mounting filesystems or opening files.\nS:U - The impact is unauthorized access to additional CAN interfaces within the same kernel security domain, not a cross-boundary escape such as VM breakout, sandbox escape, or IOMMU bypass.\nC:H - Racing to observe bound=1 with ifindex=0 causes RX_SETUP to register can_rx_register() on all CAN devices, letting a socket bound to one interface sniff traffic from every other CAN bus on the system including safety-critical vehicle or industrial networks.\nI:H - The same torn state enables TX_SETUP/TX_SEND on arbitrary interfaces via msg_name when per-socket binding would normally block it, allowing injection of attacker-controlled CAN frames onto buses the process was not authorized to transmit on.\nA:L - The concurrent bcm_rx_setup() bug can silently return success without registering a filter when the target device vanishes, degrading CAN monitoring reliability without causing kernel panic, oops, or deadlock."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-17T05:40:35.588Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/9e60c586faeaed80d55ab8ce2a4b8e56133bc395"
},
{
"url": "https://git.kernel.org/stable/c/ffa80a2af27c97453861a5128e537214a31cd18a"
},
{
"url": "https://git.kernel.org/stable/c/6bcc5cd247c2934373bc2a1cdf8bf12321169543"
},
{
"url": "https://git.kernel.org/stable/c/0f6f9f95294b4cbb26ba02209e893e3bd91237c3"
},
{
"url": "https://git.kernel.org/stable/c/b70f1a15533afeeec5d07f20bec3f3867ab1c7b6"
},
{
"url": "https://git.kernel.org/stable/c/35f0ac19efb1a3f6c5e12c00e475a9ec2d9c3a6d"
},
{
"url": "https://git.kernel.org/stable/c/b9c6ac6fb4e01b34575816066e5d3890a57b3c86"
},
{
"url": "https://git.kernel.org/stable/c/d9b091d9d22fee81ec53fb55d2032951993ceadb"
}
],
"title": "can: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-72122",
"datePublished": "2026-08-15T05:53:00.704Z",
"dateReserved": "2026-08-09T03:40:39.907Z",
"dateUpdated": "2026-08-17T05:40:35.588Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…