【发布时间】:2021-08-04 21:22:08
【问题描述】:
由于一个高级漏洞,容器安全状态不会在 Gitlab 管道中传递。这个漏洞是jwt-go,它的安装版本是v3.2.0+incompatible。错误标题如下:jwt-go: access restriction bypass vulnerability-->avd.aquasec.com/nvd/cve-2020-26160。相关 repo 的 Go 版本是 1.16.3。如何修复此漏洞?
【问题讨论】:
由于一个高级漏洞,容器安全状态不会在 Gitlab 管道中传递。这个漏洞是jwt-go,它的安装版本是v3.2.0+incompatible。错误标题如下:jwt-go: access restriction bypass vulnerability-->avd.aquasec.com/nvd/cve-2020-26160。相关 repo 的 Go 版本是 1.16.3。如何修复此漏洞?
【问题讨论】:
CVE-2020-26160 漏洞是由于 dgrijalva/jwt-go 错误地将 JWT aud 字段建模为 string,而当基于 JWT specs 时,它应该是一段字符串。
一般情况下,“aud”值是一个区分大小写的字符串数组
你不能自己绕过它,因为它是库中的一个错误:https://github.com/dgrijalva/jwt-go/issues/428
切换到official社区分叉golang-jwt/jwt,其v3.2.1修复了漏洞:https://github.com/golang-jwt/jwt/releases/tag/v3.2.1
- 导入路径更改:有关更新代码的提示,请参见 MIGRATION_GUIDE.md 将导入路径从 github.com/dgrijalva/jwt-go 更改为 github.com/golang-jwt/jwt
- 修复了 VerifyAudience 中 string 和 []string 之间的类型混淆问题 (#12)。 这修复了 CVE-2020-26160
【讨论】:
github.com/dgrijalva/jwt-go 25 天前解决了这个漏洞,您使用的版本(v3.2.0)是 2018 年的,更新为使用该库的最新版本应该可以解决所有 jwt 安全问题
【讨论】: