Cloudanix VulnDB

CVE-2026-53234

High · 7.8

CVSS

7.8

EPSS

0.2%

Published

Jun 25, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

Some Linux systems using IBM EMAC network hardware can crash when the network device is removed or reconfigured because the system may keep using driver resources after they have been released.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a Linux kernel use-after-free flaw in the IBM EMAC Ethernet driver during network device removal. The vulnerable driver defers unregister_netdev() until devres cleanup, after emac_remove() has already torn down hardware-related resources such as work queues, MAL registration, and driver-private pointers. During that window, the network stack may still invoke handlers such as emac_irq() or emac_poll(), causing the kernel to access freed or invalid driver resources. The most likely technical outcome is a kernel crash or denial of service; in theory, a reliable use-after-free primitive in kernel context could contribute to privilege escalation, but exploitation appears highly environment-specific and no public exploit maturity is currently indicated.

Why it matters to the business

Systems using affected Linux kernels with IBM EMAC hardware may be exposed to host instability during device removal, driver unbind, hotplug-like lifecycle events, shutdown, or network reconfiguration. The operational impact is most likely unexpected kernel panics, network outages, or server downtime. This issue is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, and has a low EPSS score, so broad internet-scale exploitation is unlikely; however, embedded, appliance, or legacy PowerPC/IBM EMAC deployments may have higher operational sensitivity because network-driver crashes can interrupt critical services.

How an attack unfolds

An attacker would need a path to trigger or influence removal of an affected IBM EMAC network device while the interface is still capable of receiving packets, processing interrupts, or running NAPI/poll handlers. In a plausible attack, a local privileged attacker or an attacker with control over device-management operations unbinds or removes the EMAC platform device while generating network activity against the interface. Because unregister_netdev() is delayed until after emac_remove() tears down hardware resources, the network stack can still call into EMAC driver paths that reference freed or detached resources. This race can lead to a use-after-free condition in kernel context, typically resulting in a crash. Remote-only exploitation is not expected unless another management path allows an unauthenticated or low-privileged actor to trigger device removal or driver lifecycle transitions.

How to fix it

Apply a Linux kernel update that includes the IBM EMAC driver fix replacing devm_register_netdev() with manual register_netdev() and calling unregister_netdev() at the start of emac_remove() before hardware teardown. If vendor kernel packages are used, update through the relevant distribution or appliance vendor once the fix is available. If source-based kernels are maintained internally, backport the upstream driver change for drivers/net/ethernet/ibm/emac. Where immediate patching is not possible, reduce exposure by avoiding unnecessary driver unbind/removal operations, limiting local administrative access, restricting automated hardware reconfiguration workflows, and scheduling controlled maintenance windows for shutdowns or network-device lifecycle operations on systems using IBM EMAC hardware.

How to confirm the fix worked

Confirm that the running kernel package or source tree contains the corrected IBM EMAC removal ordering: register_netdev() is used instead of devm_register_netdev(), and unregister_netdev() is called early in emac_remove() before hardware teardown. Validate that affected systems are actually using the IBM EMAC driver by checking loaded modules, kernel configuration, device tree/platform devices, and network driver bindings. After patching, perform controlled interface removal/unbind or reboot testing while generating benign network traffic and confirm there are no kernel warnings, use-after-free reports, KASAN reports, oopses, or panics involving EMAC, MAL, NAPI, or netdev unregister paths.

Typical attack path

  1. Identify a Linux system running a vulnerable kernel with the IBM EMAC Ethernet driver in use.
  2. Obtain local administrative access or access to a device-management path capable of unbinding, removing, or reinitializing the EMAC device.
  3. Generate network traffic to the affected interface to increase the chance that receive, interrupt, or poll handlers are active.
  4. Trigger device removal, driver unbind, platform-device teardown, shutdown, or equivalent lifecycle event.
  5. Race the deferred network-device unregister operation against hardware teardown so the network stack calls EMAC handlers after resources have been released.
  6. Cause a kernel fault, panic, or potentially gain a kernel-memory corruption primitive in highly controlled circumstances.

How to detect it

Look for evidence of kernel crashes, warnings, or memory-safety reports occurring around network-device removal, driver unbind, reboot, shutdown, or hardware reconfiguration. Relevant sources include kernel ring buffer output, system journal logs, syslog/kern.log/messages, crash dumps, vmcores, KASAN reports, pstore/ramoops, and audit or shell history showing writes to sysfs driver bind/unbind paths. Focus on events referencing the IBM EMAC driver, MAL, NAPI polling, interrupt handlers, unregister_netdev(), or use-after-free conditions. Because no public exploitation indicators are known and exploitation is race- and hardware-specific, detection should emphasize behavioral correlation: EMAC driver lifecycle event followed immediately by kernel oops, panic, general protection fault, NULL pointer dereference, slab use-after-free, or network stack fault.

  • emac_remove
  • emac_irq
  • emac_poll
  • devm_register_netdev
  • unregister_netdev
  • register_netdev
  • ibm_emac
  • IBM EMAC
  • drivers/net/ethernet/ibm/emac
  • MAL
  • unregister_netdev: waiting for
  • BUG: KASAN: use-after-free
  • BUG: unable to handle kernel paging request
  • kernel BUG at drivers/net/ethernet/ibm/emac
  • Oops:
  • general protection fault
  • NETDEV WATCHDOG
  • /sys/bus/platform/drivers/*/unbind
  • /sys/bus/platform/drivers/*/bind

What your security team should do

  • Inventory Linux systems and embedded appliances that use IBM EMAC Ethernet hardware or the IBM EMAC kernel driver.
  • Prioritize patching for systems where the affected driver is active, especially appliances, embedded platforms, or systems with high availability requirements.
  • Restrict local administrative access and device-management capabilities that can trigger driver unbind, platform-device removal, or network hardware reconfiguration.
  • Monitor kernel logs for EMAC-related oopses, KASAN use-after-free reports, NETDEV unregister anomalies, and crashes during shutdown, reboot, interface removal, or driver unbind operations.
  • For internally maintained kernels, backport the upstream IBM EMAC driver fix and regression-test network-device removal under traffic load.
  • Treat any unexplained EMAC-related kernel crash after device-removal activity as a potential exploitation or reliability event and preserve logs, vmcores, and command history for analysis.

The record

In the Linux kernel, the following vulnerability has been resolved: net: ibm: emac: Fix use-after-free during device removal The driver was using devm_register_netdev() which causes unregister_netdev() to be deferred until the devres cleanup phase, which runs after emac_remove() returns. This creates a use-after-free window where: 1. emac_remove() is called, which tears down hardware (cancels work, detaches modules, unregisters from MAL) 2. emac_remove() returns 3. devres cleanup runs and finally calls unregister_netdev() During step 3, the network stack might still process packets, triggering emac_irq(), emac_poll(), or other handlers that access now-freed hardware resources (dev->emacp, dev->mal, etc.). Fix this by replacing devm_register_netdev() with manual register_netdev() and calling unregister_netdev() at the beginning of emac_remove(), before any hardware teardown. This ensures the network device is fully stopped and unregistered before hardware resources are released. The change is safe because: - dev->ndev is assigned very early in probe (before any error paths that could bypass emac_remove) - platform_set_drvdata() is only called after successful registration, so emac_remove() only runs for fully registered devices - unregister_netdev() is idempotent and safe to call on any registered device

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities