社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python常用Pillow图像库曝出严重漏洞,构造文件可触发代码执行

FreeBuf • 1 周前 • 182 次点击  
FreeBuf


Pillow是Python生态中应用最广泛的图像处理库,攻击者可通过构造传入的待打开文件名,诱使运行该库的服务器执行操作系统命令。


编号为CVE-2026-112900的漏洞存在于Pillow的EPS图像处理逻辑中。Pillow打开EPS文件时,会直接将文件名传给独立程序Ghostscript完成像素格式转换,全程未对文件名做合法性校验。


Ghostscript会将攻击者构造的特殊文件名识别为执行指令而非普通文件路径,进而指向第二个携带恶意命令的文件执行攻击。Pillow维护方已在10月16日发布的13.0.0版本中修复该漏洞。


Pillow的应用场景覆盖Python图像处理的几乎所有环节:网页上传表单、头像与缩略图生成工具、文档与PDF处理流水线,多数机器学习项目也会引入该依赖。披露本次漏洞的安全公司OX Security估算,Pillow的月下载量约为4.36亿次。


13.0.0是一次大型安全更新,共修复从低危到严重四个等级的多个漏洞,其中两个被维护方评为严重级别。目前暂无任何漏洞被发现在野利用。



Part01

EPS处理逻辑存在缺陷


公告指出:"漏洞由文件名触发,与PostScript文档内的任何内容无关"。这意味着攻击者只要给完全无害的EPS文件设置恶意文件名,就能触发漏洞造成危害。现实中最易受攻击的目标,是那些直接保留用户输入文件名、或基于用户输入生成存储文件名的上传接口。


该漏洞只有在主机安装了gs程序时才会触发——gs是Pillow打开EPS文件的必需依赖。漏洞影响范围覆盖Pillow 2.6.0到12.3.0的所有版本。


Pillow维护方认为,攻击者需要完全控制文件名才能利用漏洞,因此将其评为中危。但GitHub分配的CVE记录给该漏洞打出9.2分(满分10分),评级为严重,两者的判定前提一致。


Part02

版本修复多个高危漏洞


Pillow漏洞影响范围

本次更新修复的漏洞中有两个属于维护方划定的最高"严重"等级。其中一个是独立的内存漏洞,发布说明将其描述为模式切换后残留的图像数据被重复调用。另一个严重等级修复覆盖Pillow JPEG解码逻辑中的两个溢出漏洞。


其中一个影响FlashPix(FPX)格式的JPEG漏洞,只要主机安装了可选依赖olefile包,攻击者构造恶意文件后,仅需一次Image.open()调用就能执行任意命令。Pillow通过文件内容而非扩展名识别这类格式,因此服务器打开不可信的上传文件时,无需用户任何操作就会被攻击。


另一个编号为CVE-2026-112403的漏洞,会在程序为构造的无损JPEG生成缩略图时触发内存缓冲区溢出。公告提到:"该漏洞由Anthropic使用Claude研究开源软件安全性时发现,后由Ada Logics人工验证"。这是Anthropic开源安全研究项目的成果之一,该项目目前已在各类开源库中发现数百个漏洞。该漏洞仅会导致程序崩溃,暂无法实现代码执行。


第三个漏洞编号为CVE-2026-112393,自2013年起就存在于Pillow中。当程序将压缩TIFF图像保存到内存而非磁盘文件时,会触发内存缓冲区溢出,这种处理模式常见于对上传文件重新编码后直接返回的服务。


漏洞报告者利用该漏洞仅能造成进程崩溃,只有结合另一个独立的内存地址泄露漏洞,才能进一步实现代码执行。将TIFF文件直接保存到磁盘的操作不受该漏洞影响。


GitHub为上述EPS、TIFF、JPEG缩略图漏洞分配的CVE记录均给出9.2分(满分10分)的严重评级。不过每个漏洞的利用都存在评分未体现的前置条件,Pillow维护方对这批漏洞的评级从中危到严重不等。CVE记录显示,CISA分析师确认目前EPS漏洞暂无已知在野利用,TIFF漏洞已有公开PoC。


Part03

用户需尽快升级至最新版


所有用户应尽快升级至Pillow 13.0.0版本,该版本修复了上述所有漏洞,同时需要重新构建所有内置旧版本Pillow的容器、wheel包或基础镜像。需要注意的是,Pillow 13.0.0不再支持Python 3.10,仍在使用该版本的环境需同步升级至Python 3.11或更高版本。

pip install -U "Pillow>=13.0.0"


如果暂时无法完成升级,可按照Pillow安全指南和相关公告给出的措施,逐一封堵各漏洞的攻击路径:


  • EPS / Ghostscript路径:处理不可信上传文件的主机不要安装gs程序,处理EPS文件时,绝不要将攻击者可控的文件名传入Image.open()。


  • JPEG缩略图路径:不要对不可信的JPEG文件调用draft()和thumbnail()方法,或先调用load()方法,或传入参数reducing_gap=None。


  • TIFF路径:如果图像来自用户上传,将TIFF文件保存到io.BytesIO等内存缓冲区的操作要视为敏感路径,做好防护。


参考来源:

Critical Flaw in Python's Popular Pillow Image Library Allows Code Execution via a Crafted Image

https://thehackernews.com/2026/10/critical-flaw-in-pythons-popular.html


推荐阅读


电报讨论


扫码加入AI安全交流群

下载FreeBuf知识大陆APP

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/202543