CVE-2026-23435 Vulnerability Analysis & Exploit Details

CVE-2026-23435
Vulnerability Scoring

5.5
/10
Significant Risk

Security assessments indicate that CVE-2026-23435 presents a notable risk, potentially requiring prompt mitigation.

Attack Complexity Details

  • Attack Complexity: Low
    Exploits can be performed without significant complexity or special conditions.
  • Attack Vector: Local
    Vulnerability requires local system access.
  • Privileges Required: Low
    Some privileges are necessary to exploit the vulnerability.
  • Scope: Unchanged
    Exploit remains within the originally vulnerable component.
  • User Interaction: None
    No user interaction is necessary for exploitation.

CVE-2026-23435 Details

Status: Analyzed

Last updated: 🕣 23 Apr 2026, 20:59 UTC
Originally published on: 🕓 03 Apr 2026, 16:16 UTC

Time between publication and last update: 20 days

CVSS Release: version 3

CVSS3 Source

nvd@nist.gov

CVSS3 Type

Primary

CVSS3 Vector

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

CVE-2026-23435 Vulnerability Summary

CVE-2026-23435: 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: <NMI> 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: 1. 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). 2. 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. 3. 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. 4. 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.

Assessing the Risk of CVE-2026-23435

Access Complexity Graph

The exploitability of CVE-2026-23435 depends on two key factors: attack complexity (the level of effort required to execute an exploit) and privileges required (the access level an attacker needs).

Exploitability Analysis for CVE-2026-23435

CVE-2026-23435 presents an accessible attack vector with minimal effort required. Restricting access controls and implementing security updates are critical to reducing exploitation risks.

Understanding AC and PR

A lower complexity and fewer privilege requirements make exploitation easier. Security teams should evaluate these aspects to determine the urgency of mitigation strategies, such as patch management and access control policies.

Attack Complexity (AC) measures the difficulty in executing an exploit. A high AC means that specific conditions must be met, making an attack more challenging, while a low AC means the vulnerability can be exploited with minimal effort.

Privileges Required (PR) determine the level of system access necessary for an attack. Vulnerabilities requiring no privileges are more accessible to attackers, whereas high privilege requirements limit exploitation to authorized users with elevated access.

CVSS Score Breakdown Chart

Above is the CVSS Sub-score Breakdown for CVE-2026-23435, illustrating how Base, Impact, and Exploitability factors combine to form the overall severity rating. A higher sub-score typically indicates a more severe or easier-to-exploit vulnerability.

CIA Impact Analysis

Below is the Impact Analysis for CVE-2026-23435, showing how Confidentiality, Integrity, and Availability might be affected if the vulnerability is exploited. Higher values usually signal greater potential damage.

  • Confidentiality: None
    CVE-2026-23435 has no significant impact on data confidentiality.
  • Integrity: None
    CVE-2026-23435 poses no threat to data integrity.
  • Availability: High
    CVE-2026-23435 can disrupt system operations, potentially causing complete denial of service (DoS).

CVE-2026-23435 References

External References

CWE Common Weakness Enumeration

CWE-476

Vulnerable Configurations

  • cpe:2.3:o:linux:linux_kernel:6.17.13:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17.13:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc3:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc3:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc4:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc4:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc5:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc5:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc6:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc6:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.17:rc7:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.17:rc7:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.2:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.2:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.3:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.3:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.4:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.4:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.5:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.5:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.6:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.6:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.7:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.7:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.8:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.8:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.9:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.9:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.10:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.10:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.11:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.11:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.13:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.13:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.14:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.14:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.16:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.16:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.17:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.17:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.18:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.18:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.18.19:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.18.19:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.1:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.1:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.3:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.3:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.4:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.4:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.6:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.6:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.7:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.7:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.8:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.8:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19.9:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19.9:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:6.19:-:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:6.19:-:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*

Protect Your Infrastructure against CVE-2026-23435: Combat Critical CVE Threats

Stay updated with real-time CVE vulnerabilities and take action to secure your systems. Enhance your cybersecurity posture with the latest threat intelligence and mitigation techniques. Develop the skills necessary to defend against CVEs and secure critical infrastructures. Join the top cybersecurity professionals safeguarding today's infrastructures.

Other 5 Recently Published CVEs Vulnerabilities

  • CVE-2026-8288 – A vulnerability was determined in Open5GS up to 2.7.7. This affects the function gsm_handle_pdu_session_modification_qos_flow_descriptions of the f...
  • CVE-2025-9973 – Due to not validating the organization context when executing adaptive authentication flows, the WSO2 Identity Server allows adaptive authenticatio...
  • CVE-2025-10470 – The Magic Link authentication flow accepts multiple invalid authentication requests without adequate rate limiting or resource control, leading to ...
  • CVE-2026-6956 – ATutor is vulnerable to Reflected XSS in /install/install.php endpoint. An attacker can provide a specially crafted URL that, when opened, results ...
  • CVE-2026-6909 – ATutor is vulnerable to Reflected XSS in /install/upgrade.php endpoint. An attacker can provide a specially crafted URL that, when opened, results ...