Spring Security 安全公告

CVE-2016-2173 Spring AMQP 中的遠端程式碼執行漏洞

嚴重 | 2016 年 4 月 11 日 | CVE-2016-2173

說明

org.springframework.core.serializer.DefaultDeserializer 類別不會根據白名單驗證反序列化的物件。透過提供精心設計的反序列化物件(例如 Chris Frohoff 的 Commons Collection gadget),可以實現遠端程式碼執行。

受影響的 Spring 產品與版本

  • 1.0.0 至 1.5.4

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 引用的類別 (DefaultDeserializer) 不會由任何 Spring 應用程式上下文自動註冊;當使用來自不受信任來源的物件使用此類別時,用戶應像直接使用 ObjectInputStream 時一樣小心。
  • Spring AMQP 具有一個(可選)訊息轉換器,可以使用此反序列化器;從 1.5.5 版開始,現在可以使用可接受的套件/類別的白名單配置該轉換器,以便進行反序列化。
  • Spring AMQP 還有一個 SimpleMessageConverter,預設情況下 *會* 配置;它不使用反序列化器,但會在內部使用 ObjectInputStream;它現在也可以使用套件/類別的白名單進行配置。
  • 建議用戶在使用 RabbitMQ 的環境中,如果可能會收到不受信任的資料,則不要使用 Java 序列化;如果他們這樣做,則應使用允許的物件配置轉換器。
  • 可能會受到此漏洞影響的用戶應升級到 Spring AMQP 1.5.5 或更高版本並配置白名單。

致謝

此漏洞由 Code White 的 Matthias Kaiser 發現 (www.code-white.com)

參考資料

CVE-2015-5258 Spring Social CSRF

| 2015 年 11 月 12 日 | CVE-2015-5258

說明

在針對 OAuth 2 API 提供者授權應用程式時,Spring Social 容易受到跨站請求偽造 (CSRF) 攻擊。此攻擊涉及惡意使用者使用 OAuth 2 API 提供者的虛假帳戶開始 OAuth 2 授權流程,但透過誘騙受害者在其瀏覽器中造訪回呼請求來完成它。因此,攻擊者將能夠透過虛假提供者帳戶存取受害者在易受攻擊網站上的帳戶。

受影響的 Spring 產品與版本

  • Spring Social Core 1.0.0 至 1.0.3
  • Spring Social Core 1.1.0 至 1.1.2

緩解措施

受影響的 Spring Social 版本的使用者應按如下方式升級

  • 對於 Spring Social 1.0.x,升級至 1.1.3+
  • 對於 Spring Social 1.1.x,升級至 1.1.3+

在上述版本中,Spring Social 要求回呼請求中存在 `state` 參數。如果找不到,則會拋出 IllegalStateException 並且授權流程會終止。

致謝

此問題最初由 Include Security 的 Kris Bosch 發現。然後,sourceclear 的 Paul Ambrosini (https://srcclr.com) 識別了根本原因、易受攻擊的程式庫和易受攻擊的程式碼。

CVE-2015-5211 Spring Framework 中的 RFD 攻擊

| 2015 年 10 月 15 日 | CVE-2015-5211

說明

在某些情況下,Spring Framework 容易受到反射檔案下載 (RFD) 攻擊。此攻擊涉及惡意使用者製作具有批次指令碼副檔名的 URL,這會導致回應被下載而不是呈現,並且還包括在回應中反映的一些輸入。

有關詳細資訊和具體範例,請參閱 Trustwave 提供的非常有用的 RFD 論文

受影響的 Spring 產品與版本

  • Spring Framework 3.2.0 至 3.2.14
  • Spring Framework 4.0.0 至 4.1.7
  • Spring Framework 4.2.0 至 4.2.1
  • 其他不受支援的版本也受到影響

緩解措施

受影響的 Spring Framework 版本的使用者應按如下方式升級

  • 對於 3.2.x,升級至 3.2.15+。
  • 對於 4.0.x 和 4.1.x,升級至 4.1.8+。
  • 對於 4.2.x,升級至 4.2.2+。

在上述版本中,Spring MVC 會在使用 HttpMessageConverter 寫入之前檢查 URL 是否包含檔案副檔名,如果副檔名未知,則會新增“Content-Disposition”回應標頭,以建議下載檔案名稱“f.txt”。預設情況下,“已知”副檔名的清單包括與內建 HttpMessageConverter 實作相關聯的副檔名,以及為內容協商目的明確註冊的任何其他副檔名。對於 4.x,此修補程式還包括對 SockJS URL 的 URL 檢查以及對所有支援 JSONP 的區域中 JSONP 回呼參數的驗證。

只需升級到上述版本即可保護應用程式免受 RFD 攻擊。還可以採取一些其他步驟

致謝

Trustwave 在一篇 論文中描述了 RFD 攻擊。 HPE Security Research 的 Alvaro Muñoz 將 Spring Framework 中的問題負責地報告給了 Pivotal。 特別感謝…

CVE-2015-3192 XML 輸入的 DoS 攻擊

| 2015 年 6 月 30 日 | CVE-2015-3192

說明

XML 外部實體先前已透過發布 http://pivotal.io/security/cve-2013-6429 而被停用。如果 DTD 沒有完全停用,則可以使用內嵌 DTD 宣告來執行阻斷服務攻擊 (Denial of Service attacks),也就是所謂的 XML 炸彈。 這些宣告在 XML 綱要規則中既是格式良好 (well-formed) 且有效的,但在解析時可能會導致記憶體不足錯誤。 為了防止這種攻擊,必須停用 DTD 支援,方法是在 DOM 和 SAX API 中將 disallow-doctype-dec 功能設定為 true,並在 StAX API 中將 supportDTD 屬性設定為 false

現在,在 Spring Framework 中,只要框架設定從外部來源解析 XML,預設就會執行此操作。 主要包括 spring-oxm 中的 Unmarshaller 實作和 spring-web 中的 HttpMessageConverter 實作。

請注意,應用程式可能需要採取進一步的措施,尤其是在使用 StAX 時。 例如,IBM JDK 1.6 和 1.7 除了設定 supportDTD=false 之外,還需要一個環境變數 (請參閱 IBM JDK 參考資料)。 此外,我們發現單獨使用 supportDTD 並不能防止 JDK JAXP 實作中的所有類型的 DoS 攻擊。 因此,我們建議使用 Woodstox 開源函式庫進行 StAX 解析。

以下說明 StAX 在 Spring Framework 中的使用時機

  • SourceHttpMessageConverter -- 預設啟用。 這個轉換器是在 3.2 中新增的,而 StAX 支援是在 4.0.1 中新增的,並用於轉換為 javax.xml.transform.stax.StAXSource 類型的 Spring MVC 控制器方法引數時。
  • Jaxb2CollectionHttpMessageConverter -- 預設不啟用。 這個轉換器是在 3.2 中新增的。
  • MappingJackson2XmlHttpMessageConverter -- 當 classpath 中存在 "jackson-dataformat-xml" 時啟用。 這個轉換器是在 4.1 中新增的。

受影響的 Spring 產品與版本

  • Spring Framework 3.2.0 到 3.2.13
  • Spring Framework 4.0.0 到 4.1.6
  • 其他不受支援的版本也受到影響

緩解措施

受影響的 Spring Framework 版本的使用者應按如下方式升級

  • 對於 3.2.x,請升級到 <strong>3.2.14 以上</strong>
  • 對於 4.0.x 和 4.1.x,請升級到 <strong>4.1.7 以上</strong>

此外,透過 StAX 從外部來源取用 XML 輸入的應用程式也應使用和/或升級到最新版本的 Woodstox 函式庫,例如 4.2+ 版(4.2.1 是 Spring IO Platform 中目前維護的版本)。

關於新增 Woodstox 的注意事項

StAX 定義了一種標準機制,用於在有多個可用時選擇要使用的 StAX 實作,包括系統屬性和 WEB-INF/services 下的服務定義。 Woodstox 包含必要的服務定義,因此只需將其添加到 classpath 中即可。 但是,某些應用程式伺服器(例如 WebLogic)已經捆綁了(較舊版本的)Woodstox,在這種情況下,您可能需要配置伺服器以首選應用程式選擇的那個,請參閱此關於 prefer-application-packages 的參考

致謝

這個問題是由 NTT DATA Corporation 的 Toshiaki Maki 負責地識別並報告給 Pivotal,他也協助開發和測試了該解決方案。

參考資料

CVE-2015-0201 Java SockJS 客戶端中隨機性不足的會話 ID

| 2015 年 3 月 6 日 | CVE-2015-0201

說明

Java SockJS 客戶端中的會話 ID 產生不夠安全,可能會允許使用者將訊息發送到另一個使用者的會話。

請注意,這僅影響 Java SockJS 客戶端的使用者,該客戶端會產生自己的會話 ID。 它不會影響瀏覽器客戶端,即使它們連接到同一伺服器也是如此。

此外,由於 SockJS 是一個傳輸層,因此當在頂層使用更高階的訊息協定(例如透過 WebSocket 的 STOMP 與 spring-messaging 模組)時,應用程式層級的安全性可能已經應用於 STOMP 訊息,並且可以消除任何潛在攻擊的影響。

受影響的 Spring 產品與版本

  • Spring Framework 4.1.0 到 4.1.4

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 4.1.x 的使用者應升級到 4.1.5 或更高版本

致謝

Philippe Arteau 發現並負責地將問題報告給 Pivotal。

參考資料

CVE-2014-3625 Spring Framework 中的目錄遍歷

| 2014 年 11 月 11 日 | CVE-2014-3625

說明

某些 URL 在使用前未正確清理,導致攻擊者可以取得檔案系統上任何也能被 Spring Web 應用程式執行的程序存取的檔案。

受影響的 Spring 產品與版本

  • Spring Framework 3.0.4 到 3.2.11
  • Spring Framework 4.0.0 到 4.0.7
  • Spring Framework 4.1.0 到 4.1.1
  • 其他不受支援的版本也可能受到影響

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 3.2.x 的使用者應升級到 3.2.12 或更高版本
  • 4.0.x 的使用者應升級到 4.0.8 或更高版本
  • 4.1.x 的使用者應升級到 4.1.2 或更高版本

致謝

這個問題是由 NTT DATA Corporation 的 Toshiaki Maki 識別並負責地報告給 Pivotal。

參考資料

CVE-2014-3578 Spring Framework 中的目錄遍歷

| 2014 年 9 月 5 日 | CVE-2014-3578

說明

某些 URL 在使用前未正確清理,導致攻擊者可以取得檔案系統上任何也能被 Spring Web 應用程式執行的程序存取的檔案。

受影響的 Spring 產品與版本

  • 4.0.0 到 4.0.4
  • 3.2.0 到 3.2.8
  • 已知 3.1.1 受到影響
  • 其他不受支援的版本也可能受到影響

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 3.x 的使用者應升級到 3.2.9 或更高版本
  • 4.x 的使用者應升級到 4.0.5 或更高版本

致謝

這個問題是由 Mitsui Bussan Secure Directions, Inc. 的 Takeshi Terada 識別並透過 JPCERT/CC 報告給 Pivotal。發現其他版本受到影響的資訊…

CVE-2014-3527 Spring Security 中的存取控制繞過

| 2014 年 8 月 15 日 | CVE-2014-3527

說明

當使用 Spring Security 的 CAS Proxy 票證驗證時,惡意的 CAS 服務可能會欺騙另一個 CAS 服務驗證未關聯的代理票證。 這是因為代理票證驗證使用來自 HttpServletRequest 的資訊,該資訊基於 HTTP 請求中不受信任的資訊而填充。

這意味著如果對哪些 CAS 服務可以相互驗證存在存取控制限制,則可以繞過這些限制。

如果使用者未使用 CAS Proxy 票證,並且沒有根據 CAS 服務做出存取控制決策,則對使用者沒有影響。

受影響的 Spring 產品與版本

  • 3.1 到 3.2.4

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 3.2x 的使用者應升級到 3.2.5 或更高版本
  • 3.1.x 的使用者應升級到 3.1.7 或更高版本

致謝

這個問題是由 David Ohsie 識別並由 CAS 開發團隊引起我們的注意。

參考資料

CVE-2014-0225 使用 Spring MVC 時的 XML 外部實體 (XXE) 注入

| 2014 年 5 月 28 日 | CVE-2014-0225

說明

在處理使用者提供的 XML 文件時,Spring Framework 預設情況下未停用 DTD 宣告中 URI 參考的解析。 這啟用了 XXE 攻擊。

受影響的 Spring 產品與版本

  • Spring MVC 3.0.0 到 3.2.8
  • Spring MVC 4.0.0 到 4.0.4
  • 更早的不受支援版本可能受到影響

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 3.x 的使用者應升級到 3.2.9 或更高版本
  • 4.x 的使用者應升級到 4.0.5 或更高版本

致謝

這個問題是由 Nebula(XIAOBAISHAN,CHIBI,HUBEI.CN) HelloWorld 安全團隊、DBappsecurity.com 安全團隊發現並負責地報告給 Pivotal 安全團隊。 其他…

CVE-2014-0054 CVE-2013-7315 / CVE-2013-6429 (XXE) 的不完整修復

| 2014 年 3 月 11 日 | CVE-2014-0054

說明

Spring MVC 的 Jaxb2RootElementHttpMessageConverter 也處理使用者提供的 XML,既未停用 XML 外部實體,也未提供停用它們的選項。 Jaxb2RootElementHttpMessageConverter 已被修改為提供一個選項來控制 XML 外部實體的處理,並且該處理現在預設情況下已停用。

受影響的 Spring 產品與版本

  • Spring MVC 3.0.0 到 3.2.7
  • Spring MVC 4.0.0 到 4.0.1
  • 更早的不受支援版本可能受到影響

緩解措施

受影響版本的用戶應採取以下緩解措施

  • 3.x 的使用者應升級到 3.2.8 或更高版本
  • 4.x 的使用者應升級到 4.0.2 或更高版本

致謝

這個問題是由 Spase Markovski 報告給 Spring Framework 開發人員的。

參考資料

領先一步

VMware 提供培訓和認證,以加速您的進度。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

瞭解更多

即將舉辦的活動

查看 Spring 社群中所有即將舉辦的活動。

查看全部