[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025022648-CVE-2025-21727-b034@gregkh>
Date: Wed, 26 Feb 2025 18:06:22 -0800
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2025-21727: padata: fix UAF in padata_reorder
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
padata: fix UAF in padata_reorder
A bug was found when run ltp test:
BUG: KASAN: slab-use-after-free in padata_find_next+0x29/0x1a0
Read of size 4 at addr ffff88bbfe003524 by task kworker/u113:2/3039206
CPU: 0 PID: 3039206 Comm: kworker/u113:2 Kdump: loaded Not tainted 6.6.0+
Workqueue: pdecrypt_parallel padata_parallel_worker
Call Trace:
<TASK>
dump_stack_lvl+0x32/0x50
print_address_description.constprop.0+0x6b/0x3d0
print_report+0xdd/0x2c0
kasan_report+0xa5/0xd0
padata_find_next+0x29/0x1a0
padata_reorder+0x131/0x220
padata_parallel_worker+0x3d/0xc0
process_one_work+0x2ec/0x5a0
If 'mdelay(10)' is added before calling 'padata_find_next' in the
'padata_reorder' function, this issue could be reproduced easily with
ltp test (pcrypt_aead01).
This can be explained as bellow:
pcrypt_aead_encrypt
...
padata_do_parallel
refcount_inc(&pd->refcnt); // add refcnt
...
padata_do_serial
padata_reorder // pd
while (1) {
padata_find_next(pd, true); // using pd
queue_work_on
...
padata_serial_worker crypto_del_alg
padata_put_pd_cnt // sub refcnt
padata_free_shell
padata_put_pd(ps->pd);
// pd is freed
// loop again, but pd is freed
// call padata_find_next, UAF
}
In the padata_reorder function, when it loops in 'while', if the alg is
deleted, the refcnt may be decreased to 0 before entering
'padata_find_next', which leads to UAF.
As mentioned in [1], do_serial is supposed to be called with BHs disabled
and always happen under RCU protection, to address this issue, add
synchronize_rcu() in 'padata_free_shell' wait for all _do_serial calls
to finish.
[1] https://lore.kernel.org/all/20221028160401.cccypv4euxikusiq@parnassus.localdomain/
[2] https://lore.kernel.org/linux-kernel/jfjz5d7zwbytztackem7ibzalm5lnxldi2eofeiczqmqs2m7o6@fq426cwnjtkm/
The Linux kernel CVE team has assigned CVE-2025-21727 to this issue.
Affected and fixed versions
===========================
Issue introduced in 5.4 with commit b128a30409356df65f1a51cff3eb986cac8cfedc and fixed in 6.1.129 with commit 0ae2f332cfd2d74cf3ce344ec9938cf3e29c3ccd
Issue introduced in 5.4 with commit b128a30409356df65f1a51cff3eb986cac8cfedc and fixed in 6.6.76 with commit bbccae982e9fa1d7abcb23a5ec81cb0ec883f7de
Issue introduced in 5.4 with commit b128a30409356df65f1a51cff3eb986cac8cfedc and fixed in 6.12.13 with commit 573ac9c70bf7885dc85d82fa44550581bfc3b738
Issue introduced in 5.4 with commit b128a30409356df65f1a51cff3eb986cac8cfedc and fixed in 6.13.2 with commit 80231f069240d52e98b6a317456c67b2eafd0781
Issue introduced in 5.4 with commit b128a30409356df65f1a51cff3eb986cac8cfedc and fixed in 6.14-rc1 with commit e01780ea4661172734118d2a5f41bc9720765668
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-2025-21727
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:
kernel/padata.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/0ae2f332cfd2d74cf3ce344ec9938cf3e29c3ccd
https://git.kernel.org/stable/c/bbccae982e9fa1d7abcb23a5ec81cb0ec883f7de
https://git.kernel.org/stable/c/573ac9c70bf7885dc85d82fa44550581bfc3b738
https://git.kernel.org/stable/c/80231f069240d52e98b6a317456c67b2eafd0781
https://git.kernel.org/stable/c/e01780ea4661172734118d2a5f41bc9720765668
Powered by blists - more mailing lists