過去,Java 一向是網路犯罪集團最愛的漏洞攻擊目標,不過近年來,這樣的情況已經不在。最近已修正的 Pawn Storm 攻擊行動 Java 零時差漏洞事實上是 Java 近兩年來被發現的第一個零時差漏洞。
這有一部分的原因要歸功於 Java 安全措施的強化。正如 Oracle 在 Java 首頁上所言,現在的主流瀏覽器在遇到過時的 Java 外掛程式時都會自動將它停用。此外,2014 年 1 月發表的Java 7 Update 51即限縮了可執行的 Applet 類型。在預設情況下,自我簽署和未經簽署 (也就是駭客最可能使用) 的 Applet 將無法在瀏覽器上執行。此外,JRE 還對所有的 Applet (不論是否簽署) 提供了點按執行 (click-to-play) 的功能。這兩點加起來,大大得降低了 Java 平台對駭客的吸引力。
既然這個 Java 零時差漏洞 (CVE-2015-2590) 現在已經修正,我們就來說明一下它的相關技術細節。此漏洞由兩部分組成:第一部份是略過 Java 的點按執行保護機制。這部分我們不能討論,但我們可以談談另外一部分。如前面所說,這個漏洞在最新的 Java 版本 (Java 8 Update 51) 當中已經獲得修正。
Java 提供了一個叫做 ObjectInputStream 的類別來執行反序列化 (decentralize) 作業,以便將記憶體緩衝區內的資料轉成物件。這個反序列化緩衝區當中包含了物件的類別資訊和檔案化的資料。如需該類別的更多詳細資訊,請參閱Java 官方文件。 繼續閱讀