CVE-2025-39791

MEDIUMNVD 5.55.5
EchelonGraph scoreMEDIUM confidence

Score 5.5 from GitHub Security Advisory published 2025-09-11. NVD baseline CVSS 5.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Trending — 3 sources updated this week
5.5
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS: 0%CVSS: 5.5Exploit: NoneExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

In the Linux kernel, the following vulnerability has been resolved:

dm: dm-crypt: Do not partially accept write BIOs with zoned targets

Read and write operations issued to a dm-crypt target may be split according to the dm-crypt internal limits defined by the max_read_size and max_write_size module parameters (default is 128 KB). The intent is to improve processing time of large BIOs by splitting them into smaller operations that can be parallelized on different CPUs.

For zoned dm-crypt targets, this BIO splitting is still done but without the parallel execution to ensure that the issuing order of write operations to the underlying devices remains sequential. However, the splitting itself causes other problems:

1) Since dm-crypt relies on the block layer zone write plugging to handle zone append emulation using regular write operations, the reminder of a split write BIO will always be plugged into the target zone write plugged. Once the on-going write BIO finishes, this reminder BIO is unplugged and issued from the zone write plug work. If this reminder BIO itself needs to be split, the reminder will be re-issued and plugged again, but that causes a call to a blk_queue_enter(), which may block if a queue freeze operation was initiated. This results in a deadlock as DM submission still holds BIOs that the queue freeze side is waiting for.

2) dm-crypt relies on the emulation done by the block layer using regular write operations for processing zone append operations. This still requires to properly return the written sector as the BIO sector of the original BIO. However, this can be done correctly only and only if there is a single clone BIO used for processing the original zone append operation issued by the user. If the size of a zone append operation is larger than dm-crypt max_write_size, then the orginal BIO will be split and processed as a chain of regular write operations. Such chaining result in an incorrect written sector being returned to the zone append issuer using the original BIO sector. This in turn results in file system data corruptions using xfs or btrfs.

Fix this by modifying get_max_request_size() to always return the size of the BIO to avoid it being split with dm_accpet_partial_bio() in crypt_map(). get_max_request_size() is renamed to get_max_request_sectors() to clarify the unit of the value returned and its interface is changed to take a struct dm_target pointer and a pointer to the struct bio being processed. In addition to this change, to ensure that crypt_alloc_buffer() works correctly, set the dm-crypt device max_hw_sectors limit to be at most BIO_MAX_VECS << PAGE_SECTORS_SHIFT (1 MB with a 4KB page architecture). This forces DM core to split write BIOs before passing them to crypt_map(), and thus guaranteeing that dm-crypt can always accept an entire write BIO without needing to split it.

This change does not have any effect on the read path of dm-crypt. Read operations can still be split and the BIO fragments processed in parallel. There is also no impact on the performance of the write path given that all zone write BIOs were already processed inline instead of in parallel.

This change also does not affect in any way regular dm-crypt block devices.

CVSS v3
5.5
EG Score
5.5(medium)
EG Risk
29(Track)
EG Risk 29/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity55% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS
1.7%
KEV
Not listed

Published

September 11, 2025

Last Modified

November 25, 2025

Patch Availability(1)

Vendor / EcosystemFixed in / PatchReleasedSource
linuxKernel @ 6.12.44osv

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Data Freshness Timeline

(refreshed 10× in last 7d / 38× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

  1. 2026-07-24 14:17 UTCEPSS rescore
  2. 2026-07-23 20:41 UTCOSV refresh
  3. 2026-07-23 02:55 UTCEG score recompute
  4. 2026-07-22 14:07 UTCEPSS rescore
  5. 2026-07-22 14:07 UTCEPSS rescore
  6. 2026-07-20 17:07 UTCEPSS rescore
  7. 2026-07-19 14:30 UTCEPSS rescore
  8. 2026-07-19 14:30 UTCEPSS rescore
  9. 2026-07-18 10:04 UTCEPSS rescore
  10. 2026-07-18 10:04 UTCEPSS rescore
  11. 2026-07-16 17:02 UTCEPSS rescore
  12. 2026-07-15 16:57 UTCEPSS rescore
  13. 2026-07-15 16:57 UTCEPSS rescore
  14. 2026-07-15 01:59 UTCEPSS rescore
  15. 2026-07-15 01:59 UTCEPSS rescore
  16. 2026-07-13 22:29 UTCEPSS rescore
  17. 2026-07-13 22:29 UTCEPSS rescore
  18. 2026-07-13 06:12 UTCEPSS rescore
  19. 2026-07-12 05:46 UTCEPSS rescore
  20. 2026-07-11 08:27 UTCEPSS rescore
  21. 2026-07-11 08:27 UTCEPSS rescore
  22. 2026-07-09 19:09 UTCEPSS rescore
  23. 2026-07-09 19:09 UTCEPSS rescore
  24. 2026-07-07 13:45 UTCEPSS rescore
  25. 2026-07-06 16:27 UTCEPSS rescore
Show 55 more
  1. 2026-07-06 16:27 UTCEPSS rescore
  2. 2026-07-06 14:41 UTCOSV refresh
  3. 2026-07-06 02:23 UTCEPSS rescore
  4. 2026-07-05 02:30 UTCEPSS rescore
  5. 2026-07-04 06:30 UTCEPSS rescore
  6. 2026-06-30 23:22 UTCEPSS rescore
  7. 2026-06-30 23:22 UTCEPSS rescore
  8. 2026-06-28 14:07 UTCEPSS rescore
  9. 2026-06-28 14:07 UTCEPSS rescore
  10. 2026-06-28 04:55 UTCEPSS rescore
  11. 2026-06-28 04:55 UTCEPSS rescore
  12. 2026-06-27 03:08 UTCEPSS rescore
  13. 2026-06-27 03:08 UTCEPSS rescore
  14. 2026-06-24 14:04 UTCEPSS rescore
  15. 2026-06-24 14:04 UTCEPSS rescore
  16. 2026-06-23 21:32 UTCEPSS rescore
  17. 2026-06-23 21:32 UTCEPSS rescore
  18. 2026-06-22 14:25 UTCEPSS rescore
  19. 2026-06-22 14:25 UTCEPSS rescore
  20. 2026-06-21 14:56 UTCEPSS rescore
  21. 2026-06-21 14:56 UTCEPSS rescore
  22. 2026-06-21 01:59 UTCEPSS rescore
  23. 2026-06-21 01:59 UTCEPSS rescore
  24. 2026-06-19 19:25 UTCEPSS rescore
  25. 2026-06-19 19:25 UTCEPSS rescore
  26. 2026-06-18 17:52 UTCEPSS rescore
  27. 2026-06-18 17:52 UTCEPSS rescore
  28. 2026-06-18 03:05 UTCOSV refresh
  29. 2026-06-17 17:52 UTCEPSS rescore
  30. 2026-06-14 23:17 UTCEPSS rescore
  31. 2026-06-13 23:00 UTCEPSS rescore
  32. 2026-06-12 23:11 UTCEPSS rescore
  33. 2026-06-11 14:00 UTCEPSS rescore
  34. 2026-06-10 22:18 UTCEPSS rescore
  35. 2026-06-10 13:22 UTCEPSS rescore
  36. 2026-06-08 14:16 UTCEPSS rescore
  37. 2026-06-08 14:16 UTCEPSS rescore
  38. 2026-06-07 15:24 UTCEPSS rescore
  39. 2026-06-06 13:47 UTCEPSS rescore
  40. 2026-06-06 13:47 UTCEPSS rescore
  41. 2026-06-05 22:46 UTCEPSS rescore
  42. 2026-06-05 22:46 UTCEPSS rescore
  43. 2026-06-05 06:10 UTCEPSS rescore
  44. 2026-06-05 06:10 UTCEPSS rescore
  45. 2026-06-04 13:12 UTCEPSS rescore
  46. 2026-06-04 13:12 UTCEPSS rescore
  47. 2026-06-02 20:12 UTCEPSS rescore
  48. 2026-06-01 13:51 UTCEPSS rescore
  49. 2026-06-01 13:51 UTCEPSS rescore
  50. 2026-05-31 22:30 UTCEPSS rescore
  51. 2026-05-31 22:30 UTCEPSS rescore
  52. 2026-05-31 00:16 UTCEPSS rescore
  53. 2026-05-29 22:59 UTCEG score recompute
  54. 2026-05-29 22:59 UTCGHSA enrichment
  55. 2026-05-29 13:44 UTCEPSS rescore

Frequently asked(5)

What is CVE-2025-39791?
CVE-2025-39791 is a medium vulnerability published on September 11, 2025. In the Linux kernel, the following vulnerability has been resolved: dm: dm-crypt: Do not partially accept write BIOs with zoned targets Read and write operations issued to a dm-crypt target may be split according to the dm-crypt internal limits defined by the maxreadsize and maxwritesize module…
When was CVE-2025-39791 disclosed?
CVE-2025-39791 was first published in the National Vulnerability Database on September 11, 2025, with the most recent update on November 25, 2025. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2025-39791 actively exploited?
CVE-2025-39791 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 1.7% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
What is the CVSS score of CVE-2025-39791?
CVE-2025-39791 has a CVSS v3 base score of 5.5 (NVD).
How do I remediate CVE-2025-39791?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2025-39791, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2025-39791

Explore →

Is Your Infrastructure Affected by CVE-2025-39791?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.