JE2Se ' Blog

  • Web安全
  • 移动安全
  • 应急响应
  • 安全工具
  • 实用技巧
  • 安全学习
  • Python应用
  1. 首页
  2. Python应用
  3. 正文

被忽视15年的Python漏洞

2022年10月19日 191点热度 0人点赞 0条评论
部分图片模糊,双击查看原图

事件概述

据The Hacker News报道,在Python模块库中,存在一个一个长达15年未修复的安全漏洞,该漏洞可能导致约35万的项目陷入风险之中。这个存在安全风险的模块为tarfile模块,该模块涉及人工智能/机器学习、网络开发、媒体、安全、IT管理等多个领域。

其实早在2007年,该漏洞就已经被安全研究人员披露,并且标记过CVE-2007-4559,但是至今为止并没有获得正式的修复补丁,该漏洞尚未修复,已被无意间添加到全球几十万个开源和闭源项目中,从而可能造成庞大的软件供应链攻击面。
研究人员在分析影响后发现,该漏洞存在于成千上万个开源和闭源软件项目中。GitHub是一个面向开源及私有软件项目的托管平台,在 GitHub 中,对调用tarfile模块的代码文件进行统计,近期发现存在 251669个文件的 Python 代码中包含了 import tarfile”,影响数以万计的项目。

研究人员抽取了257个更有可能含有易受攻击代码的代码存储库,手动检查了其中的175个存储库,看看它们是否受到影响。结果发现,61%的代码存储库易受攻击。对其余存储库运行自动检查后发现,受影响的项目数量增加到了65%,表明这是个广泛的问题。

事件威胁分析

该漏洞是CVE-2007-4559(CVSS评分6.8),位于tarfile模块中。如遭成功利用,该漏洞可导致攻击者通过任意文件写而执行代码。
该漏洞最初披露于2007年8月,只需打开特殊构造的tar文档,即可在目标机器上覆写任意文件。简而言之,攻击者利用tarfile漏洞可上传任意恶意文件,通过路径穿越覆写任意代码,从而导致攻击者控制目标设备。
发现该漏洞的安全研究员 Kasimir Schulz 表示,“该漏洞是位于tarfile模块中extract和extractall 函数中的路径遍历攻击,可导致攻击者通过在TAR文档中的文件名称中增加 ‘../’,extract和extractall 函数的时候覆写任意文件。该漏洞类似于近期披露的位于RARlab 解压缩文件中的漏洞(CVE-2022-30333)。
对该漏洞进行验证分析,首先通过以下脚本生成一个恶意的tar文件。由于MacOS、Windows、Linux文件服务功能对命名的要求,需要使用一下脚本生成恶意tar文件。

以上代码意为创建一个名为”../torjan.php”的tar压缩文件,将恶意文件webshell.php文件调用tar模块进行压缩,在压缩前对恶意文件webshell.php进行重写,将名称重命名为“../torjan.php”,最后生成一个名为data.tar文件。
创建一个新文件checkdemo.py模拟业务系统中业务场景,获取用户上传的tar文件,并进行解压操作,代码如下:

当用户上传该包含恶意文件的data.tar模块时,后台程序调用tar.extractall()模块进行解压,程序运行后发现成功在上层当前运行workspace目录上级目录解压出tarjan.php文件。

对该漏洞进行分析,跟进tar.extractall()函数,调转到extractall函数所在文件。

调用该函数,首先对传入的文件进行基础信息获取,如压缩包内文件内容、文件名称等,在2045行进行预处理操作,拼接解压后的文件路径,此处并未进行任何安全处理,直接拼接程序运行目录(path)以及压缩包内文件的文件名称(tarinfo.name),导致路径拼接结果为“程序执行路径”+“文件名称”,最后的待解压路径为“./workspace/../torjan.php”,在后期文件解压释放的时候导致路径穿越漏洞。同理Python的tarfile模块中的extract函数中的代码也过分信任TarInfo对象中的信息,导致路径穿越漏洞。

解决建议

截止到2022年9月,针对此漏洞的相关 PR 仍然没有被合并修复,所以当前几乎所有正在维护的 Python 版本均受影响。在Python官方没有合并修复方案之前,需要谨慎使用Tarfile,排查当前项目中是否使用Tarfile模块,可手动进行项目全局检索,检索“import tarfile”,或者使用开源工具Creosote进行自动化检测
项目地址如下:https://github.com/advanced-threat-research/Creosote
在Python官方没有合并修复方案之前对于特定情况下必须使用tarfile模块,建议对函数进行加固,增加路径检测策略,确保tarfile模块在执行过程中避免出现路径穿越的漏洞。概念代码如下:

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 漏洞分析
最后更新:2022年10月19日

JE2Se

半道出家安全行业,行业菜鸡~ 喜好安全测试,安全开发 期待各位大佬的爱抚~

打赏 点赞
< 上一篇

文章评论

取消回复

JE2Se

半道出家安全行业,行业菜鸡~
喜好安全测试,安全开发
期待各位大佬的爱抚~

标签聚合
BurpSuite 应急响应 python Web安全 xss badusb 神器 wifi
最新 热点 随机
最新 热点 随机
被忽视15年的Python漏洞 HVV漏洞合集EXP3 HVV漏洞合集EXP2 HVV漏洞合集EXP 反弹shell的几种方式总结 Web源码泄露相关漏洞总结
IIS短文件名漏洞修复 CSRF漏洞剖析I BurpSuite 1.7.31版本,附带注册机,可激活全版本 BadUSB防御-初探 Async_Exp 2.0 异步并发漏洞检测工具 Django-导航页面-认证-后台
理想三旬
https://www.je2se.com/wp-content/uploads/2019/08/2019080401483538.mp3
友情链接
  • SecIN社区
  • VFsec Team
  • WaBUG
  • 云众可信
  • 子杰'Blog
  • 猎豹安全实验室
  • 阿峰‘Blog

COPYRIGHT © 2022 JE2Se ' Blog.

京ICP备17069779号-1