漏洞概述 漏洞名称: Blind Server-Side Request Forgery (SSRF) via Webhook URL (通过 Webhook URL 进行的盲服务器端请求伪造) 描述: Papra 的 webhook 系统允许经过身份验证的用户注册任意 URL 作为 webhook 端点。服务器会对这些 URL 发起出站 HTTP POST 请求,包括 localhost、内部网络范围和云提供商元数据端点。 根本原因: 1. URL 验证不足: 中的 URL 验证仅检查语法正确性(使用 Zod 的 ),未验证目标地址范围。 2. 无 IP 预检: 中的 HTTP 客户端直接向注册的 URL 发送请求,未进行 IP 验证。 3. 数据持久化: 响应(包括来自内部服务的响应)被存储在数据库中。 影响范围 受影响版本: <= 26.3.0 修复版本: 26.4.0 CVSS 评分: 5.0 / 10 (Moderate) 具体影响: 1. 云凭证窃取: 在 AWS/GCP/Azure 托管实例上,指向云元数据端点(如 )的 webhook 会导致服务器获取实时 IAM 凭证。 2. 内部信息泄露: Webhook 交付暴露了文档 ID、组织 ID、名称和事件时间戳。 3. 内部网络侦察: 通过注册 webhook 并观察响应状态码,可以映射内部服务。 4. 数据外泄: 所有 HTTP 响应(包括来自内部服务的响应)都存储在 表中。 修复方案 建议在发送请求之前验证 webhook URL 解析后的 IP,阻止所有私有地址范围。 修复代码示例 (TypeScript): POC 代码/利用代码 1. 注册 webhook 并触发请求 (Step 3 & 4): 2. 验证内部地址接受情况 (Step 5):