{"id":"CVE-2026-17523","state":"PUBLISHED","title":"can: bcm: switch timer to HRTIMER_MODE_SOFT and remove hrtimer_tasklet","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ncan: bcm: switch timer to HRTIMER_MODE_SOFT and remove hrtimer_tasklet\n\nThis patch switches the timer to HRTIMER_MODE_SOFT, which executed the\ntimer callback in softirq context and removes the hrtimer_tasklet.","publishedAt":"2026-07-27T08:58:58.143Z","updatedAt":"2026-09-10T13:31:17.266Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"redhat","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c53a6ee88b0a91bd012ef1b7988c0b93dae6f24d","status":"affected","lessThan":"79305a826f872fe446c6fbf8450f515053ef6951","versionType":"git"},{"version":"c53a6ee88b0a91bd012ef1b7988c0b93dae6f24d","status":"affected","lessThan":"bf74aa86e111aa3b2fbb25db37e3a3fab71b5b68","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/can/bcm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.29","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.29","versionType":"semver"},{"version":"4.19.226","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/can/bcm.c"]}],"references":["https://git.kernel.org/stable/c/79305a826f872fe446c6fbf8450f515053ef6951","https://git.kernel.org/stable/c/bf74aa86e111aa3b2fbb25db37e3a3fab71b5b68"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:00.674Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/17xxx/CVE-2026-17523.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-17523","state":"PUBLISHED","datePublished":"2026-07-27T08:58:58.143Z","dateUpdated":"2026-09-10T13:31:17.266Z","assignerShortName":"redhat","assignerOrgId":"53f830b8-0a3f-465b-8143-3b8a9948e749","dateReserved":"2026-07-27T08:19:11.242Z"},"containers":{"cna":{"title":"can: bcm: switch timer to HRTIMER_MODE_SOFT and remove hrtimer_tasklet","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ncan: bcm: switch timer to HRTIMER_MODE_SOFT and remove hrtimer_tasklet\n\nThis patch switches the timer to HRTIMER_MODE_SOFT, which executed the\ntimer callback in softirq context and removes the hrtimer_tasklet."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c53a6ee88b0a91bd012ef1b7988c0b93dae6f24d","status":"affected","lessThan":"79305a826f872fe446c6fbf8450f515053ef6951","versionType":"git"},{"version":"c53a6ee88b0a91bd012ef1b7988c0b93dae6f24d","status":"affected","lessThan":"bf74aa86e111aa3b2fbb25db37e3a3fab71b5b68","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/can/bcm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"2.6.29","status":"affected"},{"version":"0","status":"unaffected","lessThan":"2.6.29","versionType":"semver"},{"version":"4.19.226","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/can/bcm.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/79305a826f872fe446c6fbf8450f515053ef6951"},{"url":"https://git.kernel.org/stable/c/bf74aa86e111aa3b2fbb25db37e3a3fab71b5b68"}],"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 UAF is in bcm_remove_op() hrtimer/tasklet teardown, reached only via local PF_CAN/CAN_BCM syscalls (socket/connect/sendmsg TX_SETUP or RX_SETUP with STARTTIMER, then close or TX_DELETE/RX_DELETE). Remote IP services or CAN bus frames alone cannot close the socket or delete the op.\nAC:L - The attacker controls both sides of the race: they arm cyclic TX/RX hrtimers with attacker-chosen microsecond intervals, then delete the op or close the socket, hitting the TOCTOU between tasklet-state checks and hrtimer_active() in bcm_remove_op(). The window is retryable until the scheduled tasklet runs on the freed object.\nPR:L - can_create(), bcm_connect(), and bcm_sendmsg() have no capability checks. RX_SETUP with ifindex 0 starts timeout timers without a CAN device, so any unprivileged local user (including via user namespaces / vcan) can create BCM ops and trigger teardown.\nUI:N - Exploitation requires only the attacker opening a BCM socket, installing timer-armed TX_SETUP/RX_SETUP ops, and closing or deleting them; no victim action such as mounting a filesystem or opening a file is needed.\nS:U - The use-after-free corrupts kernel heap state in the same kernel security domain, enabling local privilege escalation or crash; it does not by itself cross a VM, guest-to-host, or IOMMU boundary.\nC:H - bcm_op is a kmalloc object that embeds tasklet_struct; after the hrtimer hardirq callback schedules a tasklet that bcm_remove_op() misses, the tasklet runs on freed memory. Heap reuse of tsklet.func/data and UAF reads in bcm_send_to_user()/bcm_can_tx() enable arbitrary kernel disclosure.\nI:H - The same UAF lets a sprayed tasklet_struct hijack tsklet.func for arbitrary kernel execution, and bcm_tx_timeout_tsklet()/bcm_can_tx() write through freed op fields (frames, sock, timers), providing arbitrary write and control-flow hijack primitives.\nA:H - A scheduled tasklet running after kfree(op) dereferences the freed bcm_op (and its frames/sk pointers), causing kernel oops/panic even when the UAF is not fully turned into code execution."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-09-10T13:31:17.266Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.29","versionEndExcluding":"4.19.226"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.29","versionEndExcluding":"5.4"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-07-27T13:44:24.567768Z","id":"CVE-2026-17523","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-07-27T13:44:45.277Z"}}]}}}