<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          瘋了!Spring 再官宣驚天大漏洞..

          共 4388字,需瀏覽 9分鐘

           ·

          2022-04-01 21:12

          點擊關注公眾號,Java干貨及時送達5ac2e553a6fb5e0f8e8f1ca4b68c4949.webp

          Spring 官宣高危漏洞

          大家好,我是棧長。

          前幾天爆出來的 Spring 漏洞,剛修復完又來?

          今天愚人節(jié)來了,這是和大家開玩笑嗎?

          不是的,我也是猝不及防!這個玩笑也開的太大了??!

          你之前看到的這個漏洞已經是過去式了:

          5345d25bdd95733886b4efb413a3fef0.webp

          我以為是終點,沒想到只是起點,現在 Spring 又官宣了最新的高危漏洞:

          d9da4419388e3009ad7c54e56f40a4b7.webp

          Early Announcement??這只是一個早期的公告?可能還有中期?后期?往下面繼續(xù)看就知道了!

          漏洞詳情

          d643cf56e35854c12441c1571ddc1ffb.webp
          漏洞CVE-2022-22965
          漏洞名稱遠程代碼執(zhí)行漏洞
          嚴重級別高危
          影響范圍Spring Framework
          - 5.3.0 ~ 5.3.17
          - 5.2.0 ~ 5.2.19
          - 老版本及其他不受支持的版本

          麻了,麻了,這次是高危,必須引起重視啊??!

          漏洞描述:

          用戶可以通過數據綁定的方式引發(fā)遠程代碼執(zhí)行 (RCE) 攻擊漏洞,觸發(fā)的前提條件如下:

          • JDK 9+
          • Apache Tomcat(war 包部署形式)
          • Spring MVC/ Spring WebFlux 應用程序

          使用 Spring Boot 開發(fā)一般都是打成 jar 包,默認內嵌 Tomcat 形式,這對使用 Docker/ 微服務這種應用特別合適,但也可以切換為 war 包部署,但很少使用,但也不是沒有,比如說一般的傳統(tǒng)項目,為了兼容老環(huán)境,或者運維統(tǒng)一維護 Tomcat 環(huán)境,可能也會使用 war 包部署。

          所以,如果你使用的是默認的 Spring Boot 可執(zhí)行 jar 包默認內嵌 Tomcat 部署,則不受影響,但由于這個漏洞的普遍性,可能還有其他方式進行利用。。難道這就是 Early Announcement 的含義?還來,真要搞瘋了!

          如果你想關注和學習最新、最主流的 Java 技術,可以持續(xù)關注公眾號Java技術棧,公眾號第一時間推送。

          解決方案

          Spring 用戶升級到以下安全版本:

          • Spring 5.3.18+
          • Spring 5.2.20+

          Spring Boot 用戶升級到以下安全版本:

          • Spring Boot 2.6.6+
          • Spring Boot 2.5.12+

          麻了麻了!又得升級??這 Spring Boot 2.6.5 剛發(fā)布沒幾天。。??赡苡捎谶@個漏洞太過于高危,沒有辦法,必須升級主版本應對,以免用戶使用了帶了漏洞的版本。

          但是,如果不想升級框架主版本,也是可以的,畢竟很多應用不一定會兼容 Spring Boot 最新版本,比較 Spring Cloud 或者其他依賴的底層框架。

          Spring Boot 用戶可以使用以下方法臨時解決:

          package?car.app;

          import?java.util.ArrayList;
          import?java.util.Arrays;
          import?java.util.List;

          import?org.springframework.boot.SpringApplication;
          import?org.springframework.boot.autoconfigure.SpringBootApplication;
          import?org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
          import?org.springframework.context.annotation.Bean;
          import?org.springframework.web.bind.ServletRequestDataBinder;
          import?org.springframework.web.context.request.NativeWebRequest;
          import?org.springframework.web.method.annotation.InitBinderDataBinderFactory;
          import?org.springframework.web.method.support.InvocableHandlerMethod;
          import?org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
          import?org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory;


          @SpringBootApplication
          public?class?MyApp?{

          ?public?static?void?main(String[]?args)?{
          ??SpringApplication.run(CarApp.class,?args);
          ?}

          ?@Bean
          ?public?WebMvcRegistrations?mvcRegistrations()?{
          ??return?new?WebMvcRegistrations()?{
          ???@Override
          ???public?RequestMappingHandlerAdapter?getRequestMappingHandlerAdapter()?{
          ????return?new?ExtendedRequestMappingHandlerAdapter();
          ???}
          ??};
          ?}


          ?private?static?class?ExtendedRequestMappingHandlerAdapter?extends?RequestMappingHandlerAdapter?{
          ??@Override
          ??protected?InitBinderDataBinderFactory?createDataBinderFactory(List?methods)?{
          ???return?new?ServletRequestDataBinderFactory(methods,?getWebBindingInitializer())?{
          ????@Override
          ????protected?ServletRequestDataBinder?createBinderInstance(
          ??????Object?target,?String?name,?NativeWebRequest?request)?throws?Exception?{
          ?????ServletRequestDataBinder?binder?=?super.createBinderInstance(target,?name,?request);
          ?????String[]?fields?=?binder.getDisallowedFields();
          ?????List?fieldList?=?new?ArrayList<>(fields?!=?null???Arrays.asList(fields)?:?Collections.emptyList());
          ?????fieldList.addAll(Arrays.asList("class.*",?"Class.*",?"*.class.*",?"*.Class.*"));
          ?????binder.setDisallowedFields(fieldList.toArray(new?String[]?{}));
          ?????return?binder;
          ????}
          ???};
          ??}
          ?}
          }

          如果沒用過 Spring Boot,這份Spring Boot 學習筆記,這個太全了!分享給你學習下,沒用 Spring Boot 可以從 @EnableWebMvc 注解直接切換為擴展 DelegatingWebMvcConfiguration ,然后重寫其 createRequestMappingHandlerAdapter 方法,具體可以參考:

          https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-config-advanced-java

          總結

          總結下這次受影響的用戶:

          • JDK 9+
          • Apache Tomcat(WAR 包部署形式)
          • Spring MVC/ Spring WebFlux 應用程序

          這次的大漏洞雖然是高危的,國內可能影響面有限。影響的關鍵還是JDK 9+ 的用戶,國外用 JDK 9+ 的比較多,JDK 11 和 JDK8 占據主要陣營,JDK 17+ 也在逐步發(fā)力替代 JDK 8。

          據我了解,國內用 JDK 8 的比較多,JDK 9+ 應該只是少部分群體,如果你用的 JDK 8 及以下版本,那恭喜你,目前不受影響,否則盡快修復、升級保平安。

          另外還有兩點要澄清一下:

          1)關于 Spring 棄用 SerializationUtils 工具類的動作大家不要誤解,這個工具類在 Spring 框架中只有一種用法,并且不會暴露于外部輸入,棄用動作與此漏洞無關。

          2)對于在報告此漏洞之前發(fā)布的 ?Spring Cloud Function 的漏洞 存在一些猜疑,這也和本漏洞無關。

          最后,希望這次真的是終點了。。

          參考文檔:

          • https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

          • https://tanzu.vmware.com/security/cve-2022-22965

          最后,我也會繼續(xù)關注和分享最新 Spring 漏洞進展,如果你想關注和學習最新、最主流的 Java 技術,可以持續(xù)關注公眾號Java技術棧,公眾號第一時間推送。

          版權聲明: 本文系公眾號 "Java技術棧" 原創(chuàng),原創(chuàng)實屬不易,轉載、引用本文內容請注明出處,抄襲者一律舉報+投訴,并保留追究其法律責任的權利。

          e2cd8a63b35008dd27214c45824fa5a4.webp





          d737e014a076a59e6ebbf436622f7485.webp


          突發(fā)!Spring 也淪陷了。。。2021 年發(fā)生的 10 件技術大事??!
          23 種設計模式實戰(zhàn)(很全)
          Spring Boot 保護敏感配置的 4 種方法!再見單身狗!Java 創(chuàng)建對象的 6 種方式阿里為什么推薦使用 LongAdder?AnotherRedisDesktopManager 開始收費了?別再寫爆爆爆炸類了,試試裝飾器模式!Java 18 發(fā)布,默認 UTF-8,finalize 被棄用。。
          Spring Boot 3.0 M1 發(fā)布,正式棄用 Java 8Spring Boot 學習筆記,這個太全了!



          關注Java技術??锤喔韶?/strong>



          4caa08ffaf34cbcc32aa8ba7c4ac3689.webp獲取 Spring Boot 實戰(zhàn)筆記!
          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  超污视频网站在线观看免费 | 欧美熟妇在线 | 7799天天综合网 | AV中文字幕播放 | 无码毛片在线观看 |