CVE-2015-5211 Spring Framework 中的 RFD 攻擊
描述
在某些情況下,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。特別感謝...