{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-50132","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-10-21T19:36:19.955Z","datePublished":"2024-11-05T17:10:57.625Z","dateUpdated":"2026-08-05T11:41:57.393Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:41:57.393Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ntracing/probes: Fix MAX_TRACE_ARGS limit handling\n\nWhen creating a trace_probe we would set nr_args prior to truncating the\narguments to MAX_TRACE_ARGS. However, we would only initialize arguments\nup to the limit.\n\nThis caused invalid memory access when attempting to set up probes with\nmore than 128 fetchargs.\n\n  BUG: kernel NULL pointer dereference, address: 0000000000000020\n  #PF: supervisor read access in kernel mode\n  #PF: error_code(0x0000) - not-present page\n  PGD 0 P4D 0\n  Oops: Oops: 0000 [#1] PREEMPT SMP PTI\n  CPU: 0 UID: 0 PID: 1769 Comm: cat Not tainted 6.11.0-rc7+ #8\n  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014\n  RIP: 0010:__set_print_fmt+0x134/0x330\n\nResolve the issue by applying the MAX_TRACE_ARGS limit earlier. Return\nan error when there are too many arguments instead of silently\ntruncating."}],"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 vulnerability is reached only by writing a probe definition to tracefs files (/sys/kernel/tracing/kprobe_events, uprobe_events, or dynamic_events) via the write() syscall. There is no remote or network-facing path to __trace_kprobe_create()/__trace_uprobe_create().\nAC:L - A single write() containing more than 128 fetchargs deterministically triggers the NULL dereference in __set_print_fmt() — no race, no memory-layout dependency, and the 4096-byte WRITE_BUFSIZE line limit easily accommodates 129+ arguments.\nPR:L - No capable()/CAP_SYS_ADMIN check exists anywhere in the tracefs or dynamic-event path; access is gated purely by file permissions, which distros, Android/ChromeOS-style tracing groups, and container/debug setups routinely relax for non-root tracing users. Consistent with prior kernel CNA scoring of tracefs-write-triggered tracing bugs as PR:L.\nUI:N - The attacker performs the entire operation themselves with one write() to the tracefs event file; no victim action, mount, or file open by another user is needed.\nS:U - The uninitialized-argument dereference and its consequences are entirely within the kernel's own security authority — no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The code treats a zeroed, never-initialized struct probe_arg as valid and chases its pointers (parg->type->fmt, ->is_string, ->print), so on configurations where low addresses are mappable (mmap_min_addr=0, common on embedded and legacy deployments) the attacker controls the fetch_type and turns snprintf(\"%s\", parg->type->fmt) into an arbitrary kernel-memory read whose output is then exposed through the event's format file.\nI:H - __set_print_fmt() runs twice — once to size the kmalloc buffer and once to fill it — so an attacker-controlled type structure yielding different lengths between passes gives a controlled heap buffer overflow, and the same uninitialized-pointer dereference reaches an indirect call through parg->type->print in trace_probe_print_args().\nA:H - The immediate result is a kernel oops (NULL read at 0x20 in __set_print_fmt), and when triggered through dynamic_events the faulting task dies while holding dyn_event_ops_mutex, permanently deadlocking all further dynamic-event operations until reboot; with panic_on_oops set it is a full system panic."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/trace/trace_eprobe.c","kernel/trace/trace_fprobe.c","kernel/trace/trace_kprobe.c","kernel/trace/trace_uprobe.c"],"versions":[{"version":"e96b42d22f66982b84e31b6935a59d74d9a2d848","lessThan":"6bc24db74fe4788cc7c2f30a113fc6aafba225a3","status":"affected","versionType":"git"},{"version":"035ba76014c096316fa809a46ce0a1b9af1cde0d","lessThan":"08ccd1a57c4d3882e9a877eb2dcc66e50a3b0279","status":"affected","versionType":"git"},{"version":"035ba76014c096316fa809a46ce0a1b9af1cde0d","lessThan":"73f35080477e893aa6f4c8d388352b871b288fbc","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_eprobe.c","kernel/trace/trace_fprobe.c","kernel/trace/trace_kprobe.c","kernel/trace/trace_uprobe.c"],"versions":[{"version":"6.9","status":"affected"},{"version":"0","lessThan":"6.9","status":"unaffected","versionType":"semver"},{"version":"6.11.6","lessThanOrEqual":"6.11.*","status":"unaffected","versionType":"semver"},{"version":"6.12","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":"6.9","versionEndExcluding":"6.11.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.12"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/6bc24db74fe4788cc7c2f30a113fc6aafba225a3"},{"url":"https://git.kernel.org/stable/c/08ccd1a57c4d3882e9a877eb2dcc66e50a3b0279"},{"url":"https://git.kernel.org/stable/c/73f35080477e893aa6f4c8d388352b871b288fbc"}],"title":"tracing/probes: Fix MAX_TRACE_ARGS limit handling","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":5.5,"attackVector":"LOCAL","baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","integrityImpact":"NONE","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"NONE"}},{"other":{"type":"ssvc","content":{"id":"CVE-2024-50132","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2025-10-01T20:21:27.012103Z"}}}],"problemTypes":[{"descriptions":[{"lang":"en","type":"CWE","cweId":"CWE-476","description":"CWE-476 NULL Pointer Dereference"}]}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2025-10-01T20:27:15.256Z"}}]}}