<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 殺不死 Java!

          共 5413字,需瀏覽 11分鐘

           ·

          2021-12-24 02:55

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          Apache Log4j2 漏洞最新進(jìn)展及解決方案:臥槽!Log4j2 再爆雷,Log4j v2.17.0 橫空出世。。。

          作者:Erik Costlow
          譯者:彎月
          原文:https://foojay.io/today/log4j-isnt-killing-java/
          譯文:https://blog.csdn.net/csdnnews/article/details/121951895

          上一篇:Log4j2 維護(hù)者發(fā)聲:沒有工資,還要挨罵!

          Java 作為頂級(jí)編程語言之一,已經(jīng)在企業(yè)級(jí)軟件開發(fā)領(lǐng)域活躍 25 年了。有人不斷宣傳 Java 已死,同時(shí)也有人堅(jiān)稱 Java 活得好好的。最近,又有報(bào)道稱 log4j 2 漏洞將再次“殺死” Java。我們?cè)_玩笑說,Java 博物館就好像是一個(gè)墓園,記錄了每一次“死亡”的經(jīng)過。

          技術(shù)圈被 log4j 2 漏洞掀起巨浪,各大安全公司紛紛發(fā)文介紹該漏洞的危害,并給出了各種臨時(shí)解決方案。還有一些博主也發(fā)表文章教我們?nèi)绾握业揭资芄舻牡胤?,并采取相?yīng)的防御措施。還有大量帖子跟著起哄,討論如何采用一些不必要的防御技術(shù)。

          目前,log4j 2 官方團(tuán)隊(duì)已發(fā)布 2.16.0 新版本,加固漏洞防御機(jī)制。log4j 2 是一款基于 Java 研發(fā)的開源日志系統(tǒng),因此,當(dāng)史詩級(jí)漏洞被爆出后,便有人宣稱 log4j 2 漏洞將再次“殺死” Java,已經(jīng)被“死亡”過無數(shù)次的 Java,就像是開了一個(gè)墓園,記錄每次“死亡”經(jīng)過。

          本文將簡單介紹一下 Java 生態(tài)系統(tǒng),說明什么是日志記錄框架、在何處使用以及使用的原因,此外,還將介紹各個(gè)團(tuán)隊(duì)?wèi)?yīng)當(dāng)如何觀察和控制 JVM 的行為。

          1、Java 開發(fā)人員應(yīng)該做哪些安全工作

          快速給 JDK 和庫打補(bǔ)丁是當(dāng)前最有效的技術(shù),可避免絕大多數(shù)大規(guī)模的黑客攻擊。

          給庫文件打補(bǔ)?。ū匦瑁?/strong>

          當(dāng)代碼庫中存在漏洞時(shí),最有效的技術(shù)就是打補(bǔ)丁以去除漏洞。如果不給庫文件打補(bǔ)丁,那么應(yīng)用程序很有可能被黑客入侵,攻擊者將獲得系統(tǒng)及其數(shù)據(jù)的完整訪問權(quán)限。

          無論在何種情況下,通常打補(bǔ)丁都很有效。

          日志框架可能來自任何依賴項(xiàng),可能由另一個(gè)庫引入(即傳遞依賴項(xiàng)),而非由開發(fā)人員添加(即直接依賴項(xiàng))。我們可以使用依賴項(xiàng)分析工具,例如 Contrast Community Edition,來檢測(cè)依賴項(xiàng)和其他自定義的漏洞。

          此外,還有一些分析依賴關(guān)系的開源工具,比如 Maven 依賴樹(dependency:tree)和 Gradle 依賴樹。NetBeans 等 IDE 也提供了依賴關(guān)系圖可視化工具。

          對(duì)于 log4j2 漏洞,你必須升級(jí)到 2.15.0 或更高版本。

          給 JRE 打補(bǔ)丁,升級(jí)到 Java 的安全基線(推薦,定期執(zhí)行)

          每個(gè)Java 主要版本都會(huì)維護(hù)一個(gè)安全基線。由于每個(gè)季度 JDK 都會(huì)提供帶有新安全改進(jìn)的補(bǔ)丁,因此這個(gè)安全基線也會(huì)不斷向前移動(dòng)。低于安全基線的 Java 包含已知的安全問題,應(yīng)該升級(jí)。

          這是標(biāo)準(zhǔn)的安全最佳實(shí)踐,與 log4j 2 漏洞沒有直接關(guān)系,也不會(huì)修復(fù)該漏洞。

          各個(gè)團(tuán)隊(duì)可以使用 Foojay Disco API 自動(dòng)監(jiān)控安全基線,并及時(shí)地升級(jí)系統(tǒng)。開發(fā)人員可以將這個(gè)更新與 GitHub 操作相結(jié)合,確保在每次構(gòu)建代碼時(shí),都使用最新的安全更新。如果發(fā)生安全事件,則立即升級(jí) JRE,同時(shí)重新構(gòu)建并重新部署代碼。下面這個(gè)測(cè)試矩陣中就包含了這類的 GitHub 操作(https://github.com/foojayio/discoTestingMatrix)。

          推薦一個(gè) Spring Boot 基礎(chǔ)教程及實(shí)戰(zhàn)示例:https://github.com/javastacks/spring-boot-best-practice

          Java 安全基線的升級(jí)時(shí)間為:每年 1 月、4 月、7 月和 10 月,17 日前后的周二。詳細(xì)信息包含在Oracle 重要補(bǔ)丁更新計(jì)劃(https://www.oracle.com/security-alerts/)中,OpenJDK 漏洞組(https://foojay.io/pedia/security-vulnerability-management/)也采用了同一個(gè)計(jì)劃。此外,如果出現(xiàn)重大問題,Oracle 還會(huì)提供計(jì)劃外的安全更新。但 log4j 2 漏洞不屬于這種情況。

          另外,最新最全的 Java 面試題整理好了,微信搜索Java面試庫小程序在線刷題。

          以下配置演示了如何使用 Java 11 的安全基線:

          jobs:
          ??java11:
          ????runs-on:?${{?matrix.os?}}
          ????strategy:
          ??????matrix:
          ????????os:?[ubuntu-latest,?macos-latest,?windows-latest]
          ????????update:?[x]
          ????????package:?[jdk,?jre]
          ??????fail-fast:?false
          ??????max-parallel:?4
          ????name:?${{?matrix.package?}}?11.0.${{?matrix.update?}},?${{?matrix.os?}}
          ????steps:
          ????-?uses:?actions/checkout@v1
          ????-?name:?Set?up?JDK?11?Zulu
          ??????uses:?foojayio/setup-java@disco
          ??????with:
          ????????java-package:?${{?matrix.package?}}
          ????????java-version:?11.0.${{?matrix.update?}}
          ????????distro:?zulu
          ????-?name:?java?-version
          ??????run:?java?-version

          定期檢測(cè)自定義安全漏洞(推薦測(cè)試采用)

          自動(dòng)化安全工具可以捕獲安全漏洞,不需要安全專業(yè)知識(shí)。將這類安全工具集成到 Java 應(yīng)用程序,就可以實(shí)現(xiàn)安全監(jiān)測(cè),并記錄安全信息。有些工具會(huì)根據(jù)依賴項(xiàng)的數(shù)量來決定是否存在漏洞,而這種方法則會(huì)根據(jù)依賴信息,由集成的分析器來報(bào)告這些依賴庫的組合情況,并判斷組合后是否安全。

          例如,集成分析器不只是簡單地檢查 log4j2 存在與否及其版本,而且還可以確定攻擊者是否可以控制遠(yuǎn)程日志輸入。

          此外,Contrast Community Edition 之類的免費(fèi)分析器還能夠即時(shí)捕獲 log4j 2,并捕獲許多其他的安全漏洞,例如:

          使用 JDK Flight Recorder 監(jiān)控安全事件

          JDK Flight Recorder 是現(xiàn)代 OpenJDK 發(fā)行版中包含的性能分析工具,它不僅可以生成一些安全信息,而且開銷非常低。各個(gè)團(tuán)隊(duì)可以使用 JDK Flight Recorder 來記錄許多 IO 操作,例如 JRE 訪問了哪些文件,或者哪些類會(huì)被反序列化。

          通過使用 JDK Flight Recorder 監(jiān)視 Java 應(yīng)用程序事件,并通過數(shù)據(jù)流將事件傳輸?shù)桨踩畔⒑褪录芾恚⊿ecurity Information and Event Management,即SIEM)系統(tǒng)中,Java 團(tuán)隊(duì)就可以監(jiān)視異常行為,并通過可防止漏洞的 Java 反序列化過濾器來檢查各個(gè)類是否安全。

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          2、哪些安全措施沒有太大作用

          對(duì)于 log4j 2 漏洞的問題,Web Application Firewall(WAF)之類基于網(wǎng)絡(luò)的防御和工具可能在短期內(nèi)有一定的效果,但通常都沒有太大作用,而且工作量非常大。

          圖:該圖演示了網(wǎng)絡(luò)層無法檢測(cè)到的漏洞

          系統(tǒng)屬性和動(dòng)態(tài)補(bǔ)丁的效果一般

          有幾個(gè)補(bǔ)丁和系統(tǒng)屬性可以控制 log4j 2 的行為并阻止攻擊。有時(shí)候,有些庫無法及時(shí)更新,或者團(tuán)隊(duì)在努力更新依賴項(xiàng),但需要一定的時(shí)間,在這兩種情況下,就可以考慮這幾個(gè)補(bǔ)丁和系統(tǒng)屬性。

          最新面試題整理好了,大家可以在Java面試庫小程序在線刷題。

          相關(guān)的 Java 系統(tǒng)屬性有兩個(gè):

          將這兩個(gè)屬性設(shè)置為 false 可以阻止遠(yuǎn)程攻擊。

          還有一個(gè)動(dòng)態(tài)的補(bǔ)丁,它可以連接到正在運(yùn)行的 JVM 并給其打補(bǔ)丁。這個(gè)補(bǔ)丁必須在 JVM 每次啟動(dòng)時(shí)應(yīng)用。雖然這兩種方法有一定的作用,但相較而言,更新庫更簡單。

          3、Java 如何處理日志

          Java 開發(fā)人員一般可以從多個(gè)日志系統(tǒng)和記錄方式中進(jìn)行選擇。多年來,隨著社區(qū)的發(fā)展,許多日志框架也可以協(xié)同工作了:

          2022年推薦的日志系統(tǒng)

          依賴項(xiàng)越少越好,項(xiàng)目越新越好,因此我們可以考慮 System Logger。

          有些項(xiàng)目擁有大量依賴項(xiàng),但優(yōu)勢(shì)在于它們使用的日志記錄工具與大多數(shù)的依賴項(xiàng)相同,只不過選用了其他日志記錄方式。

          如果你沒有任何日志系統(tǒng),則可以考慮 System Logger,它是一款擁有良好 API 的 JDK 日志記錄工具。

          日志系統(tǒng)到底是做什么的?

          日志框架能夠讓應(yīng)用程序的主人看到通用格式的日志消息、時(shí)間戳、線程名稱以及其他數(shù)據(jù)。

          此外,團(tuán)隊(duì)可以將不同的輸出重定向到不同的位置,甚至無需顯示出來,例如,你可以將訪問日志發(fā)送到一個(gè)文件,將系統(tǒng)報(bào)告發(fā)送到其他地方,然后選擇顯示所有級(jí)別的日志信息,或者動(dòng)態(tài)查看某個(gè)庫的調(diào)試信息。



          23 種設(shè)計(jì)模式實(shí)戰(zhàn)(很全)
          重磅官宣:Redis 對(duì)象映射框架來了!!
          勁爆!Java 協(xié)程要來了。。。
          JetBrains 發(fā)布下一代 IDE,IDEA 可以扔了
          重磅!JDK 17 發(fā)布,正式免費(fèi)。。
          面試官:Java 8 map 和 flatMap 的區(qū)別?
          終于!Spring Cloud 2021 正式發(fā)布。。
          推薦一款代碼神器,代碼量至少省一半!
          程序員精通各種技術(shù)體系,45歲求職難!
          重磅!Spring Boot 2.6 正式發(fā)布
          Spring Boot 學(xué)習(xí)筆記,這個(gè)太全了!



          關(guān)注Java技術(shù)??锤喔韶?/strong>



          獲取 Spring Boot 實(shí)戰(zhàn)筆記!
          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                    五月婷婷中文 | 在线黄色小视频 | 国产精品热久久 | 一级黄色A片电影 | 无码免费一区二区三区四区 |