CVE-2022-49696

Source
https://cve.org/CVERecord?id=CVE-2022-49696
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49696.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2022-49696
Downstream
Published
2025-02-26T02:24:18.198Z
Modified
2026-03-20T12:24:44.884677Z
Severity
  • 7.8 (High) CVSS_V3 - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
Summary
tipc: fix use-after-free Read in tipc_named_reinit
Details

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

tipc: fix use-after-free Read in tipcnamedreinit

syzbot found the following issue on:

BUG: KASAN: use-after-free in tipcnamedreinit+0x94f/0x9b0 net/tipc/name_distr.c:413 Read of size 8 at addr ffff88805299a000 by task kworker/1:9/23764

CPU: 1 PID: 23764 Comm: kworker/1:9 Not tainted 5.18.0-rc4-syzkaller-00878-g17d49e6e8012 #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: events tipcnetfinalize_work Call Trace: <TASK> __dumpstack lib/dumpstack.c:88 [inline] dumpstacklvl+0xcd/0x134 lib/dumpstack.c:106 printaddressdescription.constprop.0.cold+0xeb/0x495 mm/kasan/report.c:313 printreport mm/kasan/report.c:429 [inline] kasanreport.cold+0xf4/0x1c6 mm/kasan/report.c:491 tipcnamedreinit+0x94f/0x9b0 net/tipc/namedistr.c:413 tipcnetfinalize+0x234/0x3d0 net/tipc/net.c:138 processonework+0x996/0x1610 kernel/workqueue.c:2289 workerthread+0x665/0x1080 kernel/workqueue.c:2436 kthread+0x2e9/0x3a0 kernel/kthread.c:376 retfromfork+0x1f/0x30 arch/x86/entry/entry64.S:298 </TASK>

[...]

In the commit d966ddcc3821 ("tipc: fix a deadlock when flushing scheduled work"), the cancelworksync() function just to make sure ONLY the work tipcnetfinalizework() is executing/pending on any CPU completed before tipc namespace is destroyed through tipcexit_net(). But this function is not guaranteed the work is the last queued. So, the destroyed instance may be accessed in the work which will try to enqueue later.

In order to completely fix, we re-order the calling of cancelworksync() to make sure the work tipcnetfinalizework() was last queued and it must be completed by calling cancelwork_sync().

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49696.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
d966ddcc38217a6110a6a0ff37ad2dee7d42e23e
Fixed
361c5521c1e49843b710f455cae3c0a50b714323
Fixed
cd7789e659e84f137631dc1f5ec8d794f2700e6c
Fixed
8b246ddd394d7d9640816611693b0096b998e27a
Fixed
911600bf5a5e84bfda4d33ee32acc75ecf6159f0
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Last affected
fdc1416c21992ea7b4737123c8aa8c7424a1a540
Last affected
1716c9bd567bc6cdb3d18be78f36941a306b708d

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49696.json"