最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot存在路徑遍歷漏洞CVE-2021-22118的問題解析

 更新時(shí)間:2023年09月01日 15:02:40   作者:冰點(diǎn).  
CVE-2021-22118?是一個(gè)在?Spring?Boot?中發(fā)現(xiàn)的漏洞,該漏洞關(guān)系到?Spring?Boot?的開發(fā)者工具(Devtools)中的遠(yuǎn)程更新(Remote?Update)功能,這篇文章主要介紹了Spring?Boot存在路徑遍歷漏洞CVE-2021-22118,需要的朋友可以參考下

在這里插入圖片描述

0.前言

背景:Spring Boot存在路徑遍歷漏洞。CVE-2021-22118:

在這里插入圖片描述

官方 issue也有對此的記錄,感興趣可以看下

https://github.com/spring-projects/spring-boot/issues/26627

https://github.com/spring-projects/spring-boot/issues/27543

CVE-2021-22118 是一個(gè)在 Spring Boot 中發(fā)現(xiàn)的漏洞。該漏洞關(guān)系到 Spring Boot 的開發(fā)者工具(Devtools)中的遠(yuǎn)程更新(Remote Update)功能。在某些情況下,攻擊者可能會利用這個(gè)功能進(jìn)行目錄遍歷攻擊,從而訪問到系統(tǒng)中的敏感文件。

需要注意的是,這個(gè)漏洞只會影響到使用了 Spring Boot Devtools 的基于文件系統(tǒng)的應(yīng)用,而且應(yīng)用還必須滿足以下兩個(gè)條件之一:

  • 遠(yuǎn)程更新功能被開啟(spring.devtools.restart.enabled = true)。
  • 應(yīng)用使用了默認(rèn)的 HTTP 更新 URL(spring.devtools.restart.remote-secret)。

如果你的應(yīng)用滿足以上條件,建議盡快進(jìn)行修復(fù)。修復(fù)這個(gè)漏洞的方法有以下幾種:

  • 將 Spring Boot 升級到 2.3.10.RELEASE 或更高版本。
  • 將 Spring Boot 升級到 2.4.5 或更高版本。
  • 將 Spring Boot 升級到 2.5.0 或更高版本。

關(guān)于這個(gè)漏洞的詳細(xì)信息,可以參考 Spring 官方的安全通告。
請注意,對于已經(jīng)在生產(chǎn)環(huán)境中運(yùn)行的應(yīng)用,修改CORS配置可能會影響到正常的功能。因此,在實(shí)施這個(gè)修復(fù)之前,應(yīng)該先進(jìn)行充分的測試。

1.參考文檔

CVE 官方網(wǎng)站 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22118

2.基礎(chǔ)介紹

CVE-2021-22118是在Spring Boot中發(fā)現(xiàn)的一個(gè)嚴(yán)重的路徑遍歷漏洞。這個(gè)漏洞使攻擊者能夠以應(yīng)用程序的身份訪問計(jì)算機(jī)的敏感文件和數(shù)據(jù)。

1. 影響的版本

這個(gè)漏洞影響了Spring Boot 2.3.02.3.7,2.4.0至`2.4.3以及2.5.0版本。

2. 漏洞利用原理:

漏洞源于Spring Boot在處理用戶輸入的URL時(shí),未能正確處理“…/”這種可能引起路徑遍歷的模式。在Spring Boot應(yīng)用程序配置了Spring MVC并使用了默認(rèn)的資源處理時(shí),攻擊者可以通過精心構(gòu)造的URL,訪問到應(yīng)用程序類路徑上的文件。這就使得攻擊者有可能通過這個(gè)漏洞訪問和下載敏感文件,或者執(zhí)行非法操作。

官方的修復(fù)方式是發(fā)布了新的版本,即Spring Boot 2.3.8、2.4.42.5.1。在這些版本中,官方對路徑遍歷的處理進(jìn)行了改進(jìn)。

具體來說,Spring Boot在處理用戶請求的URL時(shí),加強(qiáng)了對“…/”這種可能引起路徑遍歷的模式的處理。當(dāng)應(yīng)用程序檢測到請求的URL包含這種模式時(shí),會進(jìn)行更嚴(yán)格的校驗(yàn),以防止攻擊者利用這種模式來訪問應(yīng)用程序類路徑之外的文件或目錄。

為了修復(fù)這個(gè)問題,受影響的用戶應(yīng)盡快將其Spring Boot版本升級到官方發(fā)布的新版本。實(shí)際上,這也是對待任何軟件漏洞的通用策略:一旦發(fā)現(xiàn)有漏洞存在,就應(yīng)該盡快升級到最新的、已修復(fù)該漏洞的版本。

3.解決方案

3.1. 方案1

Spring在其2.3.82.4.42.5.1版本中修復(fù)了這個(gè)漏洞。對于受到影響的用戶,推薦盡快升級到這些版本。同時(shí),作為臨時(shí)措施,可以限制用戶能訪問的URL,或者在服務(wù)器端增加對用戶提交的URL進(jìn)行更嚴(yán)格的校驗(yàn)。

3.2. 方案2

臨時(shí)解決方案
在Nginx中,你可以使用location指令和rewrite指令來攔截和阻止包含"…/"的請求,以下是一個(gè)基本的示例配置:

server {
    listen 80;
    server_name your_domain.com;
    location / {
        if ($request_uri ~* "\.\.\/") {
            return 403;
        }
        proxy_pass http://your_upstream;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

這個(gè)配置會監(jiān)聽80端口,并將請求代理到http://your_upstream,如果請求的URI中包含"…/“,Nginx會返回403狀態(tài)碼,即"禁止訪問”。

這只是防止路徑遍歷攻擊的一種方法,并不能完全保證安全。因此,升級到?jīng)]有這個(gè)漏洞的Spring
Boot版本,仍然是最安全的解決方案。此外,你還應(yīng)該定期更新Nginx版本,以應(yīng)用最新的安全修復(fù)。

3.3. 方案3

在Spring Boot中你可以通過定制一個(gè)攔截器來防止路徑遍歷攻擊。攔截器可以在處理請求前對請求的URL進(jìn)行檢查,如果URL包含非法字符(如"…/“或”./"),則可以拒絕該請求。== 這種可能會誤攔截,大家使用的時(shí)候注意充分測試和考慮各種渠道==
一個(gè)簡單示例可供參考

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class PathTraversalInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String uri = request.getRequestURI();
        if (uri.contains("../") || uri.contains("./")) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
            return false;
        }
        return true;
    }
}

需要在一個(gè)配置類中將這個(gè)攔截器注冊到Spring的攔截器鏈中:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
    private final PathTraversalInterceptor pathTraversalInterceptor;
    public WebConfig(PathTraversalInterceptor pathTraversalInterceptor) {
        this.pathTraversalInterceptor = pathTraversalInterceptor;
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(pathTraversalInterceptor);
    }
}

這樣,Spring將會在處理每個(gè)請求前,先執(zhí)行PathTraversalInterceptorpreHandle方法來檢查請求的URL。

這種方法 也只能作為臨時(shí)的解決方案,它不能替代升級SpringBoot到?jīng)]有該漏洞的版本。因?yàn)楣粽呖赡軙褂镁幋a繞過你的檢查,而升級Spring Boot可以徹底修復(fù)該漏洞。

到此這篇關(guān)于Spring Boot存在路徑遍歷漏洞CVE-2021-22118的文章就介紹到這了,更多相關(guān)Spring Boot漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 回調(diào)機(jī)制(CallBack) 詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • idea創(chuàng)建SpringBoot自動創(chuàng)建Lombok無效果的問題解決方案

    idea創(chuàng)建SpringBoot自動創(chuàng)建Lombok無效果的問題解決方案

    這篇文章主要介紹了idea創(chuàng)建SpringBoot自動創(chuàng)建Lombok無效果的問題解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 利用JDBC的PrepareStatement打印真實(shí)SQL的方法詳解

    利用JDBC的PrepareStatement打印真實(shí)SQL的方法詳解

    PreparedStatement是預(yù)編譯的,對于批量處理可以大大提高效率. 也叫JDBC存儲過程,下面這篇文章主要給大家介紹了關(guān)于利用JDBC的PrepareStatement打印真實(shí)SQL的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Java中防止數(shù)據(jù)重復(fù)提交超簡單的6種方法

    Java中防止數(shù)據(jù)重復(fù)提交超簡單的6種方法

    在平時(shí)開發(fā)中,如果網(wǎng)速比較慢的情況下,用戶提交表單后,發(fā)現(xiàn)服務(wù)器半天都沒有響應(yīng),那么用戶可能會以為是自己沒有提交表單,就會再點(diǎn)擊提交按鈕重復(fù)提交表單,這篇文章主要給大家介紹了關(guān)于Java中防止數(shù)據(jù)重復(fù)提交超簡單的6種方法,需要的朋友可以參考下
    2021-11-11
  • 最新評論

    峨眉山市| 长丰县| 兴宁市| 广宁县| 永宁县| 东海县| 苍山县| 雅安市| 博爱县| 内江市| 交城县| 交城县| 正安县| 古田县| 嘉禾县| 古田县| 潜江市| 怀宁县| 历史| 色达县| 射洪县| 苏尼特左旗| 绥中县| 上饶市| 玛沁县| 绍兴市| 景洪市| 北京市| 龙岩市| 焦作市| 双鸭山市| 通河县| 平原县| 灌云县| 高尔夫| 女性| 北安市| 克什克腾旗| 丰县| 昭通市| 岳普湖县|