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 預設啟用此功能。

致謝

RFD 攻擊在 Trustwave 的一篇論文中有所描述。Spring Framework 中的問題由 HPE Security Research 的 Alvaro Muñoz 負責任地報告給了 Pivotal。特別感謝來自 NTT DATA Corporation 的 Toshiaki Maki 和 Tomoyuki Ikeya 協助驗證解決方案並找出利用此漏洞的其他方法。

參考資料

歷史記錄

2015 年 10 月 15 日:首次釋出漏洞報告。

領先一步

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

瞭解更多

獲取支援

Tanzu Spring 透過一個簡單的訂閱提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

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

檢視全部