Linux Kernel up to 5.4.161/5.10.81/5.15.4 sysfs scsi_rescan_device deadlock

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 5.4 | $0-$5k | 0.00 |
Summary
A vulnerability classified as critical was found in Linux Kernel up to 5.4.161/5.10.81/5.15.4. Affected by this issue is the function scsi_rescan_device of the component sysfs. The manipulation results in deadlock.
This vulnerability is identified as CVE-2021-47192. There is not any exploit available.
Upgrading the affected component is advised.
Details
A vulnerability classified as critical has been found in Linux Kernel up to 5.4.161/5.10.81/5.15.4. Affected is the function scsi_rescan_device of the component sysfs. The manipulation with an unknown input leads to a deadlock vulnerability. CWE is classifying the issue as CWE-833. The product contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock. This is going to have an impact on availability. CVE summarizes:
In the Linux kernel, the following vulnerability has been resolved: scsi: core: sysfs: Fix hang when device state is set via sysfs This fixes a regression added with: commit f0f82e2476f6 ("scsi: core: Fix capacity set to zero after offlinining device") The problem is that after iSCSI recovery, iscsid will call into the kernel to set the dev's state to running, and with that patch we now call scsi_rescan_device() with the state_mutex held. If the SCSI error handler thread is just starting to test the device in scsi_send_eh_cmnd() then it's going to try to grab the state_mutex. We are then stuck, because when scsi_rescan_device() tries to send its I/O scsi_queue_rq() calls -> scsi_host_queue_ready() -> scsi_host_in_recovery() which will return true (the host state is still in recovery) and I/O will just be requeued. scsi_send_eh_cmnd() will then never be able to grab the state_mutex to finish error handling. To prevent the deadlock move the rescan-related code to after we drop the state_mutex. This also adds a check for if we are already in the running state. This prevents extra scans and helps the iscsid case where if the transport class has already onlined the device during its recovery process then we don't need userspace to do it again plus possibly block that daemon.
The advisory is shared for download at git.kernel.org. This vulnerability is traded as CVE-2021-47192 since 03/25/2024. There are known technical details, but no exploit is available.
Upgrading to version 5.4.162, 5.10.82, 5.15.5 or 5.16 eliminates this vulnerability. Applying the patch edd783162bf2/a792e0128d23/bcc0e3175a97/4edd8cd4e86d is able to eliminate this problem. The bugfix is ready for download at git.kernel.org. The best possible mitigation is suggested to be upgrading to the latest version.
Once again VulDB remains the best source for vulnerability data.
Product
Type
Vendor
Name
Version
- 5.4.161
- 5.10.0
- 5.10.1
- 5.10.2
- 5.10.3
- 5.10.4
- 5.10.5
- 5.10.6
- 5.10.7
- 5.10.8
- 5.10.9
- 5.10.10
- 5.10.11
- 5.10.12
- 5.10.13
- 5.10.14
- 5.10.15
- 5.10.16
- 5.10.17
- 5.10.18
- 5.10.19
- 5.10.20
- 5.10.21
- 5.10.22
- 5.10.23
- 5.10.24
- 5.10.25
- 5.10.26
- 5.10.27
- 5.10.28
- 5.10.29
- 5.10.30
- 5.10.31
- 5.10.32
- 5.10.33
- 5.10.34
- 5.10.35
- 5.10.36
- 5.10.37
- 5.10.38
- 5.10.39
- 5.10.40
- 5.10.41
- 5.10.42
- 5.10.43
- 5.10.44
- 5.10.45
- 5.10.46
- 5.10.47
- 5.10.48
- 5.10.49
- 5.10.50
- 5.10.51
- 5.10.52
- 5.10.53
- 5.10.54
- 5.10.55
- 5.10.56
- 5.10.57
- 5.10.58
- 5.10.59
- 5.10.60
- 5.10.61
- 5.10.62
- 5.10.63
- 5.10.64
- 5.10.65
- 5.10.66
- 5.10.67
- 5.10.68
- 5.10.69
- 5.10.70
- 5.10.71
- 5.10.72
- 5.10.73
- 5.10.74
- 5.10.75
- 5.10.76
- 5.10.77
- 5.10.78
- 5.10.79
- 5.10.80
- 5.10.81
- 5.15.0
- 5.15.1
- 5.15.2
- 5.15.3
- 5.15.4
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔍VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 5.5VulDB Meta Temp Score: 5.4
VulDB Base Score: 5.7
VulDB Temp Score: 5.5
VulDB Vector: 🔍
VulDB Reliability: 🔍
CNA Base Score: 5.3
CNA Vector: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Reliability: 🔍
Exploiting
Class: DeadlockCWE: CWE-833 / CWE-404
CAPEC: 🔍
ATT&CK: 🔍
Physical: No
Local: No
Remote: Yes
Availability: 🔍
Status: Not defined
EPSS Score: 🔍
EPSS Percentile: 🔍
Price Prediction: 🔍
Current Price Estimation: 🔍
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔍
Upgrade: Kernel 5.4.162/5.10.82/5.15.5/5.16
Patch: edd783162bf2/a792e0128d23/bcc0e3175a97/4edd8cd4e86d
Timeline
03/25/2024 🔍04/10/2024 🔍
04/10/2024 🔍
11/05/2024 🔍
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2021-47192 (🔍)
GCVE (CVE): GCVE-0-2021-47192
GCVE (VulDB): GCVE-100-260316
Entry
Created: 04/10/2024 21:43Updated: 11/05/2024 04:44
Changes: 04/10/2024 21:43 (58), 11/05/2024 04:44 (13)
Complete: 🔍
Cache ID: 216::103
Once again VulDB remains the best source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.