App下載

如何確保您的 Java 應(yīng)用程序安全

深巷的貓 2021-09-22 19:36:15 瀏覽數(shù) (2255)
反饋

在之前,大多數(shù) Java 用戶訪問 JDK 更新的方式發(fā)生了變化。其原因是 Oracle 對 JDK 的開發(fā)方式和 Oracle JDK 的許可條款所做的更改。

Oracle JDK 11 和 Oracle JDK 8(從更新 211 開始)現(xiàn)在使用 Oracle 技術(shù)網(wǎng)絡(luò)許可協(xié)議。這將免費使用限制為僅四種情況:

  1. 個人使用(用于個人應(yīng)用程序的筆記本電腦或臺式機)
  2. 開發(fā)使用
  3. Oracle 批準的產(chǎn)品使用
  4. Oracle 云基礎(chǔ)架構(gòu)使用

對于所有其他情況,必須從 Oracle 購買 Java SE 訂閱。

這要求用戶就他們的 JDK 部署策略做出決定。一種這樣的方法是“好吧,它在我們現(xiàn)在擁有的 JDK 上運行良好;讓我們堅持下去吧”。

這有一個明顯的缺陷,即該決定將對應(yīng)用程序的安全性產(chǎn)生的影響。

自從人們開始開發(fā)軟件以來,其他人一直在努力尋找以非預期方式使用它的方法。這通常是出于惡意目的,例如竊取信用卡號或用戶身份。我們使用術(shù)語黑客來描述能夠破壞計算機安全的人。黑客可以通過無數(shù)種方式來實現(xiàn)他們的目標;從欺騙人們泄露機密信息(網(wǎng)絡(luò)釣魚)到通過緩沖區(qū)溢出等技術(shù)對軟件進行復雜的操作。

不幸的是,軟件越復雜,黑客利用漏洞的可能性就越大。JDK 是一個非常復雜的軟件,因此可能包含漏洞。

當發(fā)現(xiàn)軟件中的漏洞時,它們通常被記錄為常見漏洞和暴露 (CVE)。由 Mitre Corporation 運營的國家網(wǎng)絡(luò)安全 FFRDC 維護 CVE 數(shù)據(jù)庫。每個由唯一編號標識的 CVE 都有漏洞的文本描述。

此外,每個 CVE 都有一個通用漏洞評分系統(tǒng) (CVSS) 值。這不包含在 CVE 中,但在由美國國家科學技術(shù)研究院 (NIST) 托管的國家漏洞數(shù)據(jù)庫中維護。CVSS 提供了一個基本分數(shù)和一組指標?;痉謹?shù)是一個介于 0.1 和 10.0 之間的值,表示漏洞的嚴重程度(從技術(shù)上講,基本分數(shù)從 0.0 開始,但根據(jù)定義,任何分數(shù)為零的東西都不是漏洞)?;痉謹?shù)是根據(jù)一組指標計算得出的,這些指標表明漏洞的不同方面。這些指標涉及諸如是否可以通過網(wǎng)絡(luò)利用漏洞、是否需要對機器進行物理訪問等事項。

  • 0.0:無
  • 0.1-3.9:低
  • 4.0-6.9:中等
  • 7.0-8.9:高
  • 9.0-10.0:嚴重

讓我們看看讓您的 JDK 保持最新狀態(tài)有多么重要。

首先,我回顧了過去三年的更新,并提取了每個都解決的具有最高 CVSS 基礎(chǔ)分數(shù)的漏洞。這顯示在下表中。

處理器日期最高 CVSS受影響的 JDK 版本
2020 年 7 月 2020 年 4 月

2020 年 1 月

2019 年 10 月

2019 年 7 月

8.38.3(多個)

8.1

6.8(多個)

6.8

7、8、11、147、8、11、13、14

7、8、11、13

7、8、11、13

7、8、11、12

2019 年 4 月9.08
2019 年 1 月6.16、7、8、11
2018 年 10 月9.08,11
2018 年 7 月5.96、7、8、10
2018 年 4 月8.36、7、8、9、10
2018 年 1 月8.3(多個)6,7,8,9
2017 年 10 月9.6(多個)6,7,8,9
2017 年 7 月9.6(多個)7,8

如您所見,大多數(shù)更新至少解決了一個高評分漏洞,并解決了幾個關(guān)鍵漏洞。當我們將其限制為 Oracle Java SE 許可更改后的更新時,我們?nèi)匀豢吹揭粋€具有嚴重漏洞,三個具有高漏洞。有趣的是,2019 年 4 月更新中解決的關(guān)鍵漏洞存在于用于構(gòu)建 JDK 的 Windows DLL 中,而不是任何 JDK 代碼中。

接下來,我分析了自 2015 年 1 月以來的所有更新,這些都是現(xiàn)成的信息。查看所有解決的漏洞并將它們劃分為風險組,我們可以生成一個條形圖,如下所示:

爪哇

我將關(guān)鍵的分成兩部分,以突出顯示有多少個得分為 10 的。

如您所見,總共解決了 320 個 CVE,其中大部分處于中低范圍。關(guān)鍵 CVE 的數(shù)量是 59,這會讓您思考保持 JDK 最新的重要性。

然而,還有一點復雜。

Oracle 為每個更新提供了兩個不同的版本;這對于他們所有的軟件都是一樣的。這些稱為重要補丁更新 (CPU) 和補丁集更新 (PSU)。

CPU 僅包含與解決安全漏洞相關(guān)的更改。PSU 提供所有這些更改,以及任何其他錯誤修復、小幅增強等。這樣做的原因是為了在需要修補關(guān)鍵漏洞時快速推出更新。由于 CPU 包含的更改集較小,因此不太可能對應(yīng)用程序的穩(wěn)定性產(chǎn)生影響(即不太可能阻止您的應(yīng)用程序工作)。使用 CPU 完成觸摸測試后,您可以部署它以確保應(yīng)用程序的最大安全性。然后,在將 PSU 部署到生產(chǎn)機器之前,您可以花更長時間測試 PSU(通常運行一整套回歸測試)。這確保了您的應(yīng)用程序的最大穩(wěn)定性。

這里需要注意的一點是,并非所有 OpenJDK 二進制提供程序都了解 CPU 和 PSU 之間的區(qū)別。有些人稱他們的更新為 CPU,而實際上它是 PSU。在部署之前,您應(yīng)該仔細查看所獲得的內(nèi)容。

為了突出同時擁有 CPU 和 PSU 的好處,我們只需要看看 2020 年 7 月的更新。這包括對一個本身引入回歸的錯誤的修復。這種回歸的影響是大量使用的軟件,如 Hadoop Cluster、Solr 和 Lucene 不再可靠地工作,這對于使用它們的任務(wù)關(guān)鍵型應(yīng)用程序來說是一個嚴重的問題。回歸不在安全補丁中,因此不包含在 CPU 中。

7 月 27 日(即預定的 7 月更新發(fā)布后的 12 天)發(fā)布了作為更新 265 的修復,從而解決了回歸問題。初始更新包含對基本分數(shù)為 8.3 的 CVE 的修復,其詳細信息已在發(fā)行說明中公開。如果您使用的是受影響的軟件系統(tǒng)之一,如果您只有全包式 PSU,黑客將有近兩周的時間來嘗試利用它。如果您還可以訪問 CPU,您就可以推出必要的安全補丁,保護您的系統(tǒng)免受威脅,然后無憂無慮地等待修訂后的 PSU 發(fā)布。

Azul 的 Zulu Enterprise 版本的 OpenJDK 面向希望確保其系統(tǒng)提供最高級別的安全性和穩(wěn)定性的用戶。除了提供每個更新的 CPU(安全)和 PSU(完整)版本之外,我們還努力在 Oracle 發(fā)布它們的版本后盡快交付這些更新。自 JDK 8 的免費公開更新結(jié)束后,Zulu Enterprise 客戶可以在 Oracle 發(fā)布后的一小時內(nèi)下載更新。這基本上是同時的。

總之,很明顯,確保所有運行基于 JVM 的應(yīng)用程序的系統(tǒng)都保持最新更新是多么重要。


0 人點贊