{"id":"CVE-2024-45023","state":"PUBLISHED","title":"md/raid1: Fix data corruption for degraded array with slow disk","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nmd/raid1: Fix data corruption for degraded array with slow disk\n\nread_balance() will avoid reading from slow disks as much as possible,\nhowever, if valid data only lands in slow disks, and a new normal disk\nis still in recovery, unrecovered data can be read:\n\nraid1_read_request\n read_balance\n  raid1_should_read_first\n  -> return false\n  choose_best_rdev\n  -> normal disk is not recovered, return -1\n  choose_bb_rdev\n  -> missing the checking of recovery, return the normal disk\n -> read unrecovered data\n\nRoot cause is that the checking of recovery is missing in\nchoose_bb_rdev(). Hence add such checking to fix the problem.\n\nAlso fix similar problem in choose_slow_rdev().","publishedAt":"2024-09-11T15:13:56.451Z","updatedAt":"2026-08-05T11:37:48.080Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"dfa8ecd167c1753d4fc24a517e1d79c603183c94","status":"affected","lessThan":"2febf5fdbf5d9a52ddc3e986971c8609b1582d67","versionType":"git"},{"version":"dfa8ecd167c1753d4fc24a517e1d79c603183c94","status":"affected","lessThan":"c916ca35308d3187c9928664f9be249b22a3a701","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/raid1.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.9","versionType":"semver"},{"version":"6.10.7","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/raid1.c"]}],"references":["https://git.kernel.org/stable/c/2febf5fdbf5d9a52ddc3e986971c8609b1582d67","https://git.kernel.org/stable/c/c916ca35308d3187c9928664f9be249b22a3a701"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:47.831Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/45xxx/CVE-2024-45023.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-45023","state":"PUBLISHED","datePublished":"2024-09-11T15:13:56.451Z","dateUpdated":"2026-08-05T11:37:48.080Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-08-21T05:34:56.684Z"},"containers":{"cna":{"title":"md/raid1: Fix data corruption for degraded array with slow disk","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nmd/raid1: Fix data corruption for degraded array with slow disk\n\nread_balance() will avoid reading from slow disks as much as possible,\nhowever, if valid data only lands in slow disks, and a new normal disk\nis still in recovery, unrecovered data can be read:\n\nraid1_read_request\n read_balance\n  raid1_should_read_first\n  -> return false\n  choose_best_rdev\n  -> normal disk is not recovered, return -1\n  choose_bb_rdev\n  -> missing the checking of recovery, return the normal disk\n -> read unrecovered data\n\nRoot cause is that the checking of recovery is missing in\nchoose_bb_rdev(). Hence add such checking to fix the problem.\n\nAlso fix similar problem in choose_slow_rdev()."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"dfa8ecd167c1753d4fc24a517e1d79c603183c94","status":"affected","lessThan":"2febf5fdbf5d9a52ddc3e986971c8609b1582d67","versionType":"git"},{"version":"dfa8ecd167c1753d4fc24a517e1d79c603183c94","status":"affected","lessThan":"c916ca35308d3187c9928664f9be249b22a3a701","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/raid1.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.9","versionType":"semver"},{"version":"6.10.7","status":"unaffected","lessThanOrEqual":"6.10.*","versionType":"semver"},{"version":"6.11","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/md/raid1.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2febf5fdbf5d9a52ddc3e986971c8609b1582d67"},{"url":"https://git.kernel.org/stable/c/c916ca35308d3187c9928664f9be249b22a3a701"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable code is the md/raid1 read path, reached by submitting a READ bio to the local md block device — via a normal file read on a mounted filesystem or a direct block-device read. No remote protocol input is involved.\nAC:L - There is no race, timing window, or memory-layout dependency; once the array is in the ordinary and frequently occurring degraded-plus-rebuilding state (write-mostly member holding valid data, or surviving member with recorded badblocks), every read in the unrecovered range deterministically selects the wrong disk and returns bad data with repeatable success.\nPR:L - No capability or permission check exists anywhere on the raid1_make_request → raid1_read_request → read_balance path; any local unprivileged user reading a file on the filesystem backed by the array triggers the faulty disk selection.\nUI:N - No victim action is required — the recovery state is driven by the kernel's background rebuild, and the corrupt reads occur on the attacker's own I/O as well as on all normal system I/O.\nS:U - The faulty disk selection and its consequences are confined to the md block device and the kernel storage stack, the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Reads are served from sectors of the replacement member that have not yet been rebuilt, returning that disk's prior contents — stale blocks from a re-added or repurposed drive that under the current filesystem layout can belong to other users' or root-owned files — so an unprivileged reader obtains data it is not authorized to see.\nI:H - The array silently returns wrong data instead of valid data or an I/O error, and any read-modify-write above md (filesystem metadata, journal, sub-block or database updates) writes that garbage back, after which raid1_write_request() mirrors it to all members and the corruption becomes permanent and unrecoverable.\nA:H - Corrupted metadata delivered to the filesystem drives error handling into forced read-only remount, XFS shutdown, or panic on errors=panic, and the persisted corruption destroys the array's data — loss of availability of the storage and potentially of the ability to boot."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:37:48.080Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.10.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.11"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-09-29T15:47:27.863341Z","id":"CVE-2024-45023","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-29T15:47:42.110Z"}}]}}}