IPBUF安全漏洞报告
English
CVE-2026-42195 CVSS 3.4 低危

CVE-2026-42195 draw.io OAuth 重定向导致凭证钓鱼漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-42195
漏洞类型
开放重定向, 凭证钓鱼
CVSS评分
3.4 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
draw.io

相关标签

开放重定向凭证钓鱼OAuthdraw.ioCVE-2026-42195

漏洞概述

draw.io 在 29.7.9 版本之前存在安全漏洞。该应用程序的客户端接受一个名为 `gitlab` 的 URL 参数,该参数可以覆盖 OAuth 登录过程中使用的 GitLab 服务器地址。攻击者可利用此漏洞构造恶意链接,诱导用户点击“Authorize in GitLab”对话框后,弹出的页面将指向攻击者控制的主机而非合法的 gitlab.com。这可能导致用户凭证被窃取或会话状态令牌泄露。

技术细节

该漏洞源于 draw.io 客户端对 URL 参数的不安全处理。在 OAuth 认证流程中,draw.io 允许通过 GET 请求参数 `gitlab` 动态指定授权端点。由于缺乏严格的校验机制,攻击者可以将此参数设置为恶意服务器地址。当用户访问包含恶意参数的 draw.io 链接并尝试通过 GitLab 登录时,应用程序会读取该参数值。用户点击授权按钮时,浏览器会向攻击者控制的服务器发起请求。攻击者随后可以模拟 GitLab 的登录界面,诱骗用户输入账号密码,或者捕获 OAuth 请求中的 state token 和 code,从而劫持用户会话。CVSS 向量为 AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:N/A:N,攻击需要用户交互,且利用复杂度较高。

攻击链分析

STEP 1
构造恶意链接
攻击者构建包含 `?gitlab=恶意域名` 参数的 draw.io URL。
STEP 2
诱导访问
攻击者通过邮件或即时通讯工具将恶意链接发送给目标用户。
STEP 3
触发漏洞
用户访问链接并在 draw.io 界面点击“Authorize in GitLab”按钮。
STEP 4
重定向攻击
draw.io 弹出的 OAuth 授权窗口并未跳转至 gitlab.com,而是跳转至攻击者指定的恶意服务器。
STEP 5
凭证窃取
用户在伪造的登录页面输入凭证,或攻击者截获 OAuth 授权码,完成账户接管。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Proof of Concept: Malicious URL generation // The 'gitlab' parameter overrides the OAuth endpoint const targetUrl = "https://app.diagrams.net/"; const attackerControlledHost = "https://evil.com/fake-gitlab"; // Construct the malicious link const pocLink = `${targetUrl}?gitlab=${encodeURIComponent(attackerControlledHost)}`; console.log("Send the following link to the victim:"); console.log(pocLink); // When the victim clicks 'Authorize in GitLab', the popup will point to evil.com

影响范围

draw.io < 29.7.9

防御指南

临时缓解措施
在未升级版本的情况下,用户应避免点击来源不明的 draw.io 链接。若必须使用,请在点击“Authorize in GitLab”后,严格检查弹出窗口的 URL 是否确认为 gitlab.com,切勿在非官方域名下输入任何敏感信息。

参考链接