Apache Software Foundation 釋出了一個,以解決 Struts 2.0.0 到 2.5.29 版本中存在的一個遠端程式碼執行漏洞;攻擊者可以利用此漏洞來控制受影響的系統。對此,美國網路安全和基礎設施安全域性 (CISA) 也釋出敦促組織檢視 Apache 的公告,並盡快升級到最新的 Struts 2 修補程式版本。
該漏洞被跟蹤為 CVE-2021-31805,是由於 2020 年 CVE-2020-17530 () 的不完整修復造成的。也就是說,這一漏洞早在 2020 年就已存在且當時被認為已修復,但事實證明問題並未完全得到解決。
在 2020 年,GitHub 的研究人員 Alvaro Munoz 和 Aeye 安全實驗室的 Masato Anzai 報告了 Struts 2 版本 2.0.0 - 2.5.25 在某些情況下存在一個 OGNL 注入漏洞,編號為 CVE-2020-17530,在 CVSS 嚴重性方面獲得了 9.8 分(滿分 10 分)。
「如果開發者使用 %{...} 語法進行強制 OGNL 評估,標籤的一些屬性仍然可以執行雙重評估。對不信任的使用者輸入使用強制 OGNL 評估可能導致遠端程式碼執行和安全效能下降。」
物件圖導航語言 (Object-Graph Navigation Language,OGNL) 是一種開源的 Java 表示式語言,簡化了 Java 語言中的表示式範圍。它被整合在 Struts2 等框架中,作用是對資料進行存取;擁有型別轉換、存取物件方法、操作集合物件等功能。
儘管 Apache 在 Struts 2.5.26 中解決了 2020 年所報告的漏洞,但研究人員 Chris McCown ,所應用的修復方案並不完整。他向 Apache 報告稱,「雙重評估」問題仍然可以在 Struts 版本 2.5.26 及更高版本中重現。
作為解決措施,Apache 方面建議開發人員避免基於不受信任的使用者輸入在標籤屬性中使用強制 OGNL 評估,和/或升級到 Struts 2.5.30 或更高版本,以檢查表示式評估是否不會導致雙重評估。並建議遵循以獲得最佳實踐。