Kubernetes社区披露了编号为CVE-2021-3121的安全漏洞,存在该漏洞的程序可能会因为处理了包含恶意Protobuf消息而崩溃。如果您使用的Gogo Protobuf编译器版本过低,可能存在该漏洞。本文介绍该漏洞的影响和影响范围,以及防范措施。

漏洞影响

kubernetes系统组件由于自身有应对崩溃的恢复机制,当遇到恶意提交的Protobuf消息时不会中断服务,所以不在该漏洞的影响范围内。

在应用系统中程序接收处理Protobuf消息时,如果组件没有应对崩溃的恢复机制,那么这类程序都在该漏洞影响范围内,且被恶意攻击时服务可能会中断。

影响范围

Kubernetes社区经过测试验证API Server不受该漏洞的影响,但为了避免您受到该安全漏洞隐患的影响,社区对相关Protobuf文件进行了升级,具体修复版本如下:

防范措施

如果在您的应用系统代码中使用了自动生成的Protobuf消息,并且发现相关组件因为以下异常退出,则可能存在该漏洞。

panic: runtime error: index out of range [-9223372036854775804]

goroutine 1 [running]:

v1.(*MessageName).Unmarshal(0xc000057ef8, 0xc0000161a0, 0xa, 0x10, 0xc000057ec8, 0x1)

        .../protofile.pb.go:250 +0xb86

如果您使用了Protobuf消息的相关组件,推荐将Gogo Protobuf编译器升级到漏洞修复版本(v1.3.2或更高的版本),再基于升级后的Protobuf编译器重新生成相关的Protobuf消息。