Files
vuln-cve/data/2026/46xxx/CVE-2026-46270.json
T

264 lines
15 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-46270",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-05-13T15:03:33.109Z",
"datePublished": "2026-06-03T15:50:12.537Z",
"dateUpdated": "2026-08-05T12:30:54.591Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T12:30:54.591Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: rt9455: Fix use-after-free in power_supply_changed()\n\nUsing the `devm_` variant for requesting IRQ _before_ the `devm_`\nvariant for allocating/registering the `power_supply` handle, means that\nthe `power_supply` handle will be deallocated/unregistered _before_ the\ninterrupt handler (since `devm_` naturally deallocates in reverse\nallocation order). This means that during removal, there is a race\ncondition where an interrupt can fire just _after_ the `power_supply`\nhandle has been freed, *but* just _before_ the corresponding\nunregistration of the IRQ handler has run.\n\nThis will lead to the IRQ handler calling `power_supply_changed()` with\na freed `power_supply` handle. Which usually crashes the system or\notherwise silently corrupts the memory...\n\nNote that there is a similar situation which can also happen during\n`probe()`; the possibility of an interrupt firing _before_ registering\nthe `power_supply` handle. This would then lead to the nasty situation\nof using the `power_supply` handle *uninitialized* in\n`power_supply_changed()`.\n\nFix this racy use-after-free by making sure the IRQ is requested _after_\nthe registration of the `power_supply` handle."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 8.4,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - Exploitation requires local driver teardown (module unload, sysfs unbind, or shutdown/reboot) that runs `devres_release_all()`; the vulnerable `power_supply_changed()` path is only reachable from the on-chip IRQ handler during that window, not from any network-facing protocol.\nAC:L - An attacker who can initiate driver removal can repeatedly assert charger interrupts (USB plug/unplug, charge events) to hit the narrow race between `power_supply_unregister()` and IRQ release; this is a standard attacker-controlled UAF race, not a layout-dependent condition.\nPR:N - On battery-powered embedded/mobile platforms with this IC, an attacker with brief physical possession can force power-off/reboot (no Linux account or capability) while manipulating the charging port to fire IRQs during devm teardown; explicit unbind/rmmod also works but is not the only path.\nUI:N - No victim interaction is required beyond the attacker’s own physical control of the device and charging port; exploitation does not depend on the victim opening files, mounting filesystems, or approving prompts.\nS:U - Impact is confined to kernel memory corruption and privilege escalation within the kernel security boundary; it does not cross VM, container, or IOMMU isolation boundaries.\nC:H - The IRQ handler calls `power_supply_changed()` on a freed `struct power_supply`, performing spinlock operations and `schedule_work()` on freed heap memory, which is a classic UAF that can be turned into arbitrary kernel memory disclosure.\nI:H - The same UAF writes to freed object fields (`changed`, locks, workqueue) and can be combined with heap grooming for arbitrary kernel writes or control-flow hijack, as noted by the fix author (“silently corrupts the memory”).\nA:H - Use-after-free in interrupt context typically causes immediate kernel oops/panic or silent memory corruption; the commit explicitly states this “usually crashes the system.”"
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/power/supply/rt9455_charger.c"
],
"versions": [
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "d4e2e3c3caa26b93aa9f36d0a6824b584e2a8dfc",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "62d753b916bd500bb269b7078cdab73198ab4718",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "a39f8f06216f73ef40e71e2fe4ad071964c1fd36",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "af261f218a7606f93d2c786353d60bb4feb56ef0",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "2178dc65d45e2f7bcaa8af8d80d100419bdab251",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "64e15155095f39f4dec9b4659da1238ef8fc54d4",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "721449a15170fc5f028a7576d7f65b9f60d53482",
"status": "affected",
"versionType": "git"
},
{
"version": "e86d69dd786e94046b8f5be7df1b9a8226a40b2a",
"lessThan": "e2febe375e5ea5afed92f4cd9711bde8f24ee6d2",
"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/power/supply/rt9455_charger.c"
],
"versions": [
{
"version": "4.2",
"status": "affected"
},
{
"version": "0",
"lessThan": "4.2",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.10.252",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.202",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.165",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.6.128",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.75",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.14",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.19.4",
"lessThanOrEqual": "6.19.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.0",
"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": "4.2",
"versionEndExcluding": "5.10.252"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "5.15.202"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "6.1.165"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "6.6.128"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "6.12.75"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "6.18.14"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "6.19.4"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.2",
"versionEndExcluding": "7.0"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/d4e2e3c3caa26b93aa9f36d0a6824b584e2a8dfc"
},
{
"url": "https://git.kernel.org/stable/c/62d753b916bd500bb269b7078cdab73198ab4718"
},
{
"url": "https://git.kernel.org/stable/c/a39f8f06216f73ef40e71e2fe4ad071964c1fd36"
},
{
"url": "https://git.kernel.org/stable/c/af261f218a7606f93d2c786353d60bb4feb56ef0"
},
{
"url": "https://git.kernel.org/stable/c/2178dc65d45e2f7bcaa8af8d80d100419bdab251"
},
{
"url": "https://git.kernel.org/stable/c/64e15155095f39f4dec9b4659da1238ef8fc54d4"
},
{
"url": "https://git.kernel.org/stable/c/721449a15170fc5f028a7576d7f65b9f60d53482"
},
{
"url": "https://git.kernel.org/stable/c/e2febe375e5ea5afed92f4cd9711bde8f24ee6d2"
}
],
"title": "power: supply: rt9455: Fix use-after-free in power_supply_changed()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}