更新
此問題現已分配給CVE-2022-22965
根據不同的訊息來源,似乎我們在使用 Spring Core 庫時遇到了嚴重的安全問題。
- https://securityboulevard.com/2022/03/new-spring4shell-zero-day-vulnerability-confirmed-what-it-is-and-how-to-be-prepared/
參考上述鏈接,如果出現以下情況,我們將面臨風險:
- 您使用 Spring 應用程式(最高并包括版本 5.3.17)您的應用程式在 Java 9 上運行
- 您使用帶有名稱=值對的表單系結——而不是使用 Spring 更流行的 JSON/XML 訊息轉換
- 您沒有使用白名單 – 或者 – 您沒有阻止“類”、“模塊”、“類加載器”等欄位的黑名單
該鏈接建議了一些解決方案,但似乎并不容易實作/可靠。我們應該怎么做才能以最簡單和最可靠的方式解決這個問題?
uj5u.com熱心網友回復:
根據Spring Framework RCE: Early Announcement,升級到 Spring Framework 5.3.18 或 5.2.20 將修復 RCE。
如果您使用 Spring Boot,則Spring Boot 2.5.12和Spring Boot 2.6.6修復了該漏洞。
如果您無法更新:
您可以選擇只升級 Tomcat。Apache Tomcat 團隊發布了 10.0.20、9.0.62 和 8.5.78 版本,所有這些版本都關閉了 Tomcat 方面的攻擊媒介。
如果您無法執行上述任何操作,RCE 公告博客文章建議了一種解決方法:disallowedFields通過WebDataBinder以下方式設定@ControllerAdvice:
@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE)
public class BinderControllerAdvice {
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(denylist);
}
}
disallowedFields如果控制器通過其自己的方法在本地設定,此快速修復將不起作用@InitBinder,該方法會覆寫全域設定。此外,更一般地說,如果您使用替代的 REST 框架(例如 Jersey),該解決方法將不會產生影響(但是,尚未證明此類配置會受到影響)。
uj5u.com熱心網友回復:
Note: 稍后需要 Spring 升級,因為 Tomcat 中沒有漏洞
臨時解決方法是將 tomcat 升級到 10.0.20、9.0.62 和 8.5.78
彈簧參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/456388.html
標籤:春天 弹簧靴 弹簧MVC 安全 spring-webflux
