漏洞概述

hustoj 是一个基于 PHP/C++/MySQL/Linux 的开源在线判题系统,广泛用于 ACM/ICPC 和 NOIP 等编程竞赛训练。该系统在导出比赛排名(contestrank.xls.php 和 admin/ranklist_export.php)时存在 CSV 注入(公式注入)漏洞。由于未对用户提供的“Nickname”字段进行适当过滤,当管理员将排名导出为 .xls 文件并在 Microsoft Excel 中打开时,恶意构造的 Excel 公式将被自动执行,可能导致远程命令执行(RCE)或敏感数据泄露。

漏洞详情

  • CVE 编号:CVE-2026-23873
  • 漏洞类型:CWE-1236(CSV 注入 / 公式注入)
  • CVSS 评分:5.2(中危)
  • 影响版本:所有 hustoj 版本(截至 2026 年 1 月 22 日无可用修复)

影响范围

所有使用 hustoj 在线判题系统的部署环境均受影响,特别是启用了比赛排名导出功能且允许用户自定义昵称(Nickname)的实例。

风险分析

攻击者可通过注册账户并设置包含 Excel 公式的昵称(如 =CMD|’…’/),诱使管理员导出并打开排名文件。一旦文件在 Excel 中打开,恶意公式将被执行,可能导致本地任意命令执行、敏感信息窃取或进一步内网渗透。该漏洞利用依赖于管理员的主动操作(用户交互),但危害程度较高,尤其在教育或竞赛环境中管理员权限较高时。

修复建议

  • 目前官方尚未发布修复补丁,建议临时禁用排名导出功能,或对用户输入的 Nickname 字段进行严格过滤,禁止以等号(=)、加号(+)、减号(-)、@ 等 Excel 公式起始字符开头的内容。
  • 若必须导出数据,建议改用纯 CSV 格式并确保以文本方式导入 Excel,避免自动公式解析;或在导出前对所有字段添加制表符(\t)或单引号(’)前缀以强制转为文本。

参考链接