App下載

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

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

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

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

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

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

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

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

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

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

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

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

  • 0.0:無
  • 0.1-3.9:低
  • 4.0-6.9:中等
  • 7.0-8.9:高
  • 9.0-10.0:嚴(yán)重

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

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

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

2020 年 1 月

2019 年 10 月

2019 年 7 月

8.38.3(多個(gè))

8.1

6.8(多個(gè))

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(多個(gè))6,7,8,9
2017 年 10 月9.6(多個(gè))6,7,8,9
2017 年 7 月9.6(多個(gè))7,8

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

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

爪哇

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

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

然而,還有一點(diǎn)復(fù)雜。

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

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

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

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

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

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

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


0 人點(diǎn)贊