CVE 编号:CVE-2020-29007
受影响产品的名称和版本:Mediawiki Score(0.3.0 及以下所有版本)
问题类型:CWE-96:静态保存代码中指令的不当中和(“静态代码注入”)
摘要
Score 是一个 Mediawiki 扩展,可根据用户提供的 Lilypond 或 ABC 标记生成乐谱。 在我们的测试中,我们确定该扩展容易通过嵌入在 Lilypond 标记中的 Scheme 代码遭受远程代码执行攻击。
Score 的所有版本(0.3.0 及以下)都允许在 Web 服务器进程的上下文中执行任意用户控制的代码。
描述
Score 扩展通过将用户控制的 Lilypond 或 ABC 标记传递给 GNU Lilypond 二进制程序来生成乐谱。 由于该二进制程序在没有 -dsafe 选项的情况下执行,因此会执行嵌入在 Lilypond 标记中的任意 Guile Scheme 代码,包括与操作系统 shell 交互的代码。
要利用此漏洞,攻击者必须能够编辑易受攻击 wiki 上的任意文章。 在大多数配置中,未经身份验证的攻击者应该也能够利用该漏洞。
复现
在 wiki 上开始编辑任意文章。
将文章内容替换为以下代码:
{{Image frame|content=\new Staff <<{g^#
(number->string(system "/usr/bin/false"))
}>>}}
点击“显示预览”
如果输出包含如下图所示的图像,则该 wiki 存在漏洞:

缓解措施
禁用 Score 扩展。