CVE-2018-11040:MappingJackson2JsonView 預設啟用了 JSONP

中等 | 2018年6月14日 | CVE-2018-11040

描述

Spring Framework 的 5.0.x 系列(5.0.7 之前的版本)、4.3.x 系列(4.3.18 之前的版本)以及更早的不再受支援的版本,允許 Web 應用程式透過 JSONP(JSON with Padding)實現跨域請求。具體來說,AbstractJsonpResponseBodyAdvice 用於 REST 控制器,而 MappingJackson2JsonView 用於瀏覽器請求。在 Spring Framework 和 Spring Boot 中,這兩者都不是預設啟用的。然而,當應用程式中配置了 MappingJackson2JsonView 時,透過 "jsonp" 和 "callback" 這兩個 JSONP 引數,JSONP 支援即可自動啟用,從而實現跨域請求。

允許來自不受信任來源的跨域請求可能會將使用者資訊暴露給第三方瀏覽器指令碼。

此漏洞適用於以下情況的應用程式:

  • 顯式配置了 MappingJackson2JsonView。
  • 並且未將 MappingJackson2JsonView 的 jsonpParameterNames 屬性設定為空集合。
  • 並且透過可以渲染 JSONP 內容的端點暴露敏感使用者資訊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 到 5.0.6
  • Spring Framework 4.1 至 4.3.17

緩解措施

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

  • 5.0.x 系列使用者應升級至 5.0.7。
  • 4.3.x 系列使用者應升級至 4.3.18。
  • 舊版本應升級到受支援的分支,或者將 MappingJacksonJsonView 的 jsonpParameterNames 屬性設定為空集合。

如果應用程式確實需要 JSONP 支援,在升級後需要顯式配置 MappingJacksonJsonView 的 jsonpParameterNames 屬性。建議應用程式切換到使用 CORS 來實現跨域請求,而不是 JSONP。Spring Framework 中的 JSONP 支援在 5.0.7 和 4.3.18 版本中已被棄用,並將在 5.1 版本中移除。

致謝

此問題由 Meyyalagan Chandrasekaran 發現並報告。

參考資料

歷史

2018-06-14:釋出初始漏洞報告。

領先一步

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

瞭解更多

獲得支援

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

瞭解更多

即將舉行的活動

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

檢視所有