CVE-2026-98194
Executive Summary
CVE-2026-98194 is a use-after-free (UAF) vulnerability in the Linux kernel's libertas_tf Wi-Fi driver, occurring in lbtf_free_adapter() during adapter teardown. The flaw arises from an incorrect ordering of operations: command buffers are freed before the command timer callback is synchronized, allowing an in-flight command_timer_fn to dereference freed memory via priv->cur_cmd->cmdbuf. Systems using the libertas_tf driver (typically older Marvell Libertas-based USB/SDIO Wi-Fi hardware) are affected; impact ranges from kernel crash (DoS) to potential privilege escalation depending on memory layout and attacker control.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability resides in the driver's adapter cleanup path. In lbtf_free_adapter(), the teardown sequence calls lbtf_free_cmd_buffer() first, which releases the command buffer array, and only subsequently invokes timer_delete_sync() to wait for the command timer callback to finish. If the timer callback (command_timer_fn) is already executing when lbtf_free_cmd_buffer() runs, the callback will continue to access priv->cur_cmd->cmdbuf, which now references freed memory. This constitutes a classic use-after-free: the memory backing cur_cmd->cmdbuf is released while a concurrent execution context still holds a pointer to it.
The attack surface is a race condition. The window is between the moment lbtf_free_cmd_buffer() frees the array and the moment timer_delete_sync() would normally quiesce the callback. Because the two operations were ordered incorrectly, no synchronization protects the callback from observing freed memory. The described fix is straightforward: run timer_delete_sync() before lbtf_free_cmd_buffer() so that any in-flight callback completes before buffers are relinquished.
Root cause class: CWE-416 (Use After Free), driven by a time-of-check/time-of-use style ordering error during resource teardown. No cryptographic weakness, injection, or authentication bypass is involved. The bug is a lifecycle/synchronization defect.
Reachability depends on the timer callback being active concurrently with adapter free. This is most plausible during device removal, module unload, or a driver reset triggered while a command is outstanding. Triggering the race from an unprivileged context requires either hardware interaction (device detach) or the ability to induce driver teardown, which typically implies local access.
Exploitation Scenarios
No public PoC is available; the chain below is inferred from the vulnerability class and the NVD description. Only identifiers present in the description (lbtf_free_adapter, lbtf_free_cmd_buffer, timer_delete_sync, command_timer_fn, priv->cur_cmd->cmdbuf) are referenced.
Reconnaissance / target identification. An attacker identifies a host whose kernel includes the
libertas_tfdriver and has such a device present and active. Local presence of the relevant hardware or module is the precondition. On shared or multi-tenant systems with device passthrough, the attacker may not need to be the device owner.Triggering the flaw class. The attacker engineers a state in which the command timer callback (
command_timer_fn) is still running at the precise momentlbtf_free_adapter()executes its teardown. This is a race condition: the attacker attempts to overlap an outstanding command (so the timer fires) with an adapter-free operation (device removal, unbind, or module unload). The exact primitive used to widen the race window is not specified in the available data and must not be assumed.Execution at the vulnerability-class level. Because
lbtf_free_cmd_buffer()releases the command array beforetimer_delete_sync()waits, the in-flight callback dereferencespriv->cur_cmd->cmdbufafter that memory is freed. The consequence is a use-after-free read (and potentially write) on the freed buffer. This is the dangerous operation; whether it yields a controllable corruption depends on the allocator state and what reclaims the freed slab.Post-exploitation impact. A reliable crash (kernel oops/panic) is the baseline outcome and constitutes denial of service. In a more favorable heap layout, the freed buffer could be reclaimed with attacker-influenced data, converting the UAF into memory corruption that may support privilege escalation in kernel context. No exploit code, gadget, or controlled-reclaim technique is documented for this CVE; escalation is theoretical based on the UAF class and requires substantial additional work. There is no remote, unauthenticated path described.
Impact Assessment
- Confidentiality: High potential (freed memory may hold or be replaced with sensitive kernel data).
- Integrity: High potential (UAF write into reclaimed memory could corrupt kernel state).
- Availability: High — the most readily achievable outcome is a kernel crash, causing system instability or reboot.
- Attack Vector: Local — requires interaction with driver teardown on a system using libertas_tf.
- Attack Complexity: High — the exploit depends on winning a race condition and on favorable allocator layout.
- Privileges Required: Low — the race is plausibly reachable by a local user with device access.
- User Interaction: None required beyond the triggering action.
- Scope: Unchanged — impact remains within the kernel security context.
Blast radius is limited to hosts using the libertas_tf driver, largely legacy/embedded and older Wi-Fi hardware. Enterprise exposure is concentrated in long-lived systems and specialized appliances. No CVSS score is assigned by the source (N/A); the vector above is a class-based estimate and must not be treated as vendor-scored.
Detection Guidance
Sigma Rule
title: Linux Kernel libertas_tf UAF Teardown - Module Unload or Adapter Free
id: 7f3a9c21-5b8e-4d0a-9c11-libertas-tf-uaf
status: experimental
description: Detects attempts to unload or manipulate the libertas_tf module that could race with adapter teardown (CVE-2026-98194).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-98194
author: valtersit.com
logsource:
product: linux
service: auditd
detection:
selection_mod:
type: 'SYSCALL'
syscall: 'delete_module'
a0|contains: 'libertas_tf'
selection_kmem:
type: 'SYSCALL'
syscall: 'init_module'
exe|endswith: '/modprobe'
condition: selection_mod or selection_kmem
falsepositives:
- Legitimate administrative module reload during driver updates
level: medium
tags:
- attack.t1068
YARA Rule
rule CVE_2026_98194_libertas_tf_uaf
{
meta:
description = "Detects libertas_tf driver binaries referencing vulnerable teardown symbols (CVE-2026-98194)"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-98194"
date = "2026-01-01"
strings:
$sym1 = "lbtf_free_adapter"
$sym2 = "lbtf_free_cmd_buffer"
$sym3 = "command_timer_fn"
$sym4 = "timer_delete_sync"
$name = "libertas_tf"
condition:
($name and $sym1 and $sym2) or (2 of ($sym*))
}
Suricata IDS Rule
Note: This is a local kernel race condition with no network protocol signature. The rule below provides weak heuristic coverage for libertas_tf-related traffic anomalies and is included for completeness; it is not a reliable detection.
alert ip any any -> any any (msg:"CVE-2026-98194 Possible libertas_tf driver activity (UAF teardown)"; flow:to_server; byte_test:1,>,0,0; threshold:type limit, track by_src, count 1, seconds 60; sid:202698194; rev:1; classtype:attempted-admin;)
Elastic Detection
process where event.type == "start" and
(process.name == "rmmod" or process.name == "modprobe") and
process.args : "libertas_tf"
Splunk SPL Query
index=linux sourcetype=auditd (syscall=delete_module OR syscall=init_module)
| search a0="libertas_tf" OR exe="*/modprobe" OR exe="*/rmmod"
| stats count min(_time) as first_seen max(_time) as last_seen by host, user, exe, a0
| where count > 0
Wazuh OSSEC Rule
<group name="linux,kernel,cve-2026-98194,">
<rule id="202698194" level="8">
<decoded_as>auditd</decoded_as>
<field name="audit.key">module_change</field>
<match>libertas_tf</match>
<description>CVE-2026-98194: libertas_tf module manipulated; possible race with lbtf_free_adapter (UAF).</description>
<mitre>
<id>T1068</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
Immediate mitigations.
- If the libertas_tf driver is not required, blacklist it (
/etc/modprobe.d/) to prevent load and reduce the attack surface. - Restrict local users from unbinding or unloading kernel modules (limit CAP_SYS_MODULE); constrain device access via permissions/cgroups so only trusted operators can trigger adapter teardown.
- Avoid routine module reload or device hot-unplug cycles while commands are in flight; serialize teardown operations administratively where possible.
- Monitor kernel logs for oops/BUG/UAF splats referencing
lbtf_free_adapter,lbtf_free_cmd_buffer, orcommand_timer_fn.
- If the libertas_tf driver is not required, blacklist it (
Patch / upgrade steps.
- No vendor patch is currently available from tracked sources. The fix described in the NVD entry is to reorder teardown so
timer_delete_sync()is called beforelbtf_free_cmd_buffer()inlbtf_free_adapter(). - Track the upstream Linux kernel stable trees and the mainline commit for this CVE; apply the kernel update once released.
- Rebuild or update only from trusted distribution kernel packages; verify signatures before deployment.
- No vendor patch is currently available from tracked sources. The fix described in the NVD entry is to reorder teardown so
Long-term hardening.
- Enable kernel mitigations for use-after-free classes (e.g., hardened allocators, KASAN in test environments to catch regressions).
- Adopt signed module enforcement and least-privilege module loading policies.
- Maintain an inventory of systems using legacy Wi-Fi drivers and deprecate unsupported hardware.
- Integrate kernel oops/UAF telemetry into SIEM for early detection of exploitation attempts.
References
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-98194
- Linux kernel source: drivers/net/wireless/marvell/libertas_tf (upstream fix discussion)
- CWE-416 Use After Free: https://cwe.mitre.org/data/definitions/416.html
- MITRE ATT&CK T1068 — Exploitation for Privilege Escalation: https://attack.mitre.org/techniques/T1068/
- CISA KEV catalog (current status): not listed — https://www.cisa.gov/known-exploited-vulnerabilities-catalog
No public PoC, exploit code, or Nuclei template was identified. No threat actor campaign or exploit-in-the-wild evidence is associated with this CVE at this time. EPSS has not been scored by FIRST.org.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.