OpenJDK Docker 鏡像存在錯誤版本漏洞

OpenJDK郵件列表在五月確認,OpenJDK的官方Docker鏡像中包含錯誤標記版本號,這表明部分JRE應包含的安全補丁實際上並不存在。該問題已經通過OpenJDK和Debian間的跨社區協作得以解決

該“官方”版本是由Docker和其他方製作的,因爲OpenJDK社區沒有創建鏡像或生成構建。在GitHub issue 320中,充分討論了該鏡像構建是由誰創建的、該“官方”鏡像的意義、參與鏡像的各方包括誰等問題。該Docker鏡像已被下載超過一千萬次。

問題的核心與構建開發層的檢查時間和使用時間相關。該版本於2019年3月27日生成,並標記版本號爲8u212和11.0.3。其中的安全補丁直到2019年4月16日才發佈。按Azul首席技術官Gil Tene的說法,“按一些人的說法,這些累積起來的’合理’選擇最終導致數百萬人在Docker上運行的默認OpenJDK事實上完全是塊‘神祕之肉’(mystery meat),並不完整的、暴露的構建,雖然看起來似乎推薦的是8u212或11.0.3的一個Java版本”。Tene最早在OpenJDK郵件列表上報告了這個問題。 “神祕之肉”(mystery meat)一詞是指難以確定來源的標籤項。該術語並不意味着內容不安全,只是表示它們不爲人知。

InfoQ與jClarity首席執行官兼倫敦JUG聯合牽頭人Martijn Verburg探討了這個問題。這次混亂源自版本控制系統中最近引入的標籤,其中添加了後綴“-ga”。該標籤向Debian志願者維護者等第三方標明瞭構建應何時提供GA版。該標記晚於各JVM供應商的“開放獲取時滯期”(embargo period)之後應用,以確保以安全的方式將安全更新分發給所有JVM提供商。如果沒有開放獲取時滯期,那麼黑客會定期反編譯安全補丁,找出可攻擊的位置,然後利用該工具包攻擊尚未修補漏洞的版本。Debian項目提供了超過51,000個Linux軟件包,難以合理地參與每個項目去理解版本的複雜性。這包括OpenJDK,其中“-ga”標記是JDK 7和JDK 8的新版本和以前版本之間跳過的數字。

Docker鏡像中的該版本號表明應該包含CVE-2019-2602CVE-2019-2684補丁,但實際並未包含。在鏡像發佈過程中,至少給出了六個應該加入Docker鏡像的安全補丁。 版本不匹配可能會增加下游軟件組合分析(Software Composition Analysis)工具的複雜性,這些分析工具根據版本分析軟件的補丁情況。它們幫助組織識別哪裏具有已知CVE的過期軟件,以便組織做出適當的修補或降低風險。許多工具根據該版本號,錯誤地確定這些JRE不易受到攻擊。由於許多Java供應商每季度發佈一次安全補丁,因此開放獲取時滯期可能會很短。例如,Oracle計劃下一次重要補丁更新將在2019年7月16日推出。那時,目前的Java版本號將被視爲不安全,由新的安全基線取而代之。

該問題已由Apache軟件基金會的Emanuel Bourg完成修復,並做了補救工作以防止其再次發生。

查看英文原文: OpenJDK Docker Image Served Mis-Labeled Vulnerable JDK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章