[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024082222-CVE-2022-48931-ec5b@gregkh>
Date: Thu, 22 Aug 2024 11:31:32 +0800
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2022-48931: configfs: fix a race in configfs_{,un}register_subsystem()
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
configfs: fix a race in configfs_{,un}register_subsystem()
When configfs_register_subsystem() or configfs_unregister_subsystem()
is executing link_group() or unlink_group(),
it is possible that two processes add or delete list concurrently.
Some unfortunate interleavings of them can cause kernel panic.
One of cases is:
A --> B --> C --> D
A <-- B <-- C <-- D
delete list_head *B | delete list_head *C
--------------------------------|-----------------------------------
configfs_unregister_subsystem | configfs_unregister_subsystem
unlink_group | unlink_group
unlink_obj | unlink_obj
list_del_init | list_del_init
__list_del_entry | __list_del_entry
__list_del | __list_del
// next == C |
next->prev = prev |
| next->prev = prev
prev->next = next |
| // prev == B
| prev->next = next
Fix this by adding mutex when calling link_group() or unlink_group(),
but parent configfs_subsystem is NULL when config_item is root.
So I create a mutex configfs_subsystem_mutex.
The Linux kernel CVE team has assigned CVE-2022-48931 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 4.9.304 with commit 40805099af11
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 4.14.269 with commit d1654de19d42
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 4.19.232 with commit a37024f7757c
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 5.4.182 with commit b7e2b91fcb5c
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 5.10.103 with commit a7ab53d3c27d
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 5.15.26 with commit e7a66dd26877
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 5.16.12 with commit 3aadfd46858b
Issue introduced in 2.6.16 with commit 7063fbf22611 and fixed in 5.17 with commit 84ec758fb2da
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2022-48931
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
fs/configfs/dir.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/40805099af11f68c5ca7dbcfacf455da8f99f622
https://git.kernel.org/stable/c/d1654de19d42f513b6cfe955cc77e7f427e05a77
https://git.kernel.org/stable/c/a37024f7757c25550accdebf49e497ad6ae239fe
https://git.kernel.org/stable/c/b7e2b91fcb5c78c414e33dc8d50642e307ca0c5a
https://git.kernel.org/stable/c/a7ab53d3c27dfe83bb594456b9f38a37796ec39b
https://git.kernel.org/stable/c/e7a66dd2687758718eddd79b542a95cf3aa488cc
https://git.kernel.org/stable/c/3aadfd46858b1f64d4d6a0654b863e21aabff975
https://git.kernel.org/stable/c/84ec758fb2daa236026506868c8796b0500c047d
Powered by blists - more mailing lists