CVE-2021-47350 json
powerpc/mm: Fix lockup on kernel exec fault
published 2y ago modified 4mo ago also EUVD-2021-34355
- cvss
- 5.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 7%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
powerpc/mm: Fix lockup on kernel exec fault
The powerpc kernel is not prepared to handle exec faults from kernel. Especially, the function is_exec_fault() will return 'false' when an exec fault is taken by kernel, because the check is based on reading current->thread.regs->trap which contains the trap from user.
For instance, when provoking a LKDTM EXEC_USERSPACE test, current->thread.regs->trap is set to SYSCALL trap (0xc00), and the fault taken by the kernel is not seen as an exec fault by set_access_flags_filter().
Commit d7df2443cd5f ("powerpc/mm: Fix spurious segfaults on radix with autonuma") made it clear and handled it properly. But later on commit d3ca587404b3 ("powerpc/mm: Fix reporting of kernel execute faults") removed that handling, introducing test based on error_code. And here is the problem, because on the 603 all upper bits of SRR1 get cleared when the TLB instruction miss handler bails out to ISI.
Until commit cbd7e6ca0210 ("powerpc/fault: Avoid heavy search_exception_tables() verification"), an exec fault from kernel at a userspace address was indirectly caught by the lack of entry for that address in the exception tables. But after that commit the kernel mainly relies on KUAP or on core mm handling to catch wrong user accesses. Here the access is not wrong, so mm handles it. It is a minor fault because PAGE_EXEC is not set, set_access_flags_filter() should set PAGE_EXEC and voila. But as is_exec_fault() returns false as explained in the beginning, set_access_flags_filter() bails out without setting PAGE_EXEC flag, which leads to a forever minor exec fault.
As the kernel is not prepared to handle such exec faults, the thing to do is to fire in bad_kernel_fault() for any exec fault taken by the kernel, as it was prior to commit d3ca587404b3.
Patch / fix
- Linux Linux 5.4.133, 5.10.51, 5.12.18, 5.13.3, 5.14
- linux Debian 14, Debian 13, Debian 12 5.14.6-1
debian advisories DEBIAN-CVE-2021-47350
- linux Ubuntu 20.04 LTS 5.4.0-84.94
- linux-aws Ubuntu 20.04 LTS 5.4.0-1056.59
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1052.56
- linux-kvm Ubuntu 20.04 LTS 5.4.0-1046.48
- linux-azure Ubuntu 20.04 LTS 5.4.0-1058.60
- linux-gkeop Ubuntu 20.04 LTS 5.4.0-1023.24
- linux-raspi Ubuntu 20.04 LTS 5.4.0-1043.47
- linux-oracle Ubuntu 20.04 LTS 5.4.0-1054.58
ubuntu advisories UBUNTU-CVE-2021-47350
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-64kb SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS, Enterprise Storage 7.1 5.3.18-150300.59.164.1
- kernel-syms SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.164.1
- kernel-source SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.164.1
- kernel-default SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE Micro 5.2 +5 more 5.3.18-150300.59.164.1
- kernel-preempt SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.164.1
- kernel-obs-build SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.164.1
- kernel-default-base SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE Micro 5.2 +3 more 5.3.18-150300.59.164.1.150300.18.96.1
- kernel-default SLES for SAP 15 SP2, SLES 15 SP2-LTSS, SLE Live Patching 15 SP2 +2 more 5.3.18-150200.24.194.1
suse advisories SUSE-SU-2024:2185-1SUSE-SU-2024:2183-1SUSE-SU-2024:2010-1
- git.kernel.org/stable/c/a82471a14aad90f79d1608d2bcbb019f0ffb53f0 commit
- git.kernel.org/stable/c/d2e52d4664097a6c1f591d869ec594bd7a0d4925 commit
- git.kernel.org/stable/c/500f81cec9f1bfa5210aa9dd5ba9a06e22f62a35 commit
- git.kernel.org/stable/c/8a96ec5ebf96ad8e2ba7b1b34103a0be5140fc70 commit
- git.kernel.org/stable/c/cd5d5e602f502895e47e18cd46804d6d7014e65c commit
Is CVE-2021-47350 in your stack? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2021-47350 updated cvss 4.4
kernel: powerpc/mm: Fix lockup on kernel exec fault
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 moreaffected: no fix available
-
Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2y ago
Exploit prediction
0.18% chance of exploitation in the next 30 days, higher than 7% of all scored CVEs (FIRST EPSS, 2026-11-09).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CISA ADP | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| CNA | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-667 Improper Locking
- Technology feeds
References
-
git.kernel.org
/stable/c/a82471a14aad90f79d1608d2bcbb019f0ffb53f0
patch
-
git.kernel.org
/stable/c/d2e52d4664097a6c1f591d869ec594bd7a0d4925
patch
-
git.kernel.org
/stable/c/500f81cec9f1bfa5210aa9dd5ba9a06e22f62a35
patch
-
git.kernel.org
/stable/c/8a96ec5ebf96ad8e2ba7b1b34103a0be5140fc70
patch
-
git.kernel.org
/stable/c/cd5d5e602f502895e47e18cd46804d6d7014e65c
patch
Sources
- CVE List CVE-2021-47350
- NVD CVE-2021-47350
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.