CVE-2026-23435

MEDIUMNVD 5.55.5
EchelonGraph scoreMEDIUM confidence

Score 5.5 from GitHub Security Advisory published 2026-04-03. NVD baseline CVSS 5.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
5.5EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 5.5Exploit: None knownExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

In the Linux kernel, the following vulnerability has been resolved:

perf/x86: Move event pointer setup earlier in x86_pmu_enable()

A production AMD EPYC system crashed with a NULL pointer dereference in the PMU NMI handler:

BUG: kernel NULL pointer dereference, address: 0000000000000198 RIP: x86_perf_event_update+0xc/0xa0 Call Trace: amd_pmu_v2_handle_irq+0x1a6/0x390 perf_event_nmi_handler+0x24/0x40

The faulting instruction is cmpq $0x0, 0x198(%rdi) with RDI=0, corresponding to the if (unlikely(!hwc->event_base)) check in x86_perf_event_update() where hwc = &event->hw and event is NULL.

drgn inspection of the vmcore on CPU 106 showed a mismatch between cpuc->active_mask and cpuc->events[]:

active_mask: 0x1e (bits 1, 2, 3, 4) events[1]: 0xff1100136cbd4f38 (valid) events[2]: 0x0 (NULL, but active_mask bit 2 set) events[3]: 0xff1100076fd2cf38 (valid) events[4]: 0xff1100079e990a90 (valid)

The event that should occupy events[2] was found in event_list[2] with hw.idx=2 and hw.state=0x0, confirming x86_pmu_start() had run (which clears hw.state and sets active_mask) but events[2] was never populated.

Another event (event_list[0]) had hw.state=0x7 (STOPPED|UPTODATE|ARCH), showing it was stopped when the PMU rescheduled events, confirming the throttle-then-reschedule sequence occurred.

The root cause is commit 7e772a93eb61 ("perf/x86: Fix NULL event access and potential PEBS record loss") which moved the cpuc->events[idx] assignment out of x86_pmu_start() and into step 2 of x86_pmu_enable(), after the PERF_HES_ARCH check. This broke any path that calls pmu->start() without going through x86_pmu_enable() -- specifically the unthrottle path:

perf_adjust_freq_unthr_events() -> perf_event_unthrottle_group() -> perf_event_unthrottle() -> event->pmu->start(event, 0) -> x86_pmu_start() // sets active_mask but not events[]

The race sequence is:

  • A group of perf events overflows, triggering group throttle via
perf_event_throttle_group(). All events are stopped: active_mask bits cleared, events[] preserved (x86_pmu_stop no longer clears events[] after commit 7e772a93eb61).
  • While still throttled (PERF_HES_STOPPED), x86_pmu_enable() runs
due to other scheduling activity. Stopped events that need to move counters get PERF_HES_ARCH set and events[old_idx] cleared. In step 2 of x86_pmu_enable(), PERF_HES_ARCH causes these events to be skipped -- events[new_idx] is never set.
  • The timer tick unthrottles the group via pmu->start(). Since
commit 7e772a93eb61 removed the events[] assignment from x86_pmu_start(), active_mask[new_idx] is set but events[new_idx] remains NULL.
  • A PMC overflow NMI fires. The handler iterates active counters,
finds active_mask[2] set, reads events[2] which is NULL, and crashes dereferencing it.

Move the cpuc->events[hwc->idx] assignment in x86_pmu_enable() to before the PERF_HES_ARCH check, so that events[] is populated even for events that are not immediately started. This ensures the unthrottle path via pmu->start() always finds a valid event pointer.

CVSS v3
5.5
EG Score
5.5(medium)
EG Risk
29(Track)
EG Risk 29/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity55% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
2%
KEV
Not listed

Published

April 3, 2026

Last Modified

July 21, 2026

Advisory Details (3)

Auto-updated Jul 21, 2026
No patch confirmed yet.
generic

perf/x86: Move event pointer setup earlier in x86_pmu_enable() - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/c1dd1e2b722d3f1f2e4977dad8d1be78fdfb30cb
generic

perf/x86: Move event pointer setup earlier in x86_pmu_enable() - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/8d5fae6011260de209aaf231120e8146b14bc8e0
generic

perf/x86: Move event pointer setup earlier in x86_pmu_enable() - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/886fa869153917d902784098922defa20c3a2fe5

Patch Availability(1)

Vendor / EcosystemFixed in / PatchReleasedSource
linuxKernel @ 6.18.20osv

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Data Freshness Timeline

(refreshed 6× in last 7d / 44× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 130 total refreshes for this CVE.

  1. 2026-07-30 01:30 UTCEPSS rescore
  2. 2026-07-27 14:13 UTCEPSS rescore
  3. 2026-07-26 14:54 UTCEPSS rescore
  4. 2026-07-26 14:54 UTCEPSS rescore
  5. 2026-07-25 14:17 UTCEPSS rescore
  6. 2026-07-25 14:17 UTCEPSS rescore
  7. 2026-07-24 14:17 UTCEPSS rescore
  8. 2026-07-23 14:18 UTCEPSS rescore
  9. 2026-07-23 14:18 UTCEPSS rescore
  10. 2026-07-23 03:07 UTCEG score recompute
  11. 2026-07-22 14:08 UTCEPSS rescore
  12. 2026-07-21 15:24 UTCEPSS rescore
  13. 2026-07-21 15:24 UTCEPSS rescore
  14. 2026-07-20 17:08 UTCEPSS rescore
  15. 2026-07-19 14:31 UTCEPSS rescore
  16. 2026-07-19 14:31 UTCEPSS rescore
  17. 2026-07-19 02:29 UTCEPSS rescore
  18. 2026-07-19 02:28 UTCEPSS rescore
  19. 2026-07-18 10:04 UTCEPSS rescore
  20. 2026-07-18 10:04 UTCEPSS rescore
  21. 2026-07-17 03:24 UTCOSV refresh
  22. 2026-07-16 17:03 UTCEPSS rescore
  23. 2026-07-16 17:03 UTCEPSS rescore
  24. 2026-07-15 16:57 UTCEPSS rescore
  25. 2026-07-15 16:57 UTCEPSS rescore
Show 75 more
  1. 2026-07-15 02:00 UTCEPSS rescore
  2. 2026-07-15 02:00 UTCEPSS rescore
  3. 2026-07-13 22:30 UTCEPSS rescore
  4. 2026-07-13 06:13 UTCEPSS rescore
  5. 2026-07-13 06:13 UTCEPSS rescore
  6. 2026-07-12 05:46 UTCEPSS rescore
  7. 2026-07-12 05:46 UTCEPSS rescore
  8. 2026-07-11 08:27 UTCEPSS rescore
  9. 2026-07-09 19:10 UTCEPSS rescore
  10. 2026-07-08 15:15 UTCEPSS rescore
  11. 2026-07-08 15:15 UTCEPSS rescore
  12. 2026-07-07 13:46 UTCEPSS rescore
  13. 2026-07-06 16:27 UTCEPSS rescore
  14. 2026-07-06 16:27 UTCEPSS rescore
  15. 2026-07-06 02:23 UTCEPSS rescore
  16. 2026-07-06 02:23 UTCEPSS rescore
  17. 2026-07-05 02:30 UTCEPSS rescore
  18. 2026-07-04 06:31 UTCEPSS rescore
  19. 2026-07-04 06:31 UTCEPSS rescore
  20. 2026-07-01 15:06 UTCEPSS rescore
  21. 2026-07-01 15:06 UTCEPSS rescore
  22. 2026-06-30 23:22 UTCEPSS rescore
  23. 2026-06-30 23:22 UTCEPSS rescore
  24. 2026-06-29 14:06 UTCEPSS rescore
  25. 2026-06-28 14:07 UTCEPSS rescore
  26. 2026-06-28 14:07 UTCEPSS rescore
  27. 2026-06-28 04:56 UTCEPSS rescore
  28. 2026-06-28 04:56 UTCEPSS rescore
  29. 2026-06-27 03:08 UTCEPSS rescore
  30. 2026-06-25 13:49 UTCEPSS rescore
  31. 2026-06-25 13:49 UTCEPSS rescore
  32. 2026-06-24 14:05 UTCEPSS rescore
  33. 2026-06-24 14:05 UTCEPSS rescore
  34. 2026-06-23 21:33 UTCEPSS rescore
  35. 2026-06-23 21:32 UTCEPSS rescore
  36. 2026-06-22 14:25 UTCEPSS rescore
  37. 2026-06-22 14:25 UTCEPSS rescore
  38. 2026-06-21 14:56 UTCEPSS rescore
  39. 2026-06-21 14:56 UTCEPSS rescore
  40. 2026-06-21 01:59 UTCEPSS rescore
  41. 2026-06-21 01:59 UTCEPSS rescore
  42. 2026-06-19 19:25 UTCEPSS rescore
  43. 2026-06-19 19:25 UTCEPSS rescore
  44. 2026-06-18 17:52 UTCEPSS rescore
  45. 2026-06-17 17:53 UTCEPSS rescore
  46. 2026-06-17 17:53 UTCEPSS rescore
  47. 2026-06-16 17:52 UTCEPSS rescore
  48. 2026-06-15 17:48 UTCEPSS rescore
  49. 2026-06-14 23:18 UTCEPSS rescore
  50. 2026-06-13 23:00 UTCEPSS rescore
  51. 2026-06-11 22:04 UTCGHSA enrichment
  52. 2026-06-11 14:00 UTCEPSS rescore
  53. 2026-06-10 22:18 UTCEPSS rescore
  54. 2026-06-10 14:37 UTCGHSA enrichment
  55. 2026-06-10 13:22 UTCEPSS rescore
  56. 2026-06-09 14:34 UTCGHSA enrichment
  57. 2026-06-08 14:17 UTCEPSS rescore
  58. 2026-06-08 14:17 UTCEPSS rescore
  59. 2026-06-08 11:27 UTCGHSA enrichment
  60. 2026-06-07 15:25 UTCEPSS rescore
  61. 2026-06-07 15:24 UTCEPSS rescore
  62. 2026-06-07 10:57 UTCGHSA enrichment
  63. 2026-06-06 13:47 UTCEPSS rescore
  64. 2026-06-06 13:47 UTCEPSS rescore
  65. 2026-06-06 13:47 UTCEPSS rescore
  66. 2026-06-05 22:47 UTCEPSS rescore
  67. 2026-06-05 06:10 UTCEPSS rescore
  68. 2026-06-05 06:10 UTCEPSS rescore
  69. 2026-06-04 13:12 UTCEPSS rescore
  70. 2026-06-04 13:12 UTCEPSS rescore
  71. 2026-06-04 13:12 UTCEPSS rescore
  72. 2026-06-02 20:13 UTCEPSS rescore
  73. 2026-06-02 20:13 UTCEPSS rescore
  74. 2026-06-01 13:51 UTCEPSS rescore
  75. 2026-06-01 13:51 UTCEPSS rescore

Frequently asked(5)

What is CVE-2026-23435?
CVE-2026-23435 is a medium vulnerability published on April 3, 2026. In the Linux kernel, the following vulnerability has been resolved: perf/x86: Move event pointer setup earlier in x86pmuenable() A production AMD EPYC system crashed with a NULL pointer dereference in the PMU NMI handler: BUG: kernel NULL pointer dereference, address: 0000000000000198 RIP:…
When was CVE-2026-23435 disclosed?
CVE-2026-23435 was first published in the National Vulnerability Database on April 3, 2026, with the most recent update on July 21, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-23435 actively exploited?
CVE-2026-23435 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 97.8% of all scored CVEs.
What is the CVSS score of CVE-2026-23435?
CVE-2026-23435 has a CVSS v3 base score of 5.5 (NVD).
How do I remediate CVE-2026-23435?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-23435, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2026-23435

Explore →

Is Your Infrastructure Affected by CVE-2026-23435?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.