CVE-2026-43203
High · 7.5CVSS
7.5
EPSS
0.4%
Published
May 6, 2026
CISA due date
—
Cloudanix analysis
A flaw in a rarely used Linux network adapter driver can crash or corrupt a system if the device is removed while background driver work is still running.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- High
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This is a Linux kernel use-after-free in the ATM FORE Systems PCA-200E/SBA-200E network adapter driver. During device removal, the driver can free the fore200e device structure while transmit or receive tasklets are still pending or executing. If an interrupt schedules one of those tasklets during or after shutdown, the tasklet can dereference memory that has already been released. In kernel context, that can cause a crash, memory corruption, or potentially code execution depending on allocator state, timing, kernel hardening, and attacker control over reclaimed memory.
Why it matters to the business
Systems using the affected Linux kernel driver for FORE200E ATM adapters could be crashed or destabilized during device removal or driver shutdown, creating service outages for workloads that depend on those hosts. The issue is not currently listed in CISA KEV, has low EPSS at 0.00435 with a flat 30-day trend, and has no known public exploit maturity, so broad internet-scale exploitation is unlikely; however, kernel memory corruption vulnerabilities should still be prioritized on exposed, high-availability, or appliance-like systems where an outage has operational impact.
How an attack unfolds
An attacker would need conditions that cause the fore200e driver to handle traffic or interrupts while the adapter is being removed, reset, or the driver is being unloaded. The vulnerable sequence occurs when shutdown frees the fore200e structure before pending tx_tasklet or rx_tasklet work has been fully canceled. If an interrupt schedules a tasklet around the same time, the tasklet later runs and accesses the freed structure in fore200e_tx_tasklet() or fore200e_rx_tasklet(). In the most common outcome, this produces a kernel oops, panic, or host instability. More advanced exploitation would require winning a race and shaping kernel heap reuse so the freed object is replaced with attacker-influenced data, which is significantly harder and depends on kernel configuration and mitigations.
How to fix it
Upgrade to a Linux kernel build that includes the fore200e shutdown fix, which calls tasklet_kill() after fore200e_reset() and before freeing the device structure when the driver has reached the IRQ-initialized state. No exact fixed package versions were provided in the input, so use the fixed kernel versions from the relevant Linux distribution, vendor advisory, or stable kernel branch. If the hardware/driver is not required, disable or remove support for the FORE200E ATM driver, blacklist the module if it is modular, and avoid loading it on production systems. As compensating controls, restrict local ability to unload drivers or remove devices, limit physical/device-management access, and avoid hot-removal or driver reload operations on affected kernels where possible.
How to confirm the fix worked
Confirm that the running kernel package is at or above the vendor-fixed release containing the fore200e tasklet cancellation patch. Check whether the driver is present or loaded using kernel module inventory tools such as lsmod, modinfo, or distribution package manifests, and verify whether CONFIG_ATM_FORE200E is enabled in the kernel configuration. On systems with the hardware, validate that driver unload, device removal, reboot, and network traffic during shutdown no longer produce kernel oops, panic, KASAN, or use-after-free messages involving fore200e tasklet functions. For custom kernels, inspect the source or patch set and verify that fore200e_shutdown() kills the transmit and receive tasklets after reset and before freeing the fore200e object.
Typical attack path
- Identify a Linux system using the ATM FORE200E driver or hardware support.
- Create or wait for a condition where the adapter/driver is being removed, reset, shut down, or unloaded.
- Generate network activity or interrupt conditions that cause fore200e_interrupt() to schedule transmit or receive tasklets.
- Race the shutdown path so the fore200e structure is freed while a tasklet is still pending or executing.
- Trigger fore200e_tx_tasklet() or fore200e_rx_tasklet() to dereference the freed structure.
- Cause kernel memory corruption, a kernel oops/panic, denial of service, or potentially gain further control if heap reuse can be manipulated.
How to detect it
Review kernel logs and crash artifacts for evidence of a race during FORE200E driver shutdown or device removal. Useful sources include dmesg, journald/kern.log, /var/log/messages, /var/log/kern.log, persistent pstore logs, kdump/vmcore output, KASAN reports, and EDR telemetry that captures kernel panics or module load/unload events. Look for oops or panic traces that include fore200e_tx_tasklet(), fore200e_rx_tasklet(), fore200e_interrupt(), fore200e_shutdown(), tasklet execution, or use-after-free diagnostics. Also correlate any crash with recent module unload, PCI device removal, reboot/shutdown, hotplug activity, or network activity on FORE200E ATM interfaces. There are no known public exploit indicators, so detection is primarily crash-forensic and exposure-based rather than signature-based.
- fore200e_tx_tasklet
- fore200e_rx_tasklet
- fore200e_interrupt
- fore200e_shutdown
- fore200e_pca_remove_one
- fore200e_reset
- BUG: KASAN: use-after-free
- use-after-free in fore200e
- general protection fault
- Unable to handle kernel paging request
- kernel BUG at drivers/atm/fore200e
- drivers/atm/fore200e.c
- fore_200e
- /lib/modules/*/kernel/drivers/atm/fore_200e.ko
- CONFIG_ATM_FORE200E
What your security team should do
- Prioritize patching systems that actually include or load the FORE200E ATM driver, especially network appliances, telecom systems, legacy infrastructure, and high-availability hosts.
- If the driver is unused, disable it in kernel configuration or blacklist the module to remove the vulnerable code path.
- Inventory kernels for CONFIG_ATM_FORE200E and the fore_200e/fore200e driver rather than treating all Linux hosts as equally exposed.
- Monitor kernel logs for crashes, KASAN reports, general protection faults, or oops traces referencing fore200e_tx_tasklet(), fore200e_rx_tasklet(), fore200e_interrupt(), or fore200e_shutdown().
- Restrict administrative actions that unload kernel modules or remove devices, because exploitation depends on driver shutdown/removal timing.
- Track distribution advisories for exact fixed kernel package versions and include the fix in regular kernel update baselines.
- Because this issue is not KEV-listed, not associated with ransomware, and has low EPSS, prioritize based on actual driver exposure and business criticality rather than emergency fleet-wide action.
The record
In the Linux kernel, the following vulnerability has been resolved: atm: fore200e: fix use-after-free in tasklets during device removal When the PCA-200E or SBA-200E adapter is being detached, the fore200e is deallocated. However, the tx_tasklet or rx_tasklet may still be running or pending, leading to use-after-free bug when the already freed fore200e is accessed again in fore200e_tx_tasklet() or fore200e_rx_tasklet(). One of the race conditions can occur as follows: CPU 0 (cleanup) | CPU 1 (tasklet) fore200e_pca_remove_one() | fore200e_interrupt() fore200e_shutdown() | tasklet_schedule() kfree(fore200e) | fore200e_tx_tasklet() | fore200e-> // UAF Fix this by ensuring tx_tasklet or rx_tasklet is properly canceled before the fore200e is released. Add tasklet_kill() in fore200e_shutdown() to synchronize with any pending or running tasklets. Moreover, since fore200e_reset() could prevent further interrupts or data transfers, the tasklet_kill() should be placed after fore200e_reset() to prevent the tasklet from being rescheduled in fore200e_interrupt(). Finally, it only needs to do tasklet_kill() when the fore200e state is greater than or equal to FORE200E_STATE_IRQ, since tasklets are uninitialized in earlier states. In a word, the tasklet_kill() should be placed in the FORE200E_STATE_IRQ branch within the switch...case structure. This bug was identified through static analysis.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119338 Tesseract is an open source OCR engine. CWE-416
- CVE-2026-119332 Ladybird is a truly independent web browser. CWE-416
- CVE-2026-119116 A use-after-free and double-free issue in the SetClient command handler of the… CWE-416
- CVE-2026-119378 SQLite before 3.54.0 contains a use-after-free vulnerability in the R-Tree extension that… CWE-416
- CVE-2026-119372 SQLite before 3.54.0 built with FTS3/FTS4 and SQLITE_ENABLE_FTS3_PARENTHESIS contains a… CWE-416
- CVE-2026-65586 Software installed and run as a non-privileged user may conduct improper GPU system calls… CWE-416
- CVE-2026-15466 Software installed and run as a non-privileged user may conduct improper GPU system calls… CWE-416
- CVE-2026-76031 Use after free in Input in Google Chrome prior to 156.0.8078.79 allowed a remote attacker… CWE-416