創提部落格
希望我們能與您分享和探討成長中的點點滴滴
Log4Shell是什麼?從Log4j漏洞說起
分享到
在開源Apache日誌記錄庫Log4j中已發現了一個影響使用Java的設備和應用程式的新漏洞。該漏洞被稱為Log4Shell,是目前互聯網上最重大的安全性漏洞,其嚴重程度為10分(滿分10分),其影響有愈演愈烈之勢。幸運的是,Perforce靜態分析和SAST工具——Helix QAC和Klocwork——可以提供幫助。
在這裡,我們將解釋Log4j漏洞是什麼,提供一個Log4j示例,並解釋像Klocwork這樣的SAST工具如何幫助預防和檢測如Log4Shell這樣的漏洞。本文將包含如下內容:
• Log4j是什麼?
• Log4Shell是什麼:從Log4j漏洞說起
• 哪些設備和應用程式容易受到Log4Shell的攻擊?
• Klocwork如何檢測Log4j漏洞
• 如何使用Klocwork防止Log4j漏洞
Log4j是什麼?
Log4j是一個Java庫,用於在企業應用程式(其中包括自訂應用程式、網路和許多雲計算服務)中記錄錯誤日誌。
並且,在過去十年裡為伺服器和用戶端應用程式開發的Java程式中,有很大一部分都使用了Log4j。
Log4Shell是什麼:從Log4j漏洞說起
Log4Shell,又稱為CVE-2021-4428,是一種影響Apache Log4j2核心功能的高嚴重性漏洞。該漏洞使攻擊者能夠實現遠端程式碼執行。這使他們能夠:
• 通過受影響的設備或應用程式訪問整個網路
• 運行任意程式碼
• 訪問受影響的設備或應用程式上的所有資料
• 刪除或加密檔
受影響的版本,Log4j版本2 (Log4j2),包含在:
• Apache Struts2
• Apache Solr
• Apache Druid
• Apache Flink
• ElasticSearch
• Flume
• Apache Dubbo
• Logstash
• Kafka
• Spring-Boot-starter-log4j2
• Swift frameworks
哪些設備和應用程式容易受到Log4Shell的攻擊?
如果連接到互聯網的設備運行Apache Log4j 2.0-2.14.1版本,那麼它們很容易受到Log4Shell的攻擊。
如何檢測和預防最常見的軟體安全性漏洞
Log4Shell只是眾多潛在的安全性漏洞之一。那麼我們應該如何有效檢測和解決最常見的安全性漏洞?
Klocwork如何檢測Log4j漏洞
作為一個靜態分析和SAST工具,Klocwork會檢查您的原始程式碼,找出可能會讓您的設備或應用程式受到攻擊的設計和編碼缺陷,比如受污染的資料問題。Klocwork可以沿著程式碼中所有可能的執行路徑跟蹤受污染的、不受信任的或其他可疑的資料,包括Log4Shell (CVE-2021-4428)。
Klocwork的SV.LOG_FORGING檢查項可以“開箱即用”,能夠檢測被傳到日誌記錄程式中的受污染的資料。從Perforce Support處獲取的一個小小的設定檔可擴展該檢查項來檢測Log4j漏洞。
此外,Klocwork還與Secure Code Warrior進行了集成,這有助於為這些類型的缺陷提供修復指導,並且提供額外的軟體安全培訓。Secure Code Warrior高亮顯示了安全性漏洞,並提供了如何修復這些錯誤的指導。
如何使用Klocwork防止Log4j漏洞
現在您已經更好地理解了Log4j漏洞是什麼以及Klocwork如何識別它,下面是一個Log4j示例。此外,我們還提供了一個詳細的指南,以演示Klocwork如何説明您檢測和修復這個嚴重的漏洞。
1. 使用Klocwork SV.LOG_FORGING檢查項
要使用Klocwork的SV.LOG_FORGING檢查項:請轉到該應用程式的Klocwork Portal專案,添加設定檔,並確認SV.LOG_FORGING檢查項已啟用。
該擴展將Log4j方法添加到SV.LOG_FORGING的受污染資料的危險目的地清單中。這使您能夠識別Log4j漏洞——Log4Shell。
2. 定位Log4j漏洞
一旦整個應用程式集成分析完成,任何錯誤或漏洞都會被高亮顯示。
下面的序列高亮顯示了日誌偽造是如何實現的,並使攻擊者能夠利用日誌記錄來操縱它們:
一旦分析完成,Klocwork將在第5行報告漏洞。
3. 防止Log4j漏洞缺陷
Apache已經發佈了Log4j 2.16的新版本,該版本不包含Log4Shell漏洞。
此外,如果您無法更新到最新版本,Apache也提供了解決方案來緩解Log4j漏洞。
In releases >=2.10, this behavior can be mitigated by setting either the system property log4j2.formatMsgNoLookups or the environment variable LOG4J_FORMAT_MSG_NO_LOOKUPS to true.
For releases from 2.0-beta9 to 2.10.0, the mitigation is to remove the JndiLookup class from the classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class.
使用Klocwork阻止Log4Shell等漏洞
Log4Shell是一個值得關注的軟體安全性漏洞——不幸的是,它不是唯一一個。它只是CWE-117和OWASP A10:2017所強調的眾多類型的安全性漏洞的一個示例。
通過使用SAST工具(如Klocwork),您可以輕鬆地執行軟體安全標準(如CWE、OWASP和CERT),以更好地檢測、預防和消除軟體安全性漏洞(如Log4Shell)。
若想親自體驗Klocwork如何簡單地通過儘早識別漏洞來保護您的軟體,今天就點擊網頁右上角註冊申請免費試用吧。