幾個月前的 Log4Shell 漏洞令產業聞風喪膽,近日又有研究人員揭露另一個開原碼開發框架的零時差漏洞 Spring4Shell 。
3 月 29 日一名中國研究人員在其推特上公佈 Spring Core Java 函式庫的遠端程式碼執行漏洞,但是很快就將推文移除,且沒有太多資訊。 Spring 是最受歡迎的 Java 開發框架之一,用於 70% 的 Java 應用程式,因此被列為 CVE-2022-22965 的漏洞消息引發許多人關注。
SpringShell 漏洞一旦被開採,可讓攻擊者遠端在伺服器上執行任意程式碼。成功的攻擊可使駭客存取所有網站內部資料,包括連結的各個資料庫,也能存取其他內部系統以取得更多許可,或是轉移到內部網路其他部份。
Spring 框架上的 Java 程式要滿足幾種條件才會被攻擊。最基本的條件包括:Spring 框架版本在 5.3.17 或 5.2.19 以前版本。此外 Java 應用程式必須跑 JDK9 以上的版本。
Spring4Shell 漏洞是利用 Spring RequestMapping 註解 (announcement) 。它的功能基本上是將進入 HTTP 呼叫比對到相應 handler 函式。簡而言之,SpringShell 漏洞讓攻擊者將 Java 物件注入到合法的呼叫 handler 中,而使得伺服器門戶洞開。
但是光是觸發漏洞並不能讓攻擊者接管整台伺服器,最嚴重只是造成阻斷服務攻擊 (DoS) 。它還需要能被注入 Java 的物件。
但不幸的是,目前網路上已出現開採程式碼,它挾帶的惡意程式可在 Tomcat 伺服器執行遠端程式碼。研究人員相信未來還會出現其他惡意程式,不過現階段尚未看到。
本周 Spring 已經緊急發佈 5.3.18 和 5.2.20 修補了這個漏洞。所有使用 Spring 的專案最好立即更新。
