加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Python常见安全漏洞及修复方法集合!你所不会的这里都有!

发布时间:2018-11-16 14:02:50 所属栏目:业界 来源:智能运维小讲堂
导读:概述 编写安全的代码很困难,当你学习一门编程语言、一个模块或框架时,你会学习其使用方法。在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例。然而,许多 Python 开发人员却根本不知道这些。 以

在流行的Python项目 Ansible 中找到的这样一个例子(链接:https://www.talosintelligence.com/reports/TALOS-2017-0305),你可以将此值提供给 Ansible Vault作为(有效的)YAML,它使用文件中提供的参数调用 os.system。

Python中的10个常见安全漏洞及修复方法

所以,从用户提供的值中加载 YAML 文件会让应用大门洞开,很容易遭受攻击。

修复方法:

总是使用 yaml.safe_load,除非你有其它更好的方法。

8、Pickle漏洞

用pickle反序列化数据和YAML一样糟糕。在pickle对象时,Python类可以声明一个名为__reduce__的魔术方法,该方法返回一个字符串、或一个元组。攻击者可以使用它来引用其中一个子进程模块,在主机上运行任意命令。

这有一个在Python2中pickle一个类并打开shell的例子(链接:https://blog.nelhage.com/2011/03/exploiting-pickle/)。更多利用pickle漏洞的方法请看这个链接:https://lincolnloop.com/blog/playing-pickle-security/

Python中的10个常见安全漏洞及修复方法

修复方法:

切勿用pickle反序列化不受信任或未经身份验证的数据。改用另一种序列化模式,如JSON。

9、使用系统自带的Python而不修补漏洞

大多数可移植操作系统都自带Python2,通常还是旧版本。

由于“Python”,即CPython是用C语言编写的,所以Python解释器本身存在漏洞。 C语言中常见的安全问题与内存分配有关,所以存在缓冲区溢出错误。

多年来CPython出现了多个溢出漏洞,每个漏洞都在后续版本中进行了修复。

也就是说,如果你修补了Python本身的漏洞,你就是安全的。

这里有一个Python2.7.13及以下版本的整数溢出漏洞实例,链接:https://www.cvedetails.com/cve/CVE-2017-1000158/。 Ubuntu17以前版本的Python漏洞请参看链接:https://distrowatch.com/table.php?distribution=ubuntu

修复方法:

安装最新版本的Python并及时修补漏洞。

10、不修补依赖包的漏洞

类似于修补Python本身的漏洞,您还需要定期修补依赖包漏洞。有人习惯于使用PyPi软件包的“固定”版本,这种做法很可怕。他们认为“这些是有用的版本”,所以每个人都对漏洞置若罔闻。

上面提到的所有漏洞如果存在于你使用的包中,它们同样很致命。这些软件包的开发人员无时不刻不在解决安全问题。

修复方法:

使用类似于PyUP.io这个网站提供的服务去检查更新,向应用程序发送pull/merge 请求,运行测试,让软件包保持更新。使用InSpec这样的工具(链接:https://www.inspec.io/docs/reference/resources/pip/)来验证真实环境中的安装版本,并确保修补了最小版本或多个连续版本的漏洞。

【编辑推荐】

  1. 黑客将Python作为攻击编码语言的首选
  2. 一键黑客工具:一个Python脚本搞定所有攻击操作
  3. 网络安全基础,缓冲区溢出漏洞解析
  4. 新的BLEEDINGBIT漏洞影响广泛使用的蓝牙芯片
  5. Safari信息泄露漏洞分析
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读