CVE-2025-57803: ImageMagick (WriteBMPImage): 32-bit integer overflow when writing BMP scanline stride → heap buffer overflow
A 32-bit integer overflow in the BMP encoder’s scanline-stride computation collapses bytes_per_line
(stride) to a tiny value while the per-row writer still emits 3 × width
bytes for 24-bpp images. The row base pointer advances using the (overflowed) stride, so the first row immediately writes past its slot and into adjacent heap memory with attacker-controlled bytes. This is a classic, powerful primitive for heap corruption in common auto-convert pipelines.
Impact: Attacker-controlled heap out-of-bounds (OOB) write during conversion to BMP.
Surface: Typical upload → normalize/thumbnail →
magick ... out.bmp
workers.32-bit: Vulnerable (reproduced with ASan).
64-bit: Safe from this specific integer overflow (IOF) by arithmetic, but still add product/size guards.
Proposed severity: Critical 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
Add checked arithmetic around stride computation and enforce a per-row invariant so that the number of bytes emitted per row (row_bytes) always fits within the computed stride (bytes_per_line). Guard multiplication/addition and product computations used for header fields and allocation sizes, and fail early with a clear WidthOrHeightExceedsLimit/ResourceLimitError when values exceed safe bounds.
Concretely:
- Validate width and bits_per_pixel before the stride formula to ensure (width*bpp + 31) cannot overflow a size_t.
- Compute row_bytes for the chosen bpp and assert row_bytes <= bytes_per_line.
- Bound rows * stride before allocating and ensure biSizeImage (DIB 32-bit) cannot overflow.
A full suggested guarded implementation is provided in Appendix A — Full patch (for maintainers).
References
- github.com/ImageMagick/ImageMagick
- github.com/ImageMagick/ImageMagick/commit/2c55221f4d38193adcb51056c14cf238fbcc35d7
- github.com/ImageMagick/ImageMagick/security/advisories/GHSA-mxvv-97wh-cfmm
- github.com/advisories/GHSA-mxvv-97wh-cfmm
- github.com/dlemstra/Magick.NET/releases/tag/14.8.1
- nvd.nist.gov/vuln/detail/CVE-2025-57803
Code Behaviors & Features
Detect and mitigate CVE-2025-57803 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →