加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

Python代码审计实战案例总结之反序列化和命令实行

发布时间:2022-07-12 09:28:38 所属栏目:安全 来源:互联网
导读:Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成。目前Python代码审计思路,呈现分散和多样的趋势。Python微薄研发经验以及结合实际遇到的思路和技巧进行总结,以便于朋友们的学习和参考。 反序列化漏洞在Python代码审计中属于
  Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成。目前Python代码审计思路,呈现分散和多样的趋势。Python微薄研发经验以及结合实际遇到的思路和技巧进行总结,以便于朋友们的学习和参考。
 
  反序列化漏洞在Python代码审计中属于常见高危漏洞之一,它的危害性根据执行环境略有不同,本地和远程分别为7.2和10的评分。通过评分也可得知漏洞危害是显而易见。那么咱们应该如何发现这个漏洞?关于发现此种漏洞要从反序列化的模块说起,Python的反序列化模块主要为pickle、cPickle、yaml等等。有关反序列化漏洞问题在多年前就被人们所发现,目前所看到的大多数反序列化漏洞是由于应用调用了存在问题的反序列化模块。那么咱们抓住寻找反序列化模块则有可能会发现反序列化漏洞。
 
  1. dask 命令执行漏洞(CNVD-2019-16789)
 
  关于这个漏洞是笔者在2019年审计anaconda环境模块时候发现,提交CNVD通过验证,虽然是本地触发漏洞,但绝对是关于反序列化漏洞很好的案例,漏洞利用yaml模块问题进行反序列化。
 
  (1) 漏洞分析
 
  漏洞影响的版本 1.1.4 ,漏洞出现于dask模块中config.py文件,第139行。源于程序通过coolect_yaml方法中使用了yaml所导致的问题,方法用途从yaml文件收集配置。
 
  (2)  修复方法
 
  yaml 在对于反序列化问题上,已经提供了安全反序列化的解决方法,程序使用yaml.safe_load可以进行安全的反序列化。咱们对于审计问题的修复建议根据实际情况使用。
 
  2. NumPy 命令执行漏洞(CVE-2019-6446)
 
  在NumPy 1.16.0版本之前存在反序列化命令执行漏洞,用户加载恶意的数据源造成代码执行。按照惯例在讲这个反序列化之前要说明Python的pickle的反序列化原理和栈指令。但不是本篇重点,故暂不讨论。
 
  漏洞触发位置,位置在lib/npyio.py,第418行。这里有反序列化加载的方法。笔者将一些代码省略,直观看重点。默认格式要求ZIP文件前缀PKx03x04后缀PKx05x06,如果不满足默认的格式,则会执行pickle.load()反序列化方法。

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读