8 月 23 日至 24 日 的夜间,两个 llama.cpp 的 ggml-RPC 服务器漏洞相继在国家漏洞数据库中公布,时间相隔不到一小时。两者都出在同一组件中。二者在发布版本的代码树中都没有修复。

更严重的那个

CVE-2026-781478 月 23 日 UTC 23:16 公布,问题出在 deserialize_tensor 函数中。服务器在未验证的情况下直接从网络数据中读取 opop_params。对于自定义操作,这种结构包含一个 函数指针——随后该指针会被调用。数据库明确指出,这与此前一个 CVE 不同,后者只是增加了缓冲区检查,并未验证操作字段。RPC 服务器无需身份验证。

第二个漏洞,以及它 41 天的修复

CVE-2026-781488 月 24 日 UTC 00:16 公布,是 rpc_server::graph_compute 中的空指针解引用,可远程触发。它是两者中较轻的一个,也是有修复的那个——一个于 7 月 14 日 提交的拉取请求,在 CVE 公布 41 天 后仍未合并。

常见表述误导之处

这些漏洞通常会被报道为“中等严重性”,因为这是它们都附带的标签。该标签对应较新的 CVSS 4.0 量表,两者都被评为 6.9——一个是远程可控的间接调用,一个是空指针崩溃,却得到同样的分数,这本身就应引发怀疑。在旧的 CVSS 3.1 量表上,同一评估者则把二者正确区分开来:函数指针问题为 7.3,属于高危,崩溃则为 5.3。分数并不矛盾;它们是不同的量表,而目前被展示出来的那个恰好抹平了差异。

不只是评分的问题

更严重那个 CVE 背后的问题于 7 月 3 日 被报告,并于 8 月 18 日not_planned 为由关闭——这是一次因不活跃而自动关闭,发生在漏洞公布前五天。这两个问题都不是未知缺陷。它们都在跟踪系统里,而跟踪系统继续向前。