跳到正文
热点事件观察中

Pillow 图像变换内存分配失败致双重释放

1 篇报道1 个报道来源1 天前更新

先了解这件事

AI 综述

GitHub 安全公告库公开了 Pillow 的一个双重释放漏洞及复现脚本和补丁。Pillow 的 ImagingScaleAffine() 在 calloc 失败时会对调用方拥有的输出图像调用 ImagingDelete(),Python 对象析构时再次释放,形成 use-after-free 与双重释放。公告称,能控制 Image.transform() 输出尺寸的人即可触发,但仅在设有内存限制的 worker 或 32 位进程中成立;路径需使用 Transform.EXTENT,或使用纯缩放/平移矩阵的 Transform.AFFINE,并采用默认 NEAREST 重采样。在默认 overcommit 的 64 位 Linux 上,需借助 ulimit -v、uwsgi --limit-as 或 systemd LimitAS= 等地址空间限制。 公告附带的复现脚本在 1 GB 限制的常规构建上运行:transform((300000000, 1), EXTENT) 抛出并捕获 MemoryError 后,进程在 _dealloc() 调用的 free() 中因 SIGSEGV 终止。公告称该缺陷继承自 PIL 1.1.7 的原始 fork 提交,因此自 1.0 起的每个 Pillow 版本均受影响。

AI 根据报道生成 · 18 小时前更新

报道时间线

沿着报道,了解事件的不同侧面。

10月22日
  1. GitHub 安全公告库 (GHSA)
    Pillow 的 Image.transform 在 calloc 失败时双重释放,附复现脚本与补丁

    Pillow 的 ImagingScaleAffine()(src/libImaging/Geometry.c:866)在 calloc 失败时对调用方拥有的输出图像调用 ImagingDelete(),随后 Python 对象析构时再次释放,形成 use-after-free 与双重释放。

本事件热度走势

可比范围当前
5
可比范围峰值
810月22日 12:00
近 24 小时变化
–

趋势仅比较持续完整观测到的相同主体,范围可能小于当前热度统计。移动指针或点击图表查看每小时热度;键盘可用左右方向键切换。