資訊中心管理
隱藏威脅逼近:過時的 Java 系統安全風險
前往目錄
保持企業系統的安全應該是理所當然的,對吧?但現實中,由於安全性涉及的層面太多,反而容易忽略一些最關鍵的部分,例如 Java 執行環境。

在2019 年之前,確保 JDK 保持最新的安全更新相對簡單,且不需要額外付費。當 Sun Microsystems 推出 Java 時,除了用於嵌入式系統或單一用途應用(例如使用內嵌電腦的售票機)外, 開發者可以免費下載 Java 開發工具包。 即使Java 發布了新版本,舊版本仍有一段免費更新的緩衝期,讓使用者可以平穩過渡。

2010 年,Oracle 收購 Sun Microsystems,最初仍維持相同的 JDK 發布方式,直到 2019 年才開始改變政策。他們將 Java 的發布模式從基於功能(feature-based)改為基於時間(timebased),即每年固定在 3 月和 9 月發布更新版本。由於發行節奏加快,Oracle 引入長期支援版(LTS,Long-Term Support),但不可能對所有版本都提供長期維護與技術支援。最初每三年才會有一個 LTS 版本,但現在縮短為兩年。

目前的 LTS 版本為 JDK 8、11、17 和 21,而 JDK 6、7 這些較舊的開源版本已經不再受到 Oracle 官方的支援,即使是付費商業版本也已停止支援。

安全更新到底有多重要呢? Java 已經有將近 30 年的歷史了,難道還沒把所有的漏洞都修補完嗎?

遺憾的,並沒有,而且現實上,這永遠不可能發生。OpenJDK 包含 750 萬行程式碼,並依賴許多外部函式庫,而這些元件可能都還隱藏著尚未發現的安全漏洞。接下來,我們將透過具體數據來說明這個問題的嚴重性。

在 Azul 發布的 2024 年 Oracle 使用、定價和遷移調查與報告中,37% 的參與者使用 JDK 17,比其他任 何版本都多。
Azul 發布的 2024 年 Oracle 使用、定價和遷移調查與報告中,37% 的參與者使用 JDK 17,比其他任何版本都多。

基於過時Java建置的應用程式存在漏洞

如果你的應用程式是建立在過時的 Java 版本上,將會面臨許多安全漏洞的風險。

舉例來說,如果你的應用程式仍然使用 JDK 6,並且自 2013 年 4 月 Oracle 停止提供免費更新後就沒有再更新,那麼你的系統已經暴露在 425 個安全漏洞之下,其中 89 個屬於嚴重漏洞,這可能讓你的應用程式容易遭受攻擊。

即時更新系統至關重要,因為這關係到系統安全性。Oracle 針對每次更新提供兩種版本,可稱為關鍵修補更新 (CPU,Critical Patch Update)和補丁集更新(PSU,Patch Set Update)。 CPU 更新僅包含與安全性相關的修正, 不會影響其他功能,通常變更範圍較小,即使是較大的更新,修正項目通常也少於 10 項,最多不超過 15 項。而 PSU 更新除了包含安全性修正,還包含錯誤修復、效能改善與其他程式碼變更,因此更新規模較大,每次更新可能涉及 200 到 400 項變更。

隱藏威脅逼近: 過時的 Java 系統安全風險

 PSU更新可能帶來重大影響

更新中包含的變更越多,應用程式的功能受到影響的可能性就越大。由於每次更新之間僅隔三個月的時間,但應用程式的測試時間有限,這導致某些 PSU 更新可能會對系統產生重大影響。例如,2022 年 7 月的 PSU 包含一個修復程序,但該修復程序阻止基於 Hadoop Cluster、Solr 和 Lucene 的應用程式正常運作。

自從 Oracle 調整發行版本與授權模式以來,總共發布了 22 次更新,其中有 6 次 PSU 更新由於引入新的錯誤,必須進行修正並重新發布。從發現問題到推出修正更新的時間從不到兩週到超過五週不等。而 CPU 更新則從未受到類似影響, 因此取得 CPU 更新對於維持應用程式的最高安全性至關重要。

然而,所有免費的 OpenJDK 二進位發行版本僅提供 PSU 版本,因此部分使用者可能認為等待幾週才能部署更新是可以接受的風險,但這其實是非常危險的。

利用Apache Struts來攻擊未打補丁的系統

當 JDK 更新發佈時,所有已修復的漏洞都會在發行說明中公開,這會讓攻擊者能夠獲取相關資訊,並試圖尋找尚未修補的應用程式來加以利用。這種風險可能帶來嚴重後果,讓我們以 Java 常用函式庫 Apache Struts 為例說明。

2023 年 12 月 7 日,Struts 漏洞的詳細資訊被公佈。根據通用漏洞評分系統(CVSS),該漏洞的評分高達 9.8 分,屬於嚴重級別漏洞。此外,這個漏洞可能導致遠端程式碼執行(RCE),這比僅能用於阻斷服務(DoS)的漏洞危害更大。

僅僅四天後,就有概念驗證(PoC)程式碼被發布,展示了如何利用這個漏洞。而在該程式碼公開後的 24 小時內,就在未修補的系統上觀察到攻擊。如果必須等待兩週甚至更久才能獲得可用的 Java 安全更新,那麼應用程式將暴露在風險之中。這樣的風險,您能承擔嗎?

關於 Azul 安全高效 JavaJDK

Azul 提供企業級Java JDK解決方案,專為商業環境設計,確保高效能與穩定性,同時降低總體擁有成本(TCO)。Azul Platform Prime是專為高效能企業應用設計的商業級Java JDK,可確保應用程式在高併發與低延遲環境下穩定運行。與傳統JVM相比,Azul Platform Prime可大幅提升吞吐量,減少記憶體佔用,並優化 CPU 使用率,使企業能以更少的資源獲得更高效的運行效能,幫助企業優化基礎架構成本。其獨特的技術優勢包括更快的啟動時間、更低的延遲,以及更高的應用程式穩定性,確保企業系統在高負載環境下仍能保持流暢運行。此外,Azul 提供企業級支援與安全性更新,確保 Java 環境始終符合最新的合規要求與最佳效能標準。

了解 Azul 安全高效 Java JDK >>>https://www.gss.com.tw/product-services-nav/info-security/azul