Spring Security 安全建議

CVE-2018-1274:Spring Data 阻斷服務攻擊

嚴重 | 2018 年 4 月 10 日 | CVE-2018-1274

描述

Spring Data Commons,1.13 至 1.13.10、2.0 至 2.0.5 之前的版本,以及較舊的不支援版本,包含由無限制資源分配導致的屬性路徑剖析器漏洞。未經身份驗證的遠端惡意使用者(或攻擊者)可以針對 Spring Data REST 端點或使用屬性路徑剖析的端點發出請求,這可能導致阻斷服務(CPU 和記憶體消耗)。

受影響的 Spring 產品和版本

  • Spring Data Commons 1.13 至 1.13.10 (Ingalls SR10)
  • Spring Data REST 2.6 至 2.6.10 (Ingalls SR10)
  • Spring Data Commons 2.0 至 2.0.5 (Kay SR5)
  • Spring Data REST 3.0 至 3.0.5 (Kay SR5)
  • 較舊的不支援版本也會受到影響

緩解措施

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

  • 2.0.x 使用者應升級至 2.0.6
  • 1.13.x 使用者應升級至 1.13.11
  • 較舊版本應升級至支援的分支

已修復此問題的版本包括

  • Spring Data REST 2.6.11 (Ingalls SR11)
  • Spring Data REST 3.0.6 (Kay SR6)

沒有其他必要的緩解步驟。

請注意,使用 Spring Security 提供的端點身份驗證和授權,可將此漏洞的暴露限制在授權使用者範圍內。

鳴謝

此問題由 Yevhenii Hrushka (Yevgeniy Grushka), Fortify Webinspect 負責地識別和報告。

參考文獻

CVE-2018-1275:解決 CVE-2018-1270 的部分修復

嚴重 | 2018 年 4 月 9 日 | CVE-2018-1275

描述

此 CVE 解決了 Spring Framework 4.3.x 分支中 CVE-2018-1270 的部分修復。

Spring Framework 5.0.x(5.0.5 之前)和 4.3.x(4.3.16 之前)版本,以及較舊的不支援版本,允許應用程式透過 spring-messaging 模組公開具有簡單的記憶體內 STOMP 代理的 STOMP over WebSocket 端點。惡意使用者(或攻擊者)可以製作傳送到代理的消息,從而導致遠端程式碼執行攻擊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.15
  • 較舊的不支援版本也會受到影響

緩解措施

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

  • 5.0.x 使用者應升級至 5.0.5
  • 4.3.x 使用者應升級至 4.3.16
  • 較舊版本應升級至支援的分支

沒有其他必要的緩解步驟。

請注意,使用 Spring Security 提供的訊息身份驗證和授權,可將此漏洞的暴露限制在授權使用者範圍內。

鳴謝

最初的問題 CVE-2018-1270 由 Alvaro Muñoz (@pwntester), Micro Focus Fortify 負責地識別和報告。隨後的 CVE-2018-1275 部分修復由…識別和報告

CVE-2018-1270:使用 spring-messaging 遠端程式碼執行

嚴重 | 2018 年 4 月 5 日 | CVE-2018-1270

描述

Spring Framework 5.0.x(5.0.5 之前)和 4.3.x(4.3.16 之前)版本,以及較舊的不支援版本,允許應用程式透過 spring-messaging 模組公開具有簡單的記憶體內 STOMP 代理的 STOMP over WebSocket 端點。惡意使用者(或攻擊者)可以製作傳送到代理的消息,從而導致遠端程式碼執行攻擊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.15
  • 較舊的不支援版本也會受到影響

緩解措施

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

  • 5.0.x 使用者應升級至 5.0.5
  • 4.3.x 使用者應升級至 4.3.16
  • 較舊版本應升級至支援的分支

沒有其他必要的緩解步驟。

請注意,使用 Spring Security 提供的訊息身份驗證和授權,可將此漏洞的暴露限制在授權使用者範圍內。

鳴謝

此問題由 Alvaro Muñoz (@pwntester), Micro Focus Fortify 負責地識別和報告。

參考文獻

CVE-2018-1271:在 Windows 上使用 Spring MVC 進行目錄遍歷

| 2018 年 4 月 5 日 | CVE-2018-1271

描述

Spring Framework 5.0 至 5.0.4、4.3 至 4.3.14 以及較舊的不支援版本允許應用程式設定 Spring MVC 來提供靜態資源(例如 CSS、JS、圖像)。當靜態資源從 Windows 上的檔案系統(而不是從類別路徑或 ServletContext)提供時,惡意使用者可以使用特殊製作的 URL 發送請求,從而導致目錄遍歷攻擊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.14
  • 較舊的不支援版本也會受到影響

緩解措施

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

  • 5.0.x 使用者應升級至 5.0.5
  • 4.3.x 使用者應升級至 4.3.15
  • 較舊版本應升級至支援的分支

沒有其他必要的緩解步驟。

另請注意,此攻擊不適用於以下應用程式

  • 不使用 Windows。
  • 不從檔案系統提供檔案,即不使用 “file:” 作為資源位置。
  • 使用已修復 CVE-2018-1199 的 Spring Security 版本。

鳴謝

此問題由 DEVCORE 的 Orange Tsai (@orange_8361) 負責地識別和報告。

參考文獻

CVE-2018-1272:Spring Framework 的 Multipart Content Pollution

| 2018 年 4 月 5 日 | CVE-2018-1272

描述

Spring Framework 5.0 至 5.0.4、4.3 至 4.3.14 以及較舊的不支援版本提供對 Multipart 請求的客戶端支援。當 Spring MVC 或 Spring WebFlux 伺服器應用程式(伺服器 A)收到來自遠端客戶端的輸入,然後使用該輸入向另一個伺服器(伺服器 B)發出 Multipart 請求時,它可能會受到攻擊,即在來自伺服器 A 的請求內容中插入額外的 Multipart,導致伺服器 B 對其預期的部分使用錯誤的值。如果部分內容表示使用者名稱或使用者角色,這可能會導致特權提升。

為了使攻擊者成功,他們必須能夠猜測伺服器 A 為發送到伺服器 B 的 Multipart 請求選擇的 Multipart 邊界值,這需要攻擊者還能夠控制伺服器或能夠透過單獨的攻擊媒介看到伺服器 A 的 HTTP 日誌。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.14
  • 較舊的不支援版本也會受到影響

緩解措施

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

  • 5.0.x 使用者應升級至 5.0.5
  • 4.3.x 使用者應升級至 4.3.15

沒有其他必要的緩解步驟。

鳴謝

此問題由 GoSecure 的 Philippe Arteau 負責地識別和報告。

歷史紀錄

2018-04-05:發布初始漏洞報告

CVE-2018-1229:Spring Batch Admin 的檔案上傳中儲存的 XSS

| 2018 年 3 月 16 日 | CVE-2018-1229

描述

Spring Batch Admin 的檔案上傳功能中的跨網站指令碼 (XSS) 漏洞允許遠端攻擊者透過與檔案上傳功能相關的精心製作的請求,注入任意 Web 指令碼或 HTML。

受影響的 Spring 產品和版本

  • Spring Batch Admin 所有版本

緩解措施

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

  • Spring Batch Admin 已於 2018 年 1 月 1 日終止生命週期。建議使用 Spring Cloud Data Flow 來管理和監控 Spring Batch 工作。

鳴謝

此漏洞由 Wen Bin Kong 負責地報告。

參考文獻

CVE-2018-1230:Spring Batch Admin 容易受到跨網站請求偽造攻擊

| 2018 年 3 月 16 日 | CVE-2018-1230

描述

Spring Batch Admin 不包含跨網站請求偽造 (CSRF) 保護,這可能允許攻擊者製作一個惡意網站,該網站執行對 Spring Batch Admin 的請求。

受影響的 Spring 產品和版本

  • Spring Batch Admin 所有版本

緩解措施

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

  • Spring Batch Admin 已於 2018 年 1 月 1 日終止生命週期。建議使用 Spring Cloud Data Flow 來管理和監控 Spring Batch 工作。

鳴謝

此漏洞由 Wen Bin Kong 負責地報告。

參考文獻

CVE-2018-1196:透過 Spring Boot 啟動指令碼的符號連結特權提升攻擊

| 2018 年 1 月 30 日 | CVE-2018-1196

描述

Spring Boot 支援嵌入式啟動指令碼,可用於輕鬆地將應用程式作為 systemd 或 init.d Linux 服務執行 [1]。Spring Boot 1.5.9 及更早版本中包含的指令碼容易受到符號連結攻擊,該攻擊允許 “run_user” 覆蓋並取得同一系統上任何檔案的所有權。

為了觸發攻擊,應用程式必須安裝為服務,且 “run_user” 需要具有伺服器的 shell 存取權。

未安裝為服務或未使用內嵌啟動腳本的 Spring Boot 應用程式不易受到攻擊。

[1] https://spring-docs.dev.org.tw/spring-boot/docs/1.5.x/reference/htmlsingle/#deployment-service

受影響的 Spring 產品和版本

  • Spring Boot
    • 1.5.0 - 1.5.9
    • 2.0.0.M1 - 2.0.0.M7
  • 未分析較舊的、未維護的 Spring Boot 版本,可能受到影響。

緩解措施

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

  • 1.5.x 使用者應更新至 1.5.10
  • 2.0.x 預發布版本的使用者應更新至 2.0.0.RC1

鳴謝

此問題由 Oracle Cloud Operations, UK 的 Adam Stephens 發現並回報,並負責任地向 Pivotal 回報。

歷史紀錄

2018-01-30:發布初始漏洞報告

CVE-2018-1199:使用靜態資源繞過安全性

| 2018 年 1 月 29 日 | CVE-2018-1199

描述

Spring Security 在處理安全性限制時,未考慮 URL 路徑參數。透過添加具有特殊編碼的 URL 路徑參數,攻擊者可能能夠繞過安全性限制。此問題的根本原因是 Servlet 規範中對於路徑參數處理缺乏明確性(請參閱下文)。某些 Servlet 容器在 getPathInfo() 返回的值中包含路徑參數,而另一些則不包含。Spring Security 使用 getPathInfo() 返回的值作為將請求映射到安全性限制的過程的一部分。在這次特定的攻擊中,路徑參數中使用的不同字元編碼允許繞過受保護的 Spring MVC 靜態資源 URL。

受影響的 Spring 產品和版本

  • Spring Security
    • 4.1.0 - 4.1.4
    • 4.2.0 - 4.2.3
    • 5.0.0
  • Spring Framework
    • 5.0.0 - 5.0.2
    • 4.3.0 - 4.3.13
  • 未分析較舊的、未維護的 Spring Security & Spring Framework 版本,可能受到影響。

緩解措施

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

  • Spring Security<ul><li>5.0.x 使用者應更新至 5.0.1</li><li>4.2.x 使用者應更新至 4.2.4</li><li>4.1.x 使用者應更新至 4.1.5</li></ul>
  • Spring Framework<ul><li>5.0.x 使用者應更新至 5.0.3</li><li>4.3.x 使用者應更新至 4.3.14</li></ul>

作為一般的預防措施,建議使用者分離公共和私有資源。例如,分離靜態資源並將它們映射到 /resources/public/** 和 /resources/private/**,比擁有一個公共根目錄且其下混合公共和私有資源內容更佳。

鳴謝

此問題由 NTT Comware、NTT DATA Corporation 和 NTT 的 Macchinetta Framework Development Team 發現,並負責任地向 Pivotal 回報。

歷史紀錄

2018-01-29:初始...

CVE-2017-8028:使用 userSearch 和 STARTTLS 的 Spring-LDAP 身份驗證允許使用任意密碼進行身份驗證

| 2017 年 10 月 16 日 | CVE-2017-8028

描述

當連接到某些 LDAP 伺服器,且沒有綁定額外的屬性,並且使用 LDAP BindAuthenticator 以及 org.springframework.ldap.core.support.DefaultTlsDirContextAuthenticationStrategy 作為身份驗證策略,並設定 userSearch 時,當使用者名稱正確時,允許使用任意密碼進行身份驗證。這是因為某些 LDAP 供應商需要一個明確的操作才能使 LDAP 绑定生效。

受影響的 Spring 產品和版本

  • Spring-LDAP 版本 1.3.0 - 2.3.1

緩解措施

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

  • 升級至 Spring-LDAP 版本 2.3.2.RELEASE+

鳴謝

此漏洞由 Tobias Schneider 負責任地回報。

參考文獻

領先一步

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

了解更多

取得支援

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

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部