首页/安全/渗透测试与安全评估速查/CSV 注入检查(表格公式)
常见漏洞验证121 条

CSV 注入检查(表格公式)

导出的 CSV/表格被表格软件打开时,以公式起始符开头的单元格会被求值;检查导出功能对用户可控字段的处理。

CSV 注入是什么

CSV 注入(表格公式注入)指系统导出 CSV/Excel 时,把用户可控字段原样写进单元格;当内容以等号、加号、减号、@ 或制表符、回车开头时,Excel、WPS、LibreOffice 打开文件会按公式求值。攻击者可在昵称、备注、收货地址等字段预埋公式,等运营人员导出对账表打开时才触发。它危害的不是被测服务器,而是导出文件在办公终端上反过来执行,可能外带本地数据或弹出调用外部程序的确认框。CWE-1236 将其归类为公式注入,属于导出链路的下游风险。

基本信息

触发字符等号、加号、减号、@ 开头,以及制表符 0x09、回车 0x0D 前缀
必要条件用户可控字段未经清洗进入导出,且文件被表格软件打开
受影响方打开文件的办公终端,不是被评估的服务器
判定依据导出文件中单元格原样保留公式形态
修复方向导出统一转义或前置单引号,并限制危险前缀

典型使用场景

  • 导出对账:财务与运营导出订单流水,昵称、备注列来自用户输入
  • 工单与问卷汇总:管理员导出反馈表做线下分析,自由文本列不可控
  • 客户名单导出:公司名、收货地址由外部注册者自行填写
  • 日志与审计导出:把含用户输入的管理日志导成表格交给审计方
  • 第三方对接:把数据导成 CSV 交给合作方,对方在自己办公软件里打开

验证步骤

验证步骤
1. 用测试账号在可控字段写入标记串(以等号或加号开头的无害字符串)
2. 触发导出功能,下载 CSV/Excel 文件
3. 用文本编辑器查看单元格原始内容,判断公式形态是否保留  # 不要直接双击打开
4. 记录字段名、导出方式、文件格式与预览结果
5. 仅在隔离环境用副本文件复现求值,不在真实办公终端打开

导出现象观察点

导出场景可控字段观察点
用户列表导出昵称、个性签名单元格是否原样以等号加号减号开头
订单导出备注、收货地址是否被前置单引号或空格转义
工单导出标题、详情正文换行与制表符是否保留并形成新行
导入模板回显用户回填后的回显值回显值再次导出时是否进入公式上下文
修复视角:导出收口到公共工具函数,对所有文本列统一转义,限制危险前缀;同时提供纯数据导出格式,并提醒运营人员先看内容再打开文件。
验证时禁止使用真实可执行公式,一旦文件在被控终端打开可能造成数据外带;用无害标记串观察单元格形态即可定性。

易错点

  • 用真实可执行的公式做验证:文件一旦被打开即可能外带数据,应改用无害标记串只观察形态
  • 只在浏览器预览页查看,未核对下载文件:预览通常已转义,真实文件才是判定依据
  • 忽略换行与制表符前缀:除等号加号减号外,0x09 与 0x0D 前缀同样能触发后续单元格求值
  • 只测 CSV 不测 XLSX:两种格式都要覆盖,xlsx 本身可直接承载公式
  • 报告里不写受影响岗位:应点明是财务还是运营在打开文件,便于定级与推动整改

数据来源与参考

  • OWASP CSV Injection
  • CWE-1236
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌