2010-10-02 51 views
1


編譯針對較舊的JDK時是否存在已知的安全問題?例如,讓我們說Oracle決定在他們的一個實現中改變某些東西來解決安全漏洞。如果我們對較舊的JDK進行編譯,那麼我們仍然是脆弱的?針對較舊的JDK編譯的安全問題

編輯

我們正在運行對JDK 6,我們對編譯Java 5中,這是我試圖獲得在任何一個其他人看到這個問題,問題的癥結所在。爲了完整起見,可以說,在Ant構建我們的目標1.5

EDIT 2

此外,還有在應用程序調用,可能有私人的API /直接沒有實現的問題訪問。

回答

6

除了一些從未發生過的假設情況,唯一重要的是應用程序的版本執行。

我不認爲有任何已知的安全問題已被@deprecated「固定」,因爲這不合適。

這裏有兩個問題: 1)您可以讓Java編譯器生成與舊版本二進制兼容的二進制文件。這會影響您可以使用的語言功能。

2)您可以編譯針對的是舊版本的Java系統庫,這將影響到什麼方法/類可用,因爲他們一直在增加新的。

但這些都不影響您的應用程序的安全性。重要的是應用程序執行的運行時版本。

看到,安全問題是固定的更新,而不是主要版本,它引入了語言本身的變化之間。例如Java 6是目前在更新21.爪哇6更新19固定填充,這是Java 6中更新脆弱18.

當Java 6的更新19被釋放,更新發布針對Java 1.5和Java 1.4,以固定Java 1.5(更新24)和Java 1.4(更新26)中的相同問題。看到安全基準表的位置:http://www.oracle.com/technetwork/java/javase/6u19-141078.html

+0

這似乎是最完整的答案。謝謝 – Woot4Moo 2010-10-02 16:50:26

0

我想說那些未固定的漏洞仍然存在,您和您的應用程序仍處於危險之中。

這與使用舊的未打補丁的操作系統或瀏覽器運行的問題是一樣的。

遷移到較新的JVM是一個很好的動機。

+0

我想我可以在我的解釋已經有點不清,請參閱我的編輯。這個問題涉及到介意存在一個多平臺的應用程序,利用HP-UX,其中,該供應商還支持JAVA 1.5 – Woot4Moo 2010-10-02 15:02:17

3

如果編譯對JDK 1.5:正在使用JRE 1.5

  • 用戶將很容易受到
  • 用戶正在使用JRE 1.6將不容易

應用程序將運行使用用戶運行時的庫。由於這些漏洞在Oracle應用程序庫正在調用的庫中得到解決,因此安全漏洞將得到緩解。

但是,由於您編譯的版本是1.5,所以您的用戶將能夠使用1.5。盡你所能來避免這個漏洞;如果無法避免,請在啓動時檢測JRE版本,並在apporriate時發出警報。

+0

好知道,怎麼會是可能的審計1.5 JDK的HP版本,以確保能夠按照預期該系統能與確保Oracle支持的Java關閉的問題在HP版本中不存在? – Woot4Moo 2010-10-02 15:24:25

+0

如果您擔心特定的漏洞,請對其進行測試。漏洞通知應該說明問題所在,並且在很多情況下會包含一個代碼示例來利用它。針對運行在HP上的程序運行該程序,並查看會發生什麼情況。 – 2010-10-02 15:57:19

1

如果Oracle爲了提高安全性而更改了一個API(不是實現),它們可能會添加一個@Deprecated註釋但在一段時間內保持向後兼容性。註釋將在新的編譯器中觸發警告,但不會觸發您的警告,也不會在編譯的程序中觸發警告。 (除非Oracle決定拋出異常或從已棄用的方法中記錄消息)。

+0

我將重新說明我的問題,指向實現而不是API。儘管它涉及到可能的私有API – Woot4Moo 2010-10-02 15:30:26