最近幾天,各互聯(lián)網(wǎng)工廠的程序員朋友們都被Log4Shell這個史詩級漏洞困擾得發(fā)狂!
這個漏洞源于名為Log4J2 (Log For Java 2)的Java開源日志框架,可以說在用Java敲代碼的碼農(nóng)中沒有人知道。
它就好像早年間打《 魔獸世界 》一定要裝的大腳插件一樣,屬于真正意義上的 “ 咖啡伴侶 ” ,很少有 Java 程序不用這個組件。
就是這么一個要命的底層日志框架,被發(fā)現(xiàn)透了一個洞。。。
最先發(fā)現(xiàn)漏洞的,是阿里云安全團隊中,一位叫 Chen Zhaojun 的大佬。
據(jù)他的說法,這個漏洞很早就被國外的安全代碼掃描平臺掃出來了,圈內(nèi)的程序員大佬們也都在等待官方的修復(fù),沒有聲張。
“ 上百萬刀的安全架構(gòu),在 Log4J2 漏洞面前一文不值。。。 ” ▼
很快啊,包括了阿里、騰訊、百度、網(wǎng)易、新浪等一眾國內(nèi)的互聯(lián)網(wǎng)大廠紛紛中槍,都被圈在了受影響的范圍之內(nèi)。
有博主還收到了騰訊云發(fā)來的防護短信。 ▼
不僅僅是大廠的服務(wù)系統(tǒng),耳機、電腦、車機等硬件系統(tǒng)等也無一幸免。。。
不夸張的說,這個漏洞要是不及時修補,下場就是被如饑似渴的黑客們捅爛,進一步威脅網(wǎng)絡(luò)安全。
他們會有效利用 “ 零日漏洞 ” ( 指的是發(fā)現(xiàn)后立即被惡意利用的安全漏洞 )發(fā)動零時差攻擊,搶在安全補丁出來之前,對服務(wù)器造成殺傷。
就連我們?nèi)粘J褂玫氖謾C、電腦軟件( 大部分都是拿 Java 寫的 ),也都將暴露在黑客的的攻擊范圍內(nèi),想捅哪里捅哪里,把你的電腦挾持過來挖礦也不是沒可能。
就和打游戲偷家似的, so easy 。。。
不過有意思的是,也有樂子人利用這個漏洞,發(fā)現(xiàn)了特斯拉把國內(nèi)數(shù)據(jù)上傳到美利堅服務(wù)器的尷尬事兒。
不知道這個數(shù)據(jù)有沒有包含用戶數(shù)據(jù),但我建議龍馬哥先別急著解釋這茬了,還是趕緊把這個漏洞修修吧,不然到時候可能真的不好收場。
咳咳,扯遠了。。。
說回這次的漏洞,最可怕的地方在于實現(xiàn)起來沒什么門檻,只要用一串簡單的字符,就能輕易攻破服務(wù)器,并在上面運行各種代碼。。。
這別說是竊取個人信息了,黑客想要遠程挾持、癱瘓企業(yè)級的服務(wù)器,那也是毫無阻礙。
那黑客到底是怎么樣利用漏洞,用幾串字符就輕松攻破服務(wù)器的呢?
要整明白這個問題,我們得先搞清楚啥是日志。
眾所周知啊,程序員在敲完一段代碼之后,肯定不可能馬上拿來用,而要通過反復(fù)的測試來驗證代碼的可行性。
但代碼本身在跑的時候,處于一個黑箱狀態(tài),如果放任它瞎跑的話,跑到一半卡住,根本不知道是錯在哪一步上。
這就好像是做數(shù)學(xué)題時候如果沒草稿紙,在心里算總是沒個底。
這時候,日志的作用就體現(xiàn)出來了,它就好像是一大張草稿紙,能在上面做任何你自己看的懂得步驟和標記,方便隨時隨地驗算。
本質(zhì)上日志是程序員們經(jīng)常使用的一個工具,它把代碼在測試過程中的每一步都給記錄下來,跑完再回頭 Debug 的時候,就很有針對性,效率也高。
而 Log4J2 ,就是這么一個開源的日志框架,它里面整合了不少在修改代碼時會用到的常用功能,比如日志管理、輸出變量等實用功能。
這次的高危漏洞就是源于 Log4J2 中一個叫 Lookups 的功能。
從字面上理解,這個功能就是一個用來搜索內(nèi)容的接口,想要搜些啥,那就要靠代碼去實現(xiàn)了。
Log4J2 也在 Lookups 的功能下,提供了不少實現(xiàn)的途徑,問題就出在這個叫 JNDI 的途徑上。
JNDI 被 Java 允許通過遠程連接的方式來加載文件,這個遠程地址可以是開發(fā)者自己的服務(wù)器,也可以是外界的服務(wù)器。
壞就壞在這個遠程下載上了。。。
黑客只要通過 JNDI 的方法連接上自己的惡意服務(wù)器,就可以堂而皇之從這個接口進來,繼而攻破整棟固若金湯的大廈。
這里世超用盡可能簡單的說法解釋了一下這個漏洞,如果差友們對具體的實現(xiàn)方式有興趣,可以看下知乎上軒轅之風(fēng)大佬的文章,介紹的很詳盡了。
那么問題來了,為什么這個漏洞在被發(fā)現(xiàn)之后過了這么久,才被重視起來?
外行看熱鬧,內(nèi)行看門道,有些事兒還真得問問業(yè)內(nèi)人士。
于是世超咨詢了國內(nèi)知名的白帽網(wǎng)站——火線安全平臺的小火子同學(xué),聊了一通之后,大致了解了專業(yè)人士對這件事兒的看法。
實際上 Log4J2 漏洞產(chǎn)生的原因,是因為部分程序員想要開發(fā)者保留在 Lookups 中 JNDI 的實現(xiàn)方式的舊功能而引起的。
根據(jù) Log4J2 的維護者 Volkan Yaz?c? 的說法,他們早就想把這個有風(fēng)險的功能給去了,但為了保證向后的兼容性,照顧到想要用這個功能的程序員,所以還是保留了下來。
好嘛,小洞不補、大洞吃苦,這個高危漏洞被發(fā)現(xiàn)之后, Log4J2 實際的管理機構(gòu) Apache 軟件基金會并沒能引起足夠的重視,披露漏洞的流程也沒有按流程來走。
他們直接把問題往開源平臺 Github 的 issue 里一貼,期待能有好心人給出解決問題得方案。
但這是個開放平臺啊,有程序員同樣也有黑客。。。
這波操作等于告訴了全世界的黑客: “ 咱這軟件有高危漏洞哈,歡迎來捅! ”
甚至在漏洞全面爆發(fā)之前,就已經(jīng)有白客們在 issue 中公開討論過具體的修復(fù)細節(jié)。
可惜的是,等到所有用到使用 Log4J2 的業(yè)務(wù)系統(tǒng)反應(yīng)過來有這個漏洞,已經(jīng)過去了很長一段時間了。
因為使用 Log4J2 組件的軟件實在太多,所以互聯(lián)網(wǎng)公司的安全部門要一個個軟件做修復(fù)和升級,這里頭的工作量也可想而知。
目前最快的臨時處理方案,是在 Log4J2 做一個觸發(fā)式的攔截程序,類似于給系統(tǒng)先打上疫苗,把與漏洞相關(guān)內(nèi)容,提前進行阻攔,和防火墻的原理差不多。
話說回來,世超覺得引發(fā)這次漏洞問題的鍋,也不應(yīng)該全由 Log4J2 的維護者來背。
說出來你可能不信,像 Log4J2 這么大一個開源項目,實際只靠幾個程序員在業(yè)余時間來管理和維護,他們本身也是用愛發(fā)電,沒有任何報酬的。
來自 Volkan Yaz?c? 推特下網(wǎng)友們的評論▼
與之相反的是,包括像蘋果、谷歌、亞馬遜、特斯拉在內(nèi)的這些大公司,都一定程度上在開心的 “ 白嫖 ” Log4J2 ,畢竟開源嘛,能省一點人力維護就省一點,反正總會有人維護的。。。
對于大廠開發(fā)者來說,這個來自十幾年前僅有數(shù)人在維護的工具,只要能夠完成產(chǎn)品,那湊合用就湊合用了,絕不重復(fù)造輪子。
并且爭取在出現(xiàn)問題之前,成功跳槽。。。
可想而知,人人對于這類程序安全漏洞始終都是 “ 碰到了才明白出了問題 ”,誰知道整個行業(yè)都翻了車。
盡管事兒已經(jīng)是告一段落了,但這樣大型的漏洞翻車事件,并不是第一次,也不會是最后一次發(fā)生,此類的 “ 黑天鵝事件 ” ,往往是不可預(yù)估且偶發(fā)性的。
而這一場場在網(wǎng)絡(luò)世界中燃起的大火,唯有依靠程序員們的挑燈夜戰(zhàn),才得以熄滅。。。
1.《補丁怎么縫來看不見?總結(jié)很全面速看!讓全世界大廠都手忙腳亂的代碼漏洞,是怎么一步步成為噩夢的?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《補丁怎么縫來看不見?總結(jié)很全面速看!讓全世界大廠都手忙腳亂的代碼漏洞,是怎么一步步成為噩夢的?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/3111407.html