### 关键漏洞信息 #### 漏洞概述 - **漏洞名称**: Unsafe PHP Deserialization in Gearman Worker Allows Conditional Object Injection - **风险等级**: High - **CVE编号**: CVE-2026-24891 #### 影响的产品与版本 - **产品**: openITCOCKPIT Community Edition - **受影响版本**: 5.3.1 - **修复版本**: 5.4.0 #### 漏洞原因 1. 直接对外部提供的数据使用`unserialize()`函数 2. 缺乏`allowed_classes`限制 3. 依靠部署级别的信任假设,而不是强制验证 4. 在消息队列边界上使用PHP序列化作为IPC格式 #### 攻击场景 如果Gearman守护程序或工作者可被攻击者访问(例如,由于网络暴露、容器配置错误或缺少防火墙规则),攻击者可以将任意序列化有效载荷提交给`oipc_gearman`函数。 #### 证明概念 1. 从现有gadget链生成有效载荷,例如使用Ambionics的phpggc工具。 2. 通过直接发送载荷触发不安全的反序列化过程。 #### 影响 成功利用漏洞可能使攻击者能够: - 实例化任意PHP对象 - 触发magic方法(`__wakeup`, `__destruct`) - 执行可能导致远程代码执行、文件系统修改、凭据泄露和工作环境的持久妥协的gadget链 #### 缓解与建议 - **代码级别**:建议用更安全的替代方案替换不安全的反序列化;使用结构性格式(如JSON)进行进程间通信,验证载荷结构和来源。 - **部署级别**(纵深防御):限制Gearman对localhost或私有网络的访问,为Gearman服务实施严格的防火墙规则,避免将Gearman暴露于不受信任或多租户网络。