應用程序開發(fā)人員現(xiàn)在需要做什么來對抗Log4j漏洞
為什么企業(yè)可能已經(jīng)處于危險之中,現(xiàn)在如何檢測和緩解Log4j漏洞,以及如何在未來提高您的代碼安全性。
本月早些時候,安全研究人員發(fā)現(xiàn)了用于數(shù)萬個Web應用程序的Log4jJava軟件中的一系列主要漏洞。該代碼廣泛用于消費者和企業(yè)系統(tǒng),從Minecraft、Steam和iCloud到Fortinet和RedHat系統(tǒng)的所有系統(tǒng)。一位分析師估計數(shù)百萬個端點可能面臨風險。
Log4j只是一系列軟件供應鏈攻擊中的最新一次,包括SolarWinds(其構(gòu)建過程受損)和Kaseya(攻擊者替換了帶有惡意軟件的代碼)。
自從第一個Log4j漏洞曝光以來,安全供應商和分析師已經(jīng)發(fā)布了大量有關(guān)該做什么的信息,范圍遍及整個地圖。有些人發(fā)布了接近世界末日的情景,而其他人則沒有那么可怕的預測。CheckPointSoftwareTechnologies已經(jīng)在其近一半的客戶群中發(fā)現(xiàn)了漏洞利用企圖。ContrastSecurity發(fā)現(xiàn)58%的Java應用程序存在易受攻擊的版本,但實際上只有37%使用Log4j。
這四個問題分別是CVE-2021-44228、CVE-2021-45046、CVE-2021-4104和CVE-2021-45105。美國網(wǎng)絡安全和基礎設施安全局正在維護一個網(wǎng)頁,其中包含指向各種供應商博客的鏈接,以及受影響的應用程序列表,并試圖通過任何修復程序保持更新。這些問題涉及日志軟件的幾個特性,包括Java命名和目錄接口(JDNI)和JMSAppender事件消息,這兩者都允許遠程代碼執(zhí)行。使這組漏洞變得危險的原因是攻擊者不需要很多專業(yè)知識即可獲得這種遠程訪問。最后一個漏洞是指拒絕服務條件,讓每個人都保持警覺。最近,Blumira發(fā)現(xiàn)了一種新的攻擊向量,它使用WebSockets擴大了整個表面。
看起來我們還沒有聽說過Log4j的終結(jié)。很明顯,作為應用程序開發(fā)人員,您有很多工作要做,以在短期內(nèi)查找、修復和防止log4j問題,但從長遠來看,您需要擔心一些事情。
可能已經(jīng)處于危險之中
在您開始鎖定問題之前,Mitiga的首席運營官ArielParnes警告說:“您應該查看組織是否已經(jīng)在過去某個時候使用Log4j遭到黑客攻擊。罪犯可能已經(jīng)在里面了?!盜T經(jīng)理JohnCronin提出了關(guān)鍵問題:“您知道您的哪些服務器使用Log4j?生成這些服務器的列表需要多長時間?你能及時修補它們嗎?你有自動化工具還是有人需要登錄每臺服務器并手動完成?您是否有在高峰使用時間修補實時生產(chǎn)服務器的流程?”當然,回答這些問題需要付出一些努力。在上一篇文章中,我們介紹了如何確定您是否已被感染。
安全分析師發(fā)現(xiàn)了可追溯到2021年12月1日的漏洞利用,使用范圍廣泛的網(wǎng)絡協(xié)議,包括LDAP、RMI、DNS和HTTP。這些漏洞已經(jīng)安裝了各種惡意軟件,包括隱藏的加密貨幣礦工、Bitdefender稱為Khonsari的新型勒索軟件系列,以及加入Mirai僵尸網(wǎng)絡的代碼。最重要的是,一些研究人員報告了來自中國、朝鮮、土耳其和伊朗的國家支持的攻擊者的攻擊。
即時防御計劃
您的第一道防線是升級到最新的Log4j版本。最初,Apache發(fā)布了一個補丁,結(jié)果證明仍然存在漏洞。最新版本是Log4jv.2.17.0(如果您運行的是Java8或更高版本)和Log4jv.2.12.2(如果您在整個Web應用程序基礎架構(gòu)中運行Java7)。這些默認關(guān)閉JNDI并刪除消息查找訪問權(quán)限,這兩者都是各種漏洞的核心。禁用JNDI可能會破壞您的應用程序中的某些內(nèi)容,因此在您在任何生產(chǎn)系統(tǒng)中實施之前,請仔細測試。
如果您的任何應用程序不需要任何基于Java的日志記錄,您可能還想停止它。同樣,在部署之前進行測試。
那些運行自己的Minecraft服務器的人應該檢查它是否在運行Minecraftv.1.8.8或更高版本;這些版本是易受攻擊的。微軟發(fā)布了Minecraftv.1.18.1,修復了這個問題。您應該立即升級或找到另一個更值得信賴的已修復服務器。
有哪些檢測工具可用
安全供應商加班加點來擴充他們的工具,您應該利用各種免費優(yōu)惠。下面我列出了各種掃描器,可用于在運行的應用程序或源文件中定位易受攻擊的代碼。您應該確定該代碼是否已部署在任何生產(chǎn)實例中。
?Qualys有30天的Web應用程序掃描器免費試用期,并在他們的博客上提供了有關(guān)如何使用它的說明。
?CheckPoint的CloudGuardAppSec是另一款掃描儀,這里還有30天的免費試用期。
?CERT有一系列使用Windows、Python和Bash編寫的掃描儀。
?如果您使用BurpSuite,IBM的X-Force有它的免費掃描器,SilentSignal有它的插件。
?WhiteSource有免費的掃描儀。
?JFrog擁有基于Python的無Xray掃描工具來檢查您自己的Java代碼庫。
?如果您使用的是Semgrep,這是規(guī)則。
?OrcaSecurity有一個免費的在線工具,可以掃描AWS、Azure和GoogleCloud環(huán)境,并提供30天的平臺試用期。
提高編碼安全性的長期策略
首先,了解代碼依賴。Log4j的挑戰(zhàn)之一是它的流行度和包含在眾多Java庫中。一旦您在自己的代碼中根除舊版本,就該調(diào)查您正在運行的其他依賴于它的版本。如果您使用Apache框架Struts2、Flume、Dubbo、Kafka、Solr、Druid或Fink,則必須升級這些項目中的Log4j庫。如果Struts引起了人們的注意,那么2017年的一次漏洞利用導致Equifax的數(shù)據(jù)庫遭到入侵,泄露了超過1.4億客戶的私人數(shù)據(jù)。
WeHackPurple的TanyaJanca(一個優(yōu)秀的應用程序安全來源)建議你使用dependencyGraph、Snyk或OWASP的Dependency-Check。一旦找到任何依賴項,如果不能立即修補它,請注釋掉調(diào)用Log4j的代碼。
了解Web應用程序防火墻(WAF)的工作原理。如果您沒有WAF,現(xiàn)在是時候入手一個了。如果您的任何代碼部署在WAF后面,請打開他們的檢測規(guī)則并檢查供應商是否已更新其規(guī)則以涵蓋所有最新漏洞。但要意識到,自從該漏洞被公布以來,研究人員已經(jīng)展示了許多構(gòu)建嵌套和混淆有效載荷的方法,這些有效載荷可以繞過提議的WAF過濾規(guī)則。Fastly對如何測試WAF有效性進行了廣泛的解釋。
利用Log4j漏洞緩解和補丁工具。許多公司已經(jīng)為Log4j提供了緩解工具:
?Cybereason整理了此代碼。LunaSec進一步改進了它并將其作為公共服務托管在實時服務器上。
?來自AmazonWebServices的Corretto團隊開發(fā)了一個嘗試修補Log4j的Java代理。該代理可在GitHub上獲得。
?ContrastSecurity具有SafeLog4j,它可以檢測和修補,據(jù)說可以抵御WAF繞過攻擊。
?Cisco提供其安全端點的30天免費試用。還有其他端點供應商已包含檢測規(guī)則,包括MicrosoftDefender(但目前僅適用于Windows版本)。
?如果您使用容器,您將需要特殊的保護產(chǎn)品。例如,RedHat更新了他們的Kubernetes高級集群安全,PaloAltoNetworks更新了它的PrismaCloud。