CVE-2026-24486Python-Multipart是Python语言中常用的流式多部分解析器,主要用于处理HTTP文件上传请求中的multipart/form-data格式数据。该库被广泛应用于FastAPI、Starlette等现代Python Web框架中。在0.0.22版本之前,当用户配置非默认的UPLOAD_DIR目录并启用UPLOAD_KEEP_FILENAME=True选项时,库未能正确验证和过滤用户提交的文件名。攻击者可以通过构造包含路径遍历序列(如../)的恶意文件名,使上传的文件被写入服务器文件系统的任意位置。攻击成功后,攻击者可能覆盖系统关键文件、植入恶意代码或读取敏感信息,对应用程序的安全性造成严重威胁。由于该漏洞利用无需认证且可通过网络远程触发,因此具有较高的实际危害性。
漏洞根源在于python-multipart库在保存上传文件时,直接使用用户提供的原始文件名进行文件路径拼接,而未对文件名中的路径遍历字符进行充分过滤。具体来说,当UPLOAD_KEEP_FILENAME=True时,代码会保留文件的原始名称而非生成随机文件名,此时如果文件名包含../等目录遍历序列,文件可能被写入UPLOAD_DIR之外的目录。攻击者通过构造类似../../../etc/cron.d/malicious的文件名,配合恶意文件内容,可实现向系统关键目录写入文件。CVSS 3.1评分8.6(高危)反映了该漏洞的高可利用性和中等机密性影响、高完整性影响及低可用性影响的特征。修复版本0.0.22在文件保存逻辑中增加了路径规范化检查,防止目录遍历攻击。