CVE-2021-47549 json
sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
published 2024-05-24 2 y ago modified 2026-06-17 4 mo ago also EUVD-2021-34551
- cvss
- 7.8
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 14%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
When the `rmmod sata_fsl.ko` command is executed in the PPC64 GNU/Linux, a bug is reported: ================================================================== BUG: Unable to handle kernel data access on read at 0x80000800805b502c Oops: Kernel access of bad area, sig: 11 [#1] NIP [c0000000000388a4] .ioread32+0x4/0x20 LR [80000000000c6034] .sata_fsl_port_stop+0x44/0xe0 [sata_fsl] Call Trace: .free_irq+0x1c/0x4e0 (unreliable) .ata_host_stop+0x74/0xd0 [libata] .release_nodes+0x330/0x3f0 .device_release_driver_internal+0x178/0x2c0 .driver_detach+0x64/0xd0 .bus_remove_driver+0x70/0xf0 .driver_unregister+0x38/0x80 .platform_driver_unregister+0x14/0x30 .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl] .__se_sys_delete_module+0x1ec/0x2d0 .system_call_exception+0xfc/0x1f0 system_call_common+0xf8/0x200 ==================================================================
The triggering of the BUG is shown in the following stack:
driver_detach device_release_driver_internal __device_release_driver drv->remove(dev) --> platform_drv_remove/platform_remove drv->remove(dev) --> sata_fsl_remove iounmap(host_priv->hcr_base); <---- unmap kfree(host_priv); <---- free devres_release_all release_nodes dr->node.release(dev, dr->data) --> ata_host_stop ap->ops->port_stop(ap) --> sata_fsl_port_stop ioread32(hcr_base + HCONTROL) <---- UAF host->ops->host_stop(host)
The iounmap(host_priv->hcr_base) and kfree(host_priv) functions should not be executed in drv->remove. These functions should be executed in host_stop after port_stop. Therefore, we move these functions to the new function sata_fsl_host_stop and bind the new function to host_stop.
Patch / fix
- Linux Linux 4.4.294, 4.9.292, 4.14.257, 4.19.220, 5.4.164, 5.10.84, 5.15.7, 5.16
- linux Debian 14, Debian 13, Debian 12 5.15.15-1
debian advisories DEBIAN-CVE-2021-47549
- linux Ubuntu 18.04 LTS 4.15.0-169.177
- linux Ubuntu 20.04 LTS 5.4.0-100.113
- linux-aws Ubuntu 18.04 LTS 4.15.0-1121.129
- linux-aws Ubuntu 20.04 LTS 5.4.0-1066.69
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1065.69
- linux-ibm Ubuntu 20.04 LTS 5.4.0-1015.16
- linux-kvm Ubuntu 18.04 LTS 4.15.0-1107.109
- linux-kvm Ubuntu 20.04 LTS 5.4.0-1056.58
ubuntu advisories UBUNTU-CVE-2021-47549
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-azure SLES for SAP 12 SP5, SLES 12 SP5 4.12.14-16.197.1
- kernel-syms-azure SLES for SAP 12 SP5, SLES 12 SP5 4.12.14-16.197.1
- kernel-source-azure SLES for SAP 12 SP5, SLES 12 SP5 4.12.14-16.197.1
- kernel-syms SLES for SAP 12 SP5, SLES 12 SP5 4.12.14-122.228.1
- kernel-source SLES for SAP 12 SP5, SLES 12 SP5 4.12.14-122.228.1
- kernel-default SLES for SAP 12 SP5, SLES 12 SP5, SLE Workstation Extension 12 SP5 +2 more 4.12.14-122.228.1
- kernel-obs-build SLE Software Development Kit 12 SP5 4.12.14-122.228.2
- kernel-rt SLE Real Time 12 SP5 4.12.14-10.200.1
suse advisories SUSE-SU-2024:3252-1SUSE-SU-2024:3251-1SUSE-SU-2024:3189-1SUSE-SU-2024:2190-1SUSE-SU-2024:2189-1SUSE-SU-2024:2185-1
- git.kernel.org/stable/c/cdcd80292106df5cda325426e96495503e41f947 commit
- git.kernel.org/stable/c/91ba94d3f7afca195b224f77a72044fbde1389ce commit
- git.kernel.org/stable/c/325ea49fc43cbc03a5e1e37de8f0ca6357ced4b1 commit
- git.kernel.org/stable/c/0769449b0a5eabc3545337217ae690e46673e73a commit
- git.kernel.org/stable/c/77393806c76b6b44f1c44bd957788c8bd9152c45 commit
- git.kernel.org/stable/c/4a46b2f5dce02539e88a300800812bd24a45e097 commit
- git.kernel.org/stable/c/adf098e2a8a1e1fc075d6a5ba2edd13cf7189082 commit
- git.kernel.org/stable/c/6c8ad7e8cf29eb55836e7a0215f967746ab2b504 commit
Vendor 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-47549 updated cvss 5.6
kernel: sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
-
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 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more 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
- 2 y ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 14% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-416 Use After Free
- Technology feeds
References
-
git.kernel.org
/stable/c/cdcd80292106df5cda325426e96495503e41f947
patch
-
git.kernel.org
/stable/c/91ba94d3f7afca195b224f77a72044fbde1389ce
patch
-
git.kernel.org
/stable/c/325ea49fc43cbc03a5e1e37de8f0ca6357ced4b1
patch
-
git.kernel.org
/stable/c/0769449b0a5eabc3545337217ae690e46673e73a
patch
-
git.kernel.org
/stable/c/77393806c76b6b44f1c44bd957788c8bd9152c45
patch
-
git.kernel.org
/stable/c/4a46b2f5dce02539e88a300800812bd24a45e097
patch
-
git.kernel.org
/stable/c/adf098e2a8a1e1fc075d6a5ba2edd13cf7189082
patch
-
git.kernel.org
/stable/c/6c8ad7e8cf29eb55836e7a0215f967746ab2b504
patch
Sources
- CVE List CVE-2021-47549
- NVD CVE-2021-47549
Fencer Vulns 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.