7.8

CVE-2022-50220: usbnet: Fix linkwatch use-after-free on disconnect

Analyzed
AliasesUBUNTU-CVE-2022-50220DEBIAN-CVE-2022-50220
Published 18-06-2025Last modified 11-05-2026

Vulnerability summary

CVE-2022-50220 is a high (CVSS 7.8) Use After Free vulnerability in linux. EPSS estimates a 0.25% chance of exploitation in the next 30 days, higher than 15.9% of scored vulnerabilities.

Priority
Routine

Not severe (CVSS 7.8, local access); no exploitation reported by the 5 checked sources

Source freshness unavailable

How is this decided?
CVSS score
7.8/10
010
High · v3.1 (NVD)
EPSS score
0.25%
0%100%
Low · +0.01 pp in 30 days
KEVNot listedNot listed by any tracked catalog.
RansomwareNot flaggedNo ransomware use recorded.
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 7 · Related 7

Timeline

  1. 18-06-2025
    PublishedVulnerability first disclosed.
  2. 11-05-2026
    Last modifiedVulnerability information updated.

Description

In the Linux kernel, the following vulnerability has been resolved: usbnet: Fix linkwatch use-after-free on disconnect usbnet uses the work usbnet_deferred_kevent() to perform tasks which may sleep. On disconnect, completion of the work was originally awaited in ->ndo_stop(). But in 2003, that was moved to ->disconnect() by historic commit "[PATCH] USB: usbnet, prevent exotic rtnl deadlock": https://git.kernel.org/tglx/history/c/0f138bbfd83c The change was made because back then, the kernel's workqueue implementation did not allow waiting for a single work. One had to wait for completion of *all* work by calling flush_scheduled_work(), and that could deadlock when waiting for usbnet_deferred_kevent() with rtnl_mutex held in ->ndo_stop(). The commit solved one problem but created another: It causes a use-after-free in USB Ethernet drivers aqc111.c, asix_devices.c, ax88179_178a.c, ch9200.c and smsc75xx.c: * If the drivers receive a link change interrupt immediately before disconnect, they raise EVENT_LINK_RESET in their (non-sleepable) ->status() callback and schedule usbnet_deferred_kevent(). * usbnet_deferred_kevent() invokes the driver's ->link_reset() callback, which calls netif_carrier_{on,off}(). * That in turn schedules the work linkwatch_event(). Because usbnet_deferred_kevent() is awaited after unregister_netdev(), netif_carrier_{on,off}() may operate on an unregistered netdev and linkwatch_event() may run after free_netdev(), causing a use-after-free. In 2010, usbnet was changed to only wait for a single instance of usbnet_deferred_kevent() instead of *all* work by commit 23f333a2bfaf ("drivers/net: don't use flush_scheduled_work()"). Unfortunately the commit neglected to move the wait back to ->ndo_stop(). Rectify that omission at long last.

CVSS metrics

4 scores · 3 sources · 2 versions

EPSS trend

Probability

0.25%

Chance of exploitation in the next 30 days

Percentile

16%

Versus all other CVEs

30-day change

Increase +0.01 pp

From 0.24% on 04-10-2026

04-10-202603-11-2026

Known exploited

Compare KEV catalogs
CISA KEV

Not in the CISA KEV catalog.

ENISA CNW

Not in the ENISA CNW catalog.

CIRCL

Not in the CIRCL catalog.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

Affected systems

Version check

Known conditions: local access, low-privilege account, no user interaction (CVSS vector). Other conditions: not stated in public data.

Ubuntu111 products
  • linuxAll versions (No fix recorded) | < 4.15.0-197.208 | < 5.4.0-132.148 | < 5.15.0-53.59
  • linux-allwinner-5.19All versions (No fix recorded)
  • linux-awsAll versions (No fix recorded) | < 4.15.0-1143.155 | < 5.4.0-1089.97 | < 5.15.0-1023.27
  • linux-aws-5.0All versions (No fix recorded)
  • linux-aws-5.11All versions (No fix recorded)
Linux2 products
  • linux≥ 23f333a2bfafba80339315b724808982a9de57d9, < d2d6b530d89b0a912148018027386aa049f0a309 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < e2a521a7dcc463c5017b4426ca0804e151faeff7 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 7f77dcbc030c2faa6d8e8a594985eeb34018409e | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 8b4588b8b00b299be16a35be67b331d8fdba03f3 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 135199a2edd459d2b123144efcd7f9bcd95128e4 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < 635fd8953e4309b54ca6a81bed1d4a87668694f4 | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < d49bb8cf9bfaa06aa527eb30f1a52a071da2e32f | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < db3b738ae5f726204876f4303c49cfdf4311403f | ≥ 23f333a2bfafba80339315b724808982a9de57d9, < a69e617e533edddf3fa3123149900f36e0a6dc74 | 2.6.38
  • linux_kernel≥ 2.6.38, < 4.9.326 | ≥ 4.10, < 4.14.291 | ≥ 4.15, < 4.19.256 | ≥ 4.20, < 5.4.211 | ≥ 5.5, < 5.10.137 | ≥ 5.11, < 5.15.61 | ≥ 5.16, < 5.18.18 | ≥ 5.19, < 5.19.2
Debian1 product
  • linux< 6.0.2-1

3 vendors · 114 products

References

12 links
Show all 12 references