Spring Security 安全性建議

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 應用程式透過 AbstractJsonpResponseBodyAdvice (適用於 REST 控制器) 和 MappingJackson2JsonView (適用於瀏覽器要求) 啟用透過 JSONP (JSON with Padding) 的跨網域要求。 兩者在 Spring Framework 和 Spring Boot 中預設皆未啟用。 然而,當在應用程式中設定 MappingJackson2JsonView 時,JSONP 支援會自動透過 "jsonp" 和 "callback" 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 發現並報告。

參考資料

  • SPR-16798 “棄用 JSONP 支援並更新 MappingJackson2JsonView”
  • 範例 使用 MappingJackson2JsonView 的組態
  • Spring MVC CORS 支援

歷史記錄

2018-06-14:發布初始漏洞報告。

領先一步

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

了解更多

取得支援

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

了解更多

即將舉行的活動

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

檢視全部