Pillow 分块 TIFF 解码越界读漏洞披露
先了解这件事
GitHub 安全公告库披露 Pillow 的 TiffDecode.c 存在堆越界读漏洞(GHSA-462x-pgg6-55fp):解码畸形压缩 TIFF 时,_decodeTile() 与 _decodeAsRGBA() 会读取堆缓冲区之外的数据,并把它写入返回图像的像素。攻击者若能让使用 Pillow 的应用解码特制 TIFF,可导致进程崩溃(DoS),并可能使相邻堆内存被复制进解码后的像素缓冲区,从而泄露进程堆内存片段(包括指针值)。 公告称,触发无需特殊设置,也不会发生越界写。根因是 _decodeTile 按 row_byte_size * tile_length 步进读取,而缓冲区只按 libtiff 返回的 tile_bytes_size 分配;现有检查会拒绝过大的 tile,却不拒绝 tile_bytes_size 小于 row_byte_size * tile_length 的过小 tile,copy4 因此越界读取。 公告称,tile 相关代码自 8.2.0 起发布,RGBA 相关代码来自 CVE-2020-35654 的修复(8.1.0)。公告同时提供了公开复现脚本与修复补丁。
AI 根据报道生成 · 2 天前更新
报道时间线
沿着报道,了解事件的不同侧面。
- GitHub 安全公告库 (GHSA)精选Pillow 分块 TIFF 解码器 copy4 越界读取 tile 缓冲区
Pillow 的 libImaging `_decodeTile` 在解码分块 TIFF 时按 `row_byte_size * tile_length` 步进读取,但缓冲区只按 libtiff 返回的 `tile_bytes_size` 分配,当后者更小时 `copy4` 会越界读取。
- GitHub 安全公告库 (GHSA)精选Pillow 的 TiffDecode.c 存在堆越界读,公开复现脚本与修复补丁
Pillow 在解码畸形压缩 TIFF 时,src/libImaging/TiffDecode.c 的 _decodeTile() 与 _decodeAsRGBA() 会读取堆缓冲区之外的数据并写入返回图像的像素,攻击者可借此拿到进程堆内存片段,包括指针值,稍大的文件则会让进程崩溃。
本事件热度走势
还没有足够的连续观测数据,暂不绘制趋势。