查看 github advisories 列表 github.com/advisories/GHSA,定位到 patch 的 java 版本是 3.25.5,打开到 25.x 分支。事后发现相关修复最早出现在 2024 年 7月,merge 到 25.x 分支是 9 月 19,与 advisories 的时间引证。
这个库的 issue 和 comment 里没有直接写 cve 编号,不太好找相关的 pr 和 commit,在网上搜到了一篇博客Understanding CVE-2024-7254,提到了问题来自 DiscardUnknownFieldsParser
这个 parser,并在 reference 里给了个 commit 的 link cc8b34。
从链接点过去,commit 里面的符号涉及到 recurse 之类的文字,看起来像那么回事,然后又翻了翻这个分支 7 月到 9 月的几个 commit,发现在 #18387 的 pr 里 cherry pick 了这个 commit,pick 的时间是 9.19,感觉对了
关于 protobuf 的多语言 API
粗略看了下,按照 Ruby 的 readme,似乎有至少两个 core。CRuby 调用 C 的实现,jRuby 调用 Java 的实现。
java, kotlin, jruby 这组应该是调用的同一份底层库。他们在一个 repo 下面, kotlin 和 java 源码在同一个路径下,官方描述 kotlin 是 build on top of java;jRuby 在另一个路径下面,readme 描述是一个插件,感觉是不涉及底层实现,通过 JRuby生成衔接部分的 Ruby API