Files
vuln-cve/data/2025/38xxx/CVE-2025-38262.json
T

290 lines
17 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-2025-38262",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2025-04-16T04:51:23.997Z",
"datePublished": "2025-07-09T10:42:37.410Z",
"dateUpdated": "2026-10-15T21:52:13.087Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T12:00:50.359Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntty: serial: uartlite: register uart driver in init\n\nWhen two instances of uart devices are probing, a concurrency race can\noccur. If one thread calls uart_register_driver function, which first\nallocates and assigns memory to 'uart_state' member of uart_driver\nstructure, the other instance can bypass uart driver registration and\ncall ulite_assign. This calls uart_add_one_port, which expects the uart\ndriver to be fully initialized. This leads to a kernel panic due to a\nnull pointer dereference:\n\n[ 8.143581] BUG: kernel NULL pointer dereference, address: 00000000000002b8\n[ 8.156982] #PF: supervisor write access in kernel mode\n[ 8.156984] #PF: error_code(0x0002) - not-present page\n[ 8.156986] PGD 0 P4D 0\n...\n[ 8.180668] RIP: 0010:mutex_lock+0x19/0x30\n[ 8.188624] Call Trace:\n[ 8.188629] ? __die_body.cold+0x1a/0x1f\n[ 8.195260] ? page_fault_oops+0x15c/0x290\n[ 8.209183] ? __irq_resolve_mapping+0x47/0x80\n[ 8.209187] ? exc_page_fault+0x64/0x140\n[ 8.209190] ? asm_exc_page_fault+0x22/0x30\n[ 8.209196] ? mutex_lock+0x19/0x30\n[ 8.223116] uart_add_one_port+0x60/0x440\n[ 8.223122] ? proc_tty_register_driver+0x43/0x50\n[ 8.223126] ? tty_register_driver+0x1ca/0x1e0\n[ 8.246250] ulite_probe+0x357/0x4b0 [uartlite]\n\nTo prevent it, move uart driver registration in to init function. This\nwill ensure that uart_driver is always registered when probe function\nis called."
}
],
"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 vulnerable window lives entirely in the uartlite platform-driver probe path, reachable only from local device/module instantiation (module load, deferred-probe worker, DT-overlay/FPGA-region or sysfs bind) on the affected host. No remote, adjacent, or physical-interface data reaches this code — the race is in driver registration, not in serial data handling.\nAC:L - Success requires the system to be in a specific state the attacker cannot create or influence — two uartlite instances probing simultaneously with one thread inside the few-microsecond window between `drv->state = kzalloc()` and `tty_port_init()`/`tty_register_driver()`. There is no way to widen, stall, or re-trigger that window from a local attacker's position, so it is a condition truly beyond attacker control.\nPR:L - Scored as a local unprivileged attacker present on an affected FPGA/embedded system when the concurrent probe occurs; the code itself performs no capability check. Deliberately forcing a probe (modprobe, sysfs bind, DT overlay) would need root, but the higher-severity assumption of a merely unprivileged local presence is used here.\nUI:N - The race fires during driver/device initialization driven by the kernel's own probe machinery; no victim action such as opening a device, mounting a filesystem, or loading a file is required.\nS:U - The corruption is confined to kernel data structures (`uart_driver.state`, `tty_port`, slab objects) within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - This is not a bare NULL dereference — `uart_add_one_port()` reads through a half-built or already-`kfree()`d `drv->state`/`drv->tty_driver` (`drv->tty_driver->minor_start`, `state->uart_port`), giving reads of freed slab memory whose contents can be reallocated to other objects, so it is leverageable for kernel memory disclosure.\nI:H - In the double-registration interleaving the losing thread's error path `kfree()`s the shared `drv->state` array while the winner writes through it (`atomic_set(&state->refcount,1)`, `init_waitqueue_head()`, `state->uart_port = uport`, `tty_port_link_device()`), a use-after-free write that plants kernel pointers and performs list/mutex operations inside a freed, potentially reallocated slab object — memory corruption usable for control-flow hijacking.\nA:H - The documented and reproduced outcome is an immediate kernel panic (`BUG: kernel NULL pointer dereference` in `mutex_lock` from `uart_add_one_port`), and `BUG_ON(drv->state)` in the concurrent `uart_register_driver()` is a second crash path. On 5.4–6.12 the oops happens while the global `port_mutex` is held, permanently deadlocking all further serial-port and console registration even if the box survives the oops."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/tty/serial/uartlite.c"
],
"versions": [
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "5015eed450005bab6e5cb6810f7a62eab0434fc4",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "9c905fdbba68a6d73d39a6b7de9b9f0d6c46df87",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "6db06aaea07bb7c8e33a425cf7b98bf29ee6056e",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "8e958d10dd0ce5ae674cce460db5c9ca3f25243b",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "685d29f2c5057b32c7b1b46f2a7d303b926c8f72",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "f5e4229d94792b40e750f30c92bcf7a3107c72ef",
"status": "affected",
"versionType": "git"
},
{
"version": "238b8721a554a33a451a3f13bdb5be8fe5cfc927",
"lessThan": "6bd697b5fc39fd24e2aa418c7b7d14469f550a93",
"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/tty/serial/uartlite.c"
],
"versions": [
{
"version": "2.6.20",
"status": "affected"
},
{
"version": "0",
"lessThan": "2.6.20",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.4.296",
"lessThanOrEqual": "5.4.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.187",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.143",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.6.96",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.36",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.15.5",
"lessThanOrEqual": "6.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.16",
"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.20",
"versionEndExcluding": "5.4.296"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "5.15.187"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "6.1.143"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "6.6.96"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "6.12.36"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "6.15.5"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "2.6.20",
"versionEndExcluding": "6.16"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/5015eed450005bab6e5cb6810f7a62eab0434fc4"
},
{
"url": "https://git.kernel.org/stable/c/9c905fdbba68a6d73d39a6b7de9b9f0d6c46df87"
},
{
"url": "https://git.kernel.org/stable/c/6db06aaea07bb7c8e33a425cf7b98bf29ee6056e"
},
{
"url": "https://git.kernel.org/stable/c/8e958d10dd0ce5ae674cce460db5c9ca3f25243b"
},
{
"url": "https://git.kernel.org/stable/c/685d29f2c5057b32c7b1b46f2a7d303b926c8f72"
},
{
"url": "https://git.kernel.org/stable/c/f5e4229d94792b40e750f30c92bcf7a3107c72ef"
},
{
"url": "https://git.kernel.org/stable/c/6bd697b5fc39fd24e2aa418c7b7d14469f550a93"
}
],
"title": "tty: serial: uartlite: register uart driver in init",
"x_generator": {
"engine": "bippy-1.2.0"
}
},
"adp": [
{
"title": "CVE Program Container",
"references": [
{
"url": "https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html"
}
],
"providerMetadata": {
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE",
"dateUpdated": "2025-11-03T17:36:04.315Z"
}
},
{
"metrics": [
{
"other": {
"type": "ssvc",
"content": {
"id": "CVE-2025-38262",
"role": "CISA Coordinator",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-10-15T21:49:09.978264Z"
}
}
}
],
"title": "CISA ADP Vulnrichment",
"providerMetadata": {
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP",
"dateUpdated": "2026-10-15T21:52:13.087Z"
}
}
]
}
}