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(0xc00006f1e8, 0xc0000281a8, 0xa, 0x10, 0xc00006f1b8, 0x1)

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

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

官方修复的版本

  • v1.21.1
  • v1.20.7
  • v1.19.11
  • v1.18.19

KLTS 修复的版本