### 漏洞修复总结 **漏洞概述** 该提交记录展示了 `llama.cpp` 项目(一个基于 C++ 的 Llama 模型推理库)中一个关键的安全修复。提交信息明确标注为 `rpc : RCE patch (#20980)`,表明该补丁修复了 RPC 模块中存在的远程代码执行(RCE)漏洞,有效防止攻击者通过构造恶意数据实现远程代码执行。 **影响范围** - **仓库**: `ngml/llama.cpp` - **文件**: `ngml/llama.cpp/rpc/rpc.cpp` - **函数**: `deserialize_tensor_info` **修复方案** 修复针对反序列化逻辑中的潜在漏洞,具体措施包括: 1. **增加空指针检查**:在 `deserialize_tensor_info` 函数中新增 `if (result != nullptr)` 判断,确保仅在 `result` 指针有效时才执行后续操作。 2. **强制错误标记**:在条件判断块内,通过 `GML_LOG_ERROR("rpc") tensor_msg[0] = (char*) "error";` 将消息头 `tensor_msg[0]` 强制设为 `"error"`,用于中断异常流程并标记错误状态。 3. **限制内联汇编执行**:将原本可能在无条件或错误条件下执行的 `__asm__` 指令移入 `if` 块内部,使其仅在 `result` 非空时才生效,从而阻断了利用路径,防止恶意输入触发未预期的内存或代码操作。 **修复代码片段** ```cpp if (result != nullptr) { GML_LOG_ERROR("rpc") tensor_msg[0] = (char*) "error"; __asm__ ( result == nullptr ? "tensor" : "header", %0); } ```