漏洞总结:FastChat 模型工作器中的阻塞事件循环导致拒绝服务 漏洞概述 标题:通过模型工作器中的阻塞事件循环导致拒绝服务(ff66426 的不完整修复) 描述: 单个未经身份验证的 HTTP 请求到 或 可以完全冻结 FastChat 模型工作器,持续整个推理时间。当事件循环被阻塞时,无法处理其他请求——包括心跳、健康检查和其他所有用户的请求。这会导致工作器拒绝服务并最终被控制器注销。 根本原因: 根因在 commit 中部分修复了 的 ,但遗漏了三个相同 bug 的其他实例。 影响范围 受影响产品:FastChat (pip 包) 受影响版本:<= 0.2.36(报告时最新版本,commit ) 严重程度:高 CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CWE:CWE-400: 不受控的资源消耗 具体影响: 1. 单个 HTTP 请求即可冻结整个模型工作器——推理期间不处理其他请求(秒到分钟级) 2. 破坏心跳——阻塞的事件循环阻止心跳响应,导致控制器注销工作器。该工作器服务的所有模型对用户不可用 3. 跨模型级联——在 部署中,该工作器服务的所有模型同时受影响 4. 维持 DoS——连续的阻塞请求使工作器永久冻结 5. 无需身份验证——工作器端点( 、 )不受 API 密钥保护 修复方案 使用 包装同步调用,将阻塞操作卸载到线程池: POC 代码 完整利用代码 利用步骤代码 步骤 3 - 利用易受攻击的端点 (第 218 行): 步骤 4 - 验证已修复的端点 (第 209 行)未被阻塞: 原始漏洞代码片段 发生位置 1 - (第 112 行): 发生位置 2 - (第 218 行): 发生位置 3 - (第 236 行):