一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 如何檢查Java項目是否依賴于有漏洞的Log4j

如何檢查Java項目是否依賴于有漏洞的Log4j

2021-12-27 23:1751CTO陳峻 Java教程

本文通過展示如何對MariaDB的JDBC連接器進行有關Log4j的依賴性漏洞檢查,示范性地建議大家將相關補丁,盡早發送到任何正在使用Log4j的開源項目中,以及時發現并升級易受攻擊的版本。

如何檢查Java項目是否依賴于有漏洞的Log4j

眾所周知,被定義和跟蹤為CVE-2021-44228,也被稱為Log4Shell的Log4j漏洞,允許攻擊者在目標系統中執行任意代碼。因此,如果您的應用正在使用Log4j的2.0-alpha1到2.14.1版的話,那么就應當盡快更新到其最新的版本(目前為2.16.0)。

對此,瑞士政府發布了一張能夠很好地解釋該漏洞的被攻擊流程圖,請參見下圖:

如何檢查Java項目是否依賴于有漏洞的Log4j

下面,讓我們根據上圖,深入研究與其有關的緩解策略。

使用Maven的依賴項插件

在Maven項目中,您可以通過如下簡單命令,在依賴項樹(dependencies tree)中搜索log4j-core的相關依賴項,并檢查該項目是否使用到了受影響的依賴項。

  1. 純文本
  2. mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core

該命令使用Maven Dependency Plugin來顯示項目的依賴樹(包括各種有傳遞關系的依賴項)。通過后面的參數,該命令過濾并輸出了log4-core的依賴項。因此,如果您的項目正在依賴某個易受攻擊的Log4j版本的話,那么您將會看到如下內容:

如何檢查Java項目是否依賴于有漏洞的Log4j

在這個例子中,由輸出可知,該項目直接使用Log4j的2.14.1版。顯然,它是易受攻擊的。因此,本項目需要將如下依賴項:

  1. XML
  2. org.apache.logging.log4j
  3. log4j-core
  4. 2.14.1 -- update this! -->
  5.  

替換為:

  1. XML
  2. org.apache.logging.log4j
  3. log4j-core
  4. 2.16.0 -- or newer version -->
  5.  

同理,我在MariaDB數據庫的JDBC連接器項目中,進行了如下測試,并得出了對應的結果:

如何檢查Java項目是否依賴于有漏洞的Log4j

慶幸的是,該項目并未使用Log4j,因此它不易受到Log4Shell的攻擊。更多有關 MariaDB特定案例的信息,請參閱--https://dzone.com/articles/is-the-mariadb-jdbc-driver-affected-by-the-log4j-v。

使用Maven的幫助插件

如果您想做進一步的調查,則需要檢查有效的POM(Project Object Model,項目對象模型),并搜索項目中使用的日志記錄框架。讓我們將目光轉回剛才的MariaDB JDBC連接器項目,我使用Maven的幫助插件,生成了有效的POM。由于我使用的是類Unix的操作系統(您可以通過截圖看到,其實是macOS),因此我使用如下grep命令(在Windows中,您可以使用findstr)來過濾輸出:

  1. 純文本
  2. mvn help:effective-pom | grep log

并且得到了來自mvn的如下輸出:

如何檢查Java項目是否依賴于有漏洞的Log4j

由輸出可知,MariaDB JDBC驅動程序使用Logback作為日志記錄框架。雖然Logback不會受到Log4Shell的影響,但是它帶有1.2.8和1.3.0-alpha11版本中的相關漏洞。當然,其嚴重程度要輕得多,我們不必過于恐慌。我查看了其連接器(connector)所使用的版本,該版本號為1.3.0-alpha10。盡管Logback作為測試依賴項,被包含在MariaDB驅動程序中,但我在GitHub上發送了一個拉取請求,以便對其予以更新。在此,我鼓勵您也對自己手頭的各種開源項目執行類似的操作,以盡早發現那些易受攻擊的依賴項。

使用Syft和Grype

在包含了大量JAR文件的更復雜的項目中,您可以使用Syft和Grype之類的工具。其中Syft是一個CLI(命令行接口)工具和Go語言庫,可被用于從容器鏡像和文件系統中生成軟件物料清單(Software Bill of Materials,SBOM)。Grype則能夠通過多級嵌套,去掃描各個容器鏡像和文件系統中的漏洞。兩者可以協同使用。

使用LunaSec的工具

由開源的數據安全平臺開發的LunaSec工具,可以通過掃描目錄,以及匹配文件散列的方式,來發現是否存在Log4j依賴項的相關漏洞。該工具適用于Windows、Linux 和macOS系統。您只需在相關傳遞目錄,通過如下命令觸發該工具的掃描進程即可:

  1. 純文本
  2. log4shell scan your-project-dir

如果目標是一個易受攻擊的項目,那么你將會得到如下輸出內容:

  1. 純文本
  2. 10:04AM INF identified vulnerable path fileName=org/apache/logging/log4j/core/net/JndiManager$1.class path=test/struts-2.5.28-all/struts-2.5.28/apps/struts2-rest-showcase.war::WEB-INF/lib/log4j-core-2.12.1.jar versionInfo="log4j 2.8.2-2.12.0"

使用log4j-scan

此外,FullHunt團隊也提供了一個名為log4j-scan的開源工具。作為一個自動且全面的掃描器,它可以被用于查找易受攻擊的Log4j主機。也就是說,它能夠方便團隊掃描自己的基礎架構,并測試各種可能導致代碼執行的WAF(Web應用防火墻)繞過攻擊。該工具雖然能夠提供多個選項,但是其最基本的服務是,用戶可以將待掃描的URL傳遞給該工具,以便直接獲得有關被檢測到的漏洞報告。例如,您可以使用如下命令:

  1. 純文本
  2. python3 log4j-scan.py -u https://log4j.lab.secbot.local

其掃描結果的輸出為:

如何檢查Java項目是否依賴于有漏洞的Log4j

使用Huntress Log4Shell漏洞測試器

作為一個在線式開源工具,Huntress Log4Shell漏洞測試器可以協助您檢查,某個應用程序是否使用著Log4j的易受攻擊版本。您可以將該工具生成的字符串,作為待檢查應用的輸入。例如,您可以在某個頁面的文本輸入框中使用它。該字符串可以包括針對LDAP服務器的JNDI(Java Naming and Directory Interface,Java命名和目錄接口)查詢。服務器會記錄來自應用程序的各個請求,并顯示發出此類請求的IP地址。具體操作細節,請參見演示視頻。

小結

目前,有更多針對Log4j的工具正在涌現。作為安全從業人員,我建議您通過鏈接--https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228,關注各類安全專家發布的相關內容。

正如我在上文中對MariaDB的JDBC連接器所進行的操作,我同樣建議您將相關補丁,發送到任何正在使用Log4j的開源項目中,以及時發現并升級易受攻擊的版本。

原文標題:How to Check if a Java Project Depends on A Vulnerable Version of Log4j,作者:Alejandro Duarte

原文鏈接:https://developer.51cto.com/art/202112/696422.htm

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 国产91一区二区在线播放不卡 | 美女国内精品自产拍在线播放 | 久久中文字幕亚洲精品最新 | 色先锋 影音先锋a 资源站 | 香蕉成人国产精品免费看网站 | 精品国产综合区久久久久久 | 多人群p全肉小说 | 午夜精品久久久久久 | 91搞搞 | 2021国产精品视频一区 | 精品视频中文字幕 | 免费看黄色大片 | 我的漂亮朋友在线观看全集免费 | 日本丰满大乳乳奶 | 交欧美 | 2018生活片性色生活片 | 91国内精品久久久久影院优播 | 91高清在线视频 | 唯美 清纯 另类 亚洲制服 | 白丝校花被扒开双腿喷水小说 | 日韩成人一级 | 艾秋果冻麻豆老狼 | 国产一卡二卡3卡4卡更新 | 亚洲精品乱码久久久久久蜜桃图片 | 波多野结衣家庭教师 | 天天操夜夜操狠狠操 | 九九艹| 国产精品自在欧美一区 | 国产午夜精品理论片 | 无码人妻少妇色欲AV一区二区 | 波多野结衣在线观看中文字幕 | 很黄的孕妇a级黄毛片 | 久久视频这有精品63在线国产 | 欧美乱理伦另类视频 | 日本色资源 | 91九色porn偷拍在线 | 婷婷婷色 | 亚洲久操 | 欧洲一级黑寡妇 | 青青草99热久久 | 欧美一级鲁丝片免费看 |