Files
vuln-cve/data/2026/90xxx/CVE-2026-90014.json
T

138 lines
8.1 KiB
JSON

{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-90014",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-09-11T19:38:34.781Z",
"datePublished": "2026-09-16T10:33:20.791Z",
"dateUpdated": "2026-10-19T08:56:28.002Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-10-19T08:56:28.002Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntracing: Have show_event_filters/triggers files take trace array ref\n\nThe newly added files show_event_filters and show_event_triggers that show\nall filters or triggers that are set within the trace array do not take a\nreference for the trace array it is showing. Without taking a reference,\nthe trace_array may be freed via \"rmdir\" while a task is reading one of\ntheses files. Those files iterate all the events within an instance\n(trace_array) and nothing prevents that instance from being freed while\nits data is being read. This causes a use-after-free crash.\n\nHave the open of both those files take the trace_array reference via the\ntrace_array_get() that prevents the trace_array from being freed while the\nfiles are opened."
}
],
"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 reached only via local tracefs: open/read of instances/<name>/show_event_filters or show_event_triggers (ftrace_event_show_*_open -> seq_read -> t_start) concurrent with rmdir(2) of that instance (tracefs_syscall_rmdir -> instance_rmdir -> __remove_instance). There is no network, adjacent-radio, or physical path.\nAC:L - The attacker owns both sides and can trigger it sequentially: mkdir an instance, open show_event_filters/triggers (no trace_array ref), rmdir it (__remove_instance sees tr->ref==1 and kfree()s tr), then read the still-open fd. No victim state or uninfluenced layout is required; CONFIG_TRACING is standard.\nPR:L - The open path checks only LOCKDOWN_TRACEFS and DAC (files are 0440; instance mkdir/rmdir has no capable() gate). Tracefs uid=/gid=/mode= mounts on Android/Perfetto, ChromeOS, and distro tracing groups grant this to unprivileged users, matching CVE-2024-50207, CVE-2025-38101, and CVE-2026-74634.\nUI:N - The attacker creates the instance, opens the seq file, rmdirs it, and reads the fd from their own threads. No separate victim mount, click, or cooperating process is required.\nS:U - The use-after-free corrupts the host kernel's trace_array and event-file heap objects within the same OS security authority. It enables local privilege escalation but does not cross a VM, IOMMU, sandbox, or hardware trust boundary.\nC:H - After rmdir kfree()s the trace_array and its trace_event_file objects, t_start/t_next walk the freed tr->events list and t_show_filters copies filter->filter_string to userspace via seq_printf, disclosing recycled kernel heap. Use-after-free is scored C:H.\nI:H - t_show_triggers invokes data->cmd_ops->print() on use-after-free trigger objects, and walking the freed tr->events list is a heap UAF write/control-flow primitive after spraying. Use-after-free is scored I:H.\nA:H - syzkaller reported a KASAN slab-use-after-free in t_start/t_next when the instance is removed while the file is read, which oopses or panics the kernel. Any use-after-free of the trace_array is a reliable whole-system crash even without full exploitation."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"kernel/trace/trace_events.c"
],
"versions": [
{
"version": "729757b96a662d87e334fe8b837707800d8fd551",
"lessThan": "2ee3f7d43f79efaca0cd84a6798653d9d75ce60b",
"status": "affected",
"versionType": "git"
},
{
"version": "729757b96a662d87e334fe8b837707800d8fd551",
"lessThan": "f4a771cc684c7354b6200147f7252c58d17408ff",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"kernel/trace/trace_events.c"
],
"versions": [
{
"version": "7.0",
"status": "affected"
},
{
"version": "0",
"lessThan": "7.0",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.2.5",
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.3",
"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": "7.0",
"versionEndExcluding": "7.2.5"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "7.0",
"versionEndExcluding": "7.3"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/2ee3f7d43f79efaca0cd84a6798653d9d75ce60b"
},
{
"url": "https://git.kernel.org/stable/c/f4a771cc684c7354b6200147f7252c58d17408ff"
}
],
"title": "tracing: Have show_event_filters/triggers files take trace array ref",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}