天天看點

jenkins修複最新Apache Struts遠端代碼執行漏洞(CVE-2016-1000031)修複問題描述怎麼修複最後

修複問題描述

阿裡雲上的安全監測提示:

近日,Apache軟體基金會(ASF)向Apache Struts項目管理者釋出了關于CVE-2016-1000031漏洞的安全公告,其中披露一個Commons FileUpload庫的曆史高危漏洞CVE-2016-1000031,而2.3.x系列版本的Apache Struts2仍在使用低版本的Commons FileUpload庫,該庫作為Struts2的一部分,被用作檔案上傳的預設機制,遠端攻擊者利用該漏洞可直接獲得伺服器權限。2.5.12以上版本的Struts2暫不受影響。

注意:java類web應用的修複一般都需要重新開機應用

方案一:

更新至2.5.18及以上版本的Struts2,官方下載下傳連結:https://struts.apache.org/download.cgi

方案二:

更新Struts2依賴的Commons FileUpload庫版本至最新1.3.3,官方下載下傳位址:https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi

我這裡是思路就是采用方案二。

怎麼修複

整體思路很簡單,下載下傳源代碼,修改需要更新的引用包版本,重新編譯建構釋出。

1、clone jenkins的源代碼到本地,修改引用包的版本。這裡直接用我的結果即可,檔案為jenkins/core/pom.xml

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
      <!--<version>1.3.3-jenkins-2</version> -->
    </dependency>
           

2、編譯。

cd "代碼路徑"
mvn clean package -pl war -am -DskipTests -Dfindbugs.skip -X
           

編譯過程如果不順利,或下載下傳不下來檔案,自己百度處理。

當然,也可以參考jenkins源碼編譯和打包(20180408更新) 中的部分步驟,像nodeys的沒有就不操作。自己搭建私有庫,我是現成的。不自己搭建的話,估計問題也不會太大。

3、踩過的坑。版本問題,編譯的版本一定要和目前的版本保持一緻,至少不能跳大版本,否則啟動不起來,甚至會有各種意想不到的問題。版本一緻就順風順水。

當然還有一種修複思路,直接替換.jenkins/war/WEB-INF/lib 下面的包,用新包ommons-fileupload-1.3.3.jar換舊包(commons-fileupload-1.3.1-jenkins-2.jar),新包用舊包命名,重新開機。(阿裡雲掃描不出來你修複了,大概是掃描它記錄的是檔案路徑吧,我是換過的,重起服務,掃不出來修複了,比較尴尬)。

當然,如果閣下運氣好和我用的是一個版本,2.176,那直接下載下傳就可以了。

最後

由于夠不着jenkins的維護的資格,是以去issue送出了個bug建議修複pom.xml(要牆)。

https://issues.jenkins-ci.org/browse/SECURITY-1463?filter=-2

繼續閱讀