go - 如何绕过 dgrijalva/jwt-go 中的 cve-2020-26160 漏洞?

标签 go jwt jwt-go

由于存在一个高级漏洞,容器安全状态未在 Gitlab 管道中传递。该漏洞为jwt-go,安装版本为v3.2.0+inknown。错误标题如下:jwt-go:访问限制绕过漏洞-->avd.aquasec.com/nvd/cve-2020-26160。相关存储库的 Go 版本是 1.16.3。如何修复此漏洞?

最佳答案

CVE-2020-26160漏洞是由于以下事实造成的:当基于 JWT specs 时,dgrijalva/jwt-go 错误地将 JWT aud 字段建模为 string。它应该是一段字符串。

In the general case, the "aud" value is an array of case-sensitive strings

你自己无法绕过它,因为这是库中的一个错误:https://github.com/dgrijalva/jwt-go/issues/428

切换到official社区 fork golang-jwt/jwt ,其v3.2.1修复了漏洞:https://github.com/golang-jwt/jwt/releases/tag/v3.2.1

  • Import Path Change: See MIGRATION_GUIDE.md for tips on updating your code Changed the import path from github.com/dgrijalva/jwt-go to github.com/golang-jwt/jwt
  • Fixed type confusion issue between string and []string in VerifyAudience (#12). This fixes CVE-2020-26160

关于go - 如何绕过 dgrijalva/jwt-go 中的 cve-2020-26160 漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68635707/

相关文章:

go - 如何在 go 中测试验证 JWT 路由

go 并使用 jwt-go 解析 token

json - Go:如何在json.Unmarshal构造时忽略类型不匹配错误?

javascript - 使用一个函数的结果作为另一个函数的变量 - node.js

asp.net-core - JWT 不记名 token 流

go - http.Request 在部署到 appengine 时有未定义的字段

go - 如何检查套接字是否正在监听

go - 在Go工作区中安装Gota软件包

sql - 预期 slice 但得到界面

rest - JWT 用于无状态 API,但 session 控制用于安全