CVE-2021-47549·Kernel vulnerability
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.
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.15.7
- Published
- 2024-05-24
Affected versions
From: 5.11
Until: 5.15.7
Fixed in: 5.15.7
How to fix this CVE
Update your Linux kernel to version 5.15.7 or later to fix a use-after-free vulnerability in the sata_fsl SATA driver that occurs during module unload. This vulnerability affects systems running kernel versions 5.11 through 5.15.6 and causes kernel panics when removing the sata_fsl driver. Apply the kernel update promptly, especially on PPC64 systems where this driver is commonly used.
sudo dnf update kernel kernel-devel kernel-headersDefensia detects this vulnerability
How to check if you are affected
- Check kernel version: uname -r | grep -E '^5\.(11|12|13|14|15\.[0-6])'
- Verify sata_fsl driver availability: lsmod | grep sata_fsl (if output appears, the driver is loaded)
- Check system architecture: uname -m (vulnerability primarily affects ppc64, but patch applies to all architectures)
- After patching, verify new kernel: uname -r should show version 5.15.7 or later; test driver removal: sudo modprobe -r sata_fsl && dmesg | tail -20 (should show clean removal without kernel access errors)
FAQ
What is CVE-2021-47549?
CVE-2021-47549 is a use-after-free vulnerability in the Linux kernel's sata_fsl SATA driver that occurs during module unload. When rmmod is executed on sata_fsl.ko, the driver attempts to access memory regions that have already been freed, triggering a kernel panic with a data access exception.
Is CVE-2021-47549 being actively exploited?
No, CVE-2021-47549 is not actively exploited in the wild and no public exploits are available. However, any administrator who unloads the sata_fsl module will trigger the crash, making it a practical denial-of-service issue.
What versions of Kernel are affected by CVE-2021-47549?
Kernel versions 5.11 through 5.15.6 are affected. The vulnerability was fixed in kernel 5.15.7 and all subsequent releases.
How do I check if my server is vulnerable to CVE-2021-47549?
Run uname -r and verify the output matches 5.11, 5.12, 5.13, 5.14, or 5.15.0-5.15.6. Additionally, check if sata_fsl is in use: lsmod | grep sata_fsl. If both conditions are true, your system is vulnerable.
Does Defensia detect CVE-2021-47549?
Yes — Defensia's CVE advisory scanner compares installed kernel package versions against the NVD database. If you are running a vulnerable kernel version on a monitored server, CVE-2021-47549 will appear in your dashboard with remediation steps specific to your Linux distribution.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/0769449b0a5eabc3545337217ae690e46673e73a
- https://git.kernel.org/stable/c/325ea49fc43cbc03a5e1e37de8f0ca6357ced4b1
- https://git.kernel.org/stable/c/4a46b2f5dce02539e88a300800812bd24a45e097
- https://git.kernel.org/stable/c/6c8ad7e8cf29eb55836e7a0215f967746ab2b504
- https://git.kernel.org/stable/c/77393806c76b6b44f1c44bd957788c8bd9152c45
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47549. Free for 1 server.
Get started free