CVE-2024-26758: md: Don't ignore suspended array in md_check_recovery()
In the Linux kernel, the following vulnerability has been resolved:
md: Don't ignore suspended array in md_check_recovery()
mddev_suspend() never stop sync_thread, hence it doesn't make sense to
ignore suspended array in md_check_recovery(), which might cause
sync_thread can't be unregistered.
After commit f52f5c71f3d4 ("md: fix stopping sync thread"), following
hang can be triggered by test shell/integrity-caching.sh:
1) suspend the array:
raid_postsuspend
mddev_suspend
2) stop the array:
raid_dtr
md_stop
__md_stop_writes
stop_sync_thread
set_bit(MD_RECOVERY_INTR, &mddev->recovery);
md_wakeup_thread_directly(mddev->sync_thread);
wait_event(..., !test_bit(MD_RECOVERY_RUNNING, &mddev->recovery))
3) sync thread done:
md_do_sync
set_bit(MD_RECOVERY_DONE, &mddev->recovery);
md_wakeup_thread(mddev->thread);
4) daemon thread can't unregister sync thread:
md_check_recovery
if (mddev->suspended)
return; -> return directly
md_read_sync_thread
clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
-> MD_RECOVERY_RUNNING can't be cleared, hence step 2 hang;
This problem is not just related to dm-raid, fix it by ignoring
suspended array in md_check_recovery(). And follow up patches will
improve dm-raid better to frozen sync thread during suspend.
Security readout for executives and security teams
Plain-English summary
A Linux software RAID bug can leave a storage recovery thread stuck when an array is suspended and then stopped. The practical impact is an availability failure: affected systems may hang during RAID teardown or recovery handling. It requires local privileges and the provided sources do not show active exploitation.
Executive priority
Treat as a moderate availability risk for Linux storage infrastructure. It is not a data-theft issue, but storage hangs can affect uptime on systems depending on software RAID. Patch during normal kernel maintenance, faster for critical storage hosts.
Technical view
md_check_recovery() returned early for suspended md arrays, preventing md_read_sync_thread() from clearing MD_RECOVERY_RUNNING after MD_RECOVERY_DONE. That can make stop_sync_thread() wait indefinitely. The CVSS vector is local, low complexity, low privileges, no user interaction, and high availability impact only.
Likely exposure
Exposure is most likely on Linux systems using md RAID or dm-raid paths with affected kernel versions. The provided data names Linux kernel versions from 3.0 through 6.8 contextually, but distro backports may change practical exposure.
Exploitation context
The sources describe a reproducible hang in RAID suspend and stop handling, not remote compromise. KEV is false, and no cited source in the bundle reports exploitation in the wild.
Researcher notes
Focus analysis on md recovery state handling around suspended arrays. The root issue is recovery thread cleanup being skipped while suspended, leaving MD_RECOVERY_RUNNING uncleared. Evidence is limited to CVE text and stable kernel commit references.
Mitigation direction
Update to a vendor kernel containing the referenced stable fixes.
Prioritize hosts using Linux md RAID or dm-raid storage.
Check distribution advisories for backported fixes before relying on version numbers.
Restrict unnecessary local shell access on storage-critical systems.
Schedule remediation to avoid unplanned storage service disruption.
Validation and detection
Inventory Linux kernel versions on systems using md RAID or dm-raid.
Confirm whether vendor packages include the referenced stable commits.
Review logs for md recovery, suspend, stop, or sync thread hangs.
Test RAID suspend, stop, and recovery workflows in staging after patching.
Track any vendor-specific advisories for affected platform scope.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-129: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-129 · source CWE mapping
Improper Validation of Array Index
Improper Validation of Array Index represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.