【问题标题】:How to bypass cve-2020-26160 vulnerability in dgrijalva/jwt-go?如何绕过 dgrijalva/jwt-go 中的 cve-2020-26160 漏洞?
【发布时间】: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。如何修复此漏洞?

【问题讨论】:

    标签: go jwt jwt-go


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      github.com/dgrijalva/jwt-go 25 天前解决了这个漏洞,您使用的版本(v3.2.0)是 2018 年的,更新为使用该库的最新版本应该可以解决所有 jwt 安全问题

      【讨论】:

      • 为什么每个人总是说“更新”而不是“更新,方法如下。”这个答案很好——准确,但没用。
      • 因为更新一个库和安装它是一样的,这是一件非常简单的事情
      • 不适合所有人。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多