Behave 中的代码执行漏洞:深入探究

admin 2024年7月2日23:54:15评论4 views字数 1061阅读3分32秒阅读模式
Behave 中的代码执行漏洞:深入探究

介绍

大家好!今天我想分享一下我刚开始从事漏洞研究员工作时发现的(并因此获得报酬的)第一批漏洞之一。

Behave 似乎是一个很酷的存储库,由于我喜欢 Python,所以我决定在其中进行探索。第一步是了解什么是行为驱动开发 (BDD) 以及 behavior 本身的工作原理。然后是时候 fork 存储库并使用我最喜欢的 SAST 工具Snyk对其进行扫描了。

果然,我得到了很多结果。我仔细检查了所有结果,排除了误报和严重程度较低的问题,直到我偶然发现了一个看起来很有希望的东西——脚本convert_i18n_yaml.py

漏洞概述

此漏洞是CWE-502 不受信任数据反序列化的典型示例https://cwe.mitre.org/data/definitions/502.html。在我们的案例中,这是由于 Behave 使用时yaml.load未指定加载器或pyYAML版本而导致的。

在pyYAML5.1 或更低版本中,如果未指定加载器,则使用默认加载器。此配置是许多类似反序列化漏洞的根源,wiki对此pyYAML有专门的警告。

开发

假设应用程序使用旧版本的 pyYAML,例如 3.13。攻击者可以制作恶意yaml文件并将其传递给convert_i18n_yaml.py。由于不安全的反序列化,yaml文件中的恶意代码将被执行。

这是一个更实际的例子:

1、创建恶意 YAML 文件(evil_i18n.yml):

!!python/object/apply:os.system [ “ls -la” ]

2、运行convert_i18n_yaml.py恶意文件:

python convert_i18n_yaml.py --data=evil_i18n.yml i18n.py

这将ls -la在服务器上执行命令!

缓解措施

修复此漏洞的最简单方法是使用yaml.safeLoad。这也是官方的修复方法。从那时起,Behave 就弃用了此文件并在其新版本中将其删除。

结论

所有正在使用 的人yaml.load,请停止使用。请使用yaml.safeLoad。如果必须使用yaml.load,请指定一个加载器,例如SafeLoader,或者更好的是,使用 的最新版本pyYAML

如果你读到这里,谢谢你!希望你喜欢。祝你狩猎愉快~

https://medium.com/@piyushbhor22/code-execution-vulnerability-in-behave-a-deep-dive-b8c7431a71f9

原文始发于微信公众号(Ots安全):Behave 中的代码执行漏洞:深入探究

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日23:54:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Behave 中的代码执行漏洞:深入探究https://cn-sec.com/archives/2871224.html

发表评论

匿名网友 填写信息