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 攻擊。還可以採取一些進一步的措施

  • 對 JSON 響應進行編碼而不是轉義。這也是 OWASP XSS 建議。有關如何使用 Spring 執行此操作的示例,請參閱https://github.com/rwinch/spring-jackson-owasp
  • 配置字尾模式匹配以關閉或僅限於顯式註冊的字尾。
  • 配置內容協商,將屬性“useJaf”和“ignoreUknownPathExtension”設定為 false,這將導致對於具有未知副檔名的 URL 返回 406 響應。但請注意,如果 URL 自然地預期末尾帶有點,這可能不是一個選項。
  • 向響應新增“X-Content-Type-Options: nosniff”頭。Spring Security 4 預設執行此操作。

致謝

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

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

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

描述

XML 外部實體已透過釋出http://pivotal.io/security/cve-2013-6429被停用。如果 DTD 未完全停用,可以使用內聯 DTD 宣告執行稱為 XML 炸彈的拒絕服務攻擊。此類宣告根據 XML 模式規則既格式良好又有效,但在解析時可能導致記憶體不足錯誤。為了防止此類攻擊,必須透過將 DOM 和 SAX API 中的 disallow-doctype-dec 功能設定為 true,並透過將 StAX API 中的 supportDTD 屬性設定為 false 來停用 DTD 支援。

在 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 解析。

以下描述了 Spring Framework 中何時使用 StAX

  • SourceHttpMessageConverter -- 預設啟用。該轉換器在 3.2 中新增,而 StAX 支援在 4.0.1 中新增,用於轉換為型別為 javax.xml.transform.stax.StAXSource 的 Spring MVC 控制器方法引數。
  • Jaxb2CollectionHttpMessageConverter -- 預設不啟用。此轉換器在 3.2 中新增。
  • MappingJackson2XmlHttpMessageConverter -- 當類路徑中存在“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 升級到 3.2.14+
  • 對於 4.0.x 和 4.1.x 升級到 4.1.7+

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

新增 Woodstox 的注意事項

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

致謝

此問題由 NTT DATA 公司的 Toshiaki Maki 負責任地發現並報告給 Pivotal,他也協助開發和測試瞭解決方案。

參考資料

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

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

描述

Java SockJS 客戶端中的會話 ID 生成安全性不足,可能允許使用者向其他使用者的會話傳送訊息。

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

此外,由於 SockJS 是傳輸層,當在其之上使用更高級別的訊息傳遞協議(例如使用 spring-messaging 模組的 STOMP over WebSocket)時,應用程式級安全可能已經應用於 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 公司的 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 代理票據認證時,惡意 CAS 服務可能欺騙另一個 CAS 服務認證一個不相關的代理票據。這是因為代理票據認證使用了 HttpServletRequest 中的資訊,而這些資訊是根據 HTTP 請求中不可信的資訊填充的。

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

如果使用者不使用 CAS 代理票據,並且不基於 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 開發人員。

參考資料

CVE-2014-0097 空密碼可能繞過使用者認證

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

描述

ActiveDirectoryLdapAuthenticator 不檢查密碼長度。如果目錄允許匿名繫結,則它可能會錯誤地認證提供空密碼的使用者。

受影響的 Spring 產品和版本

  • Spring Security 3.2.0 至 3.2.1
  • Spring Security 3.1.0 至 3.1.5

緩解措施

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

  • 3.2.x 使用者應升級到 3.2.2 或更高版本
  • 3.1.x 使用者應升級到 3.1.6 或更高版本

致謝

此問題由 Spring 開發團隊發現。

參考資料

CVE-2014-1904 使用 Spring MVC 時的 XSS

中等 | 2014 年 3 月 11 日 | CVE-2014-1904

描述

當程式設計師未在 Spring 表單上指定 action 時,Spring 會自動使用請求的 URI 填充 action 欄位。攻擊者可以利用這一點向表單注入惡意內容。

受影響的 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 或更高版本

致謝

此問題由 CAaNES LLC 的 Paul Wowk 發現並負責任地報告給 Pivotal 安全團隊。

參考資料

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有