Python曝出15年“老洞”,绿盟君教你如何不“踩坑”

简介: 近日,Python的Tarfile模块中发现一个存在长达15年之久的漏洞,引起了大家的关注,一是存在时间比较久,最早在2007年就被披露并记录为CVE-2007-4559;二是可能影响超过35万个开源存储库。

近日,Python的Tarfile模块中发现一个存在长达15年之久的漏洞,引起了大家的关注,一是存在时间比较久,最早在2007年就被披露并记录为CVE-2007-4559;二是可能影响超过35万个开源存储库。

一、Tarfile漏洞始末

2007年8月24日,某安全研究员上报了Tarfile的目录遍历漏洞[1]。在漏洞上报6天后,组件的作者Lars认为不需要修复该漏洞,是否信任来源包来提取其中内容是使用者应该关注的,并做了文档方面的警告更新[2]。

image.png

2014年3月,作者Lars再次收到Tarfile的遍历攻击漏洞的反馈。Lars指出,Tarfile容易受到所有已知针对tar程序的攻击,并列举出9大攻击可能,包括路径遍历、符号链接文件攻击、权限操作、内存泄露等,并强调Tarfile 只是是一个库,不能替代 GNU tar。在一个月后,Lars提议用一个新类SafeTarFile,它是 Tarfile 类的子类和替代品,来解决安全问题,不过截止到2021年2月,SafeTarFile 没有通过现有的测试[3]。

二 漏洞利用原理

Tarfiles 是多个不同文件和元数据的集合,其中Tarfile用于解压缩时,会对文件名、文件大小、校验信息记录在tarinfo中。而Tarfile在调用extract或extractall函数时,可以在文件名中添加操作系统分隔符(“/”或“\”)以及“..”来进行目录遍历攻击。以下是一个典型的6行代码做的一个攻击示范。

image.png

最近重新发现了该漏洞的某安全研究员在博客中演示了,在 Windows 上的 Spyder IDE中利用 Tarfile的攻击过程。Spyder IDE 使用扩展名为 .spydata 的文件类型,该数据用于填充变量资源管理器,由于 .spydata 文件实际上是一个 tar 文件,因此程序使用 Tarfile 来提取 .spydata 文件中的所有文件。演示视频中展示了如何利用Tarfile来覆盖程序源代码,甚至尝试获得了管理员访问权限[4]。

三 解决方案

截止到2022年9月,针对此漏洞的相关 PR 仍然没有被合并修复,所以当前几乎所有正在维护的 Python 版本均受影响。在Python官方没有合并修复方案之前,需要谨慎使用Tarfile。对于来历不清楚的包,使用Tarfile解包会存在被攻击的风险。此外,在代码中也要防止类似于上文中,利用Tarfile构造的恶意攻击。

1、通过安全产品检查是否使用Tarfile组件

绿盟代码安全审计系统SDA,拥有静态代码审计和开源组件分析等多项能力。目前通过升级最新的规则包,支持查找代码中是否存在Tarfile文件的使用,然后根据代码上下文,判断是否存在目录遍历漏洞。最新规则升级包,请联系绿盟科技售后人员或从官方升级网站下载。

通过从github上取python-scratchbox项目作为示例代码[5],经过绿盟代码安全审计系统SDA产品检测效果如下:

image.png

2、通过代码加固来规避Tarfile风险

对于必须要使用Tarfile的情况下,这里建议做一下函数加固,增加路径检测check_path操作,确保Tarfile执行时不会出现路径穿越操作,具体代码示例如下:

image.png

image.png

相关文章
|
5月前
|
Rust 安全 API
Python潮流周刊#3:PyPI 的安全问题
Python潮流周刊#3:PyPI 的安全问题
64 1
|
数据采集 Ubuntu 数据挖掘
PyHubWeekly | 第七期:5款Python小工具,最后一款会给惊喜
我们日常工作和学习中,会经常做一些重复性的动作,这让人很痛苦,却又很无奈,本期介绍的第5款工具就可以彻底解放你在网页端的各种重复且枯燥的工作。下面,就来看一下本期的内容吧。
PyHubWeekly | 第七期:5款Python小工具,最后一款会给惊喜
|
8天前
|
JSON JavaScript 前端开发
借助Python神器,快速get上市公司财务数据
借助Python神器,快速get上市公司财务数据
16 0
|
2月前
|
SQL 安全 网络安全
GitHub点赞飙升!电信大牛的Python渗透测试实战指南
在网络安全领域,会不会编程,是区分“脚本小子”和真正黑客的关键。实际的渗透测试中会遇到各种复杂的网络环境,常用工具不一定能满足需求,这时就需要对现有工具进行扩展,或者编写符合要求的工具、自动化脚本,这都需要一定的编程能力。在分秒必争的 CTF 竞赛中,想要高效地使用自制脚本工具来达成各种目的,更是需要有编程能力。 Python 这两年越来越火!除了语法简单、开发效率高以外,Python 最大的优势就是拥有超多第三方库。很多有名的网络安全工具和安全系统框架都是用 Python 开发的!所以,掌握 Python 编程已经成为网络安全从业者的必备技能之一。如果你想成为一名合格的安全从业者,就不能只会
|
前端开发 程序员 数据处理
Python老司机给上路新手的3点忠告
对于初学者,尤其是自学者,太多问题可能成为你编程之路上的坎,一不小心就从入门到放弃了。
|
Python
Python—不良人李星云小项目
运行窗口后在窗口内按下鼠标键即会切换图片并且播出一段李星云经典语录,松开鼠标键就会切回之前的图片!
241 0
|
数据采集 Linux 开发工具
猿创征文 | 三款Python学习开发任选工具
猿创征文 | 三款Python学习开发任选工具
112 0
猿创征文 | 三款Python学习开发任选工具
|
数据采集 人工智能 开发者
学Python不知从何下手?Python技能树助力一臂之力|Python技能树测评
学Python不知从何下手?Python技能树助力一臂之力|Python技能树测评
154 0
学Python不知从何下手?Python技能树助力一臂之力|Python技能树测评
|
Python
Python黑科技05-小项目-让你的微信朋友圈变得不一般
努力让自己变得更好,并坚持对外输出价值,让别人因为你的言行而变得更好。 只有强大的我们才可以通过自身的努力去帮助他人解决更多的问题,这样不仅我们自身会拥有更加美好的人生,我们身边的人也会收获到更加美好的人生。
Python黑科技05-小项目-让你的微信朋友圈变得不一般
|
机器学习/深度学习 编解码 计算机视觉
学会这些Python美图技巧,就等着女朋友夸你吧
Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV。而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了。今天就给大家带了一些美图技巧,让你的图美翻全场,朋友圈赞不绝口,女朋友也夸你,富贵你好厉害啊!
210 0
下一篇
无影云桌面