<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    CVE-2021-37580 Apache ShenYu 管理員認證繞過漏洞分析

    VSole2021-11-18 12:03:43

    漏洞信息

    ShenYu(原名 Soul)是一款高性能,響應式的網關,同時也是應用于所有微服務場景的,可擴展、高性能、響應式的 API 網關解決方案。

    該框架由于JWT認證的不正確使用,導致Apache ShenYu 2.3.0和2.4.0版本存在管理員認證繞過漏洞CVE-2021-37580。

    環境搭建

    項目地址為:

    Apache ShenYu
    https://github.com/apache/incubator-shenyu/releases

    最近的三個發行版為2.4.1、2.4.0、2.3.0。

    docker pull apache/shenyu-admin:2.4.0docker network create shenyudocker run -d -p 9095:9095 --net shenyu apache/shenyu-admin:2.4.0
    

    使用`9095`端口登錄系統,默認密碼是`admin/123456`。

    漏洞分析

    根據漏洞信息,漏洞為JWT認證問題,當HTTP請求中包含`X-Access-Token`時,調用StatelessAuthFilter進行token校驗,認證的框架是Apache Shiro。

    下載2.4.0和2.4.1版本源代碼進行補丁對比,最主要的更改位于`JwtUtils.java`。在JWT-token生成和校驗時均使用generateAlgorithm函數獲取秘鑰,其中`JWT`和`JWTVerifier`使用的標準第三方庫。

    /* JwtUtils.java */    public static String generateToken(final String userName) {    try {        return JWT.create().withClaim("userName", userName).withExpiresAt(new Date()).sign(generateAlgorithm());    } catch (IllegalArgumentException | JWTCreationException e) {        log.error("JWTToken generate fail ", e);    }    return StringUtils.EMPTY_STRING;}
    private static DecodedJWT verifierToken(final String token) {    DecodedJWT jwt = null;    try {        JWTVerifier verifier = JWT.require(generateAlgorithm()).build();        jwt = verifier.verify(token);    } catch (JWTVerificationException e) {        log.info("jwt decode fail, token: {} ", token, e);    }    return jwt;}
    private static Algorithm generateAlgorithm() {    JwtProperties properties = SpringBeanUtils.getInstance().getBean(JwtProperties.class);    return Algorithm.HMAC256(properties.getKey());}
    

    `generateAlgorithm`從`JwtProperties`中讀取秘鑰,但默認為空。

    public class JwtProperties {    private String key;}
    

    測試結果如下,代碼中`salt`的值可以隨意設置。

    修復方式

    在`generateToken`和`verifyToken`中添加手動設置秘鑰。

    在API中添加key的讀取和認證。

    漏洞apache
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    近日,安識科技A-Team團隊監測到一則 Apache 官方發布安全補丁的通告,共修復了2個安全漏洞,其中包含1個高危漏洞的信息。 對此,安識科技建議廣大用戶及時升級到安全版本,并做好資產自查以及預防工作,以免遭受黑客攻擊。
    2022年5月4日,Apache發布安全公告,修復了一個 Apache Jena中的XML外部實體注入漏洞漏洞編號:CVE-2022-28890,漏洞威脅等級:中危。
    2022年4月26日,Apache發布安全公告,修復了一個 Apache CouchDB中的遠程權限提升漏洞漏洞編號:CVE-2022-24706,漏洞威脅等級:高危,漏洞評分:7.5。
    2022年4月26日,Apache發布安全公告,修復了一個?Apache Doris中的硬編碼漏洞漏洞編號:CVE-2022-23942,漏洞威脅等級:中危。
    2022年4月20日,Apache發布安全公告,修復了一個 Apache APISIX中的信息泄露漏洞漏洞編號: CVE-2022-29266,漏洞威脅等級:嚴重。
    2022年4月20日,Apache發布安全公告,修復了一個 Apache APISIX中的信息泄露漏洞漏洞編號: CVE-2022-29266,漏洞威脅等級:嚴重。
    2022年4月12日,Apache發布安全公告,修復了一個Apache Struts2 中的遠程代碼執行漏洞漏洞編號:CVE-2021-31805,漏洞威脅等級:高危,漏洞評分:8.5。
    2022年1月21日,360漏洞云團隊監測到Apache發布安全公告,修復了一個Apache ShardingSphere ElasticJob-UI中的信息泄露漏洞漏洞編號:CVE-2022-22733,漏洞威脅等級:中危。
    2022年1月18日,360漏洞云團隊監測到Apache Knox發布安全公告,修復了一個Apache Knox中的XSS漏洞漏洞編號:CVE-2021-42357,漏洞威脅等級:中危。
    2022年1月4日,360漏洞云團隊在互聯網上監測到一則關于 Apache Geode 存在一個信息泄露漏洞的信息。漏洞編號:CVE-2021-34797,漏洞威脅等級:低危。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类