Skip to main content

Linux Kernel CVE-2026-89738

| EUVDEUVD-2026-76650 HIGH
2026-09-11 Linux GHSA-3f57-g7j5-hj3q
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

AC:H reflects mandatory hardware specificity (AT91 board + polled-VBUS config); all other metrics match the described local low-privilege race scenario.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Metadata Corrected
Sep 13, 2026 - 10:40 vuln.today
tag: Information Disclosure replaced by Use After Free
Analysis Generated
Sep 13, 2026 - 10:13 vuln.today
CVSS changed
Sep 13, 2026 - 07:22 NVD
7.8 (HIGH)
Patch available
Sep 11, 2026 - 21:18 EUVD
CVE Published
Sep 11, 2026 - 19:46 cve.org
UNKNOWN (no severity yet)
CVE Published
Sep 11, 2026 - 19:46 cve.org
HIGH 7.8

DescriptionCVE.org

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

usb: gadget: at91_udc: drain polled-VBUS timer/work before udc is freed

In polled-VBUS mode (board.vbus_pin && board.vbus_polled), probe arms a self-restarting cycle: at91_vbus_timer() schedules vbus_timer_work, and at91_vbus_timer_work() calls at91_vbus_update() and re-arms the timer via mod_timer(). Both recover the same udc through container_of and dereference it on every iteration.

Neither teardown path cancels this cycle. udc is devm-allocated, so it is freed after at91udc_remove() returns, and is likewise freed when probe fails and devres runs. A timer callback or work item that is pending or running at either point dereferences the freed udc.

Add at91_udc_shutdown_vbus_timer() and call it from at91udc_remove() and from the usb_add_gadget_udc() failure path in probe; the remaining probe error paths fail before the timer is armed. timer_shutdown_sync() waits for a running callback and clears timer->function, which makes the work handler's mod_timer() a permanent no-op; cancel_work_sync() then drains any pending or running work whose re-arm attempt now does nothing. The timer must be shut down first, since cancelling the work alone would let the timer re-queue it. The guard mirrors probe: in IRQ mode the timer and work_struct are never initialized.

This does not require a fault; a normal driver unbind can interleave with an already queued work item.

This issue was found by an in-house static analysis tool.

AnalysisAI

Use-after-free in the Linux kernel's at91_udc USB gadget driver allows a local low-privileged attacker to dereference freed kernel memory during driver teardown, potentially achieving kernel code execution. The vulnerability affects systems running AT91/SAM series Atmel ARM microcontrollers in polled-VBUS mode, where a self-restarting timer/work cycle is never cancelled before the devm-allocated udc structure is freed. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
technique details hidden
Delivery
technique details hidden
Exploit
technique details hidden
Execution
technique details hidden
Persist
technique details hidden
Impact
technique details hidden

Vulnerability AssessmentAI

Exploitation Exploitation requires all of the following: (1) the target system must be running Linux on hardware that incorporates an Atmel AT91/SAM USB Device Controller with the at91_udc gadget driver compiled and loaded; (2) the board must be configured with both vbus_pin and vbus_polled set (polled-VBUS mode - IRQ-mode configurations are unaffected because the timer and work_struct are never initialized on that path); (3) the attacker must hold PR:L local access sufficient to trigger driver unbind, either via sysfs or by initiating a normal shutdown sequence. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The NVD CVSS vector AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H scores this at 7.8, which overstates the ease of exploitation because it ignores the extreme hardware specificity: the at91_udc driver is only compiled and active on systems with AT91/SAM Atmel ARM embedded boards running in polled-VBUS configuration, a niche deployment that rules out the vast majority of Linux installations. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario Full exploit scenario with step-by-step reproduction available after sign-in.
Remediation Apply the vendor-released patch targeting your stable series: upgrade to Linux 6.12.109, 6.18.50, 7.2.4, or build from 7.3-rc1. … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours, identify and inventory all systems running Linux on AT91/SAM Atmel ARM microcontrollers configured for USB polled-VBUS mode. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-89738 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy