詳解Web應用安全系列(7)使用具有已知漏洞的元件

永远的麦子發表於2024-07-04
使用具有已知漏洞的元件,這種安全漏洞普遍存在,基於元件開發的模式使得多數開發團隊根本不瞭解其應用或API中使用的元件,更談不上及時更新這些元件了。
下面就分別以.NET和Java各分享一個案例。

.NET 案例:XmlSerializer反序列化漏洞

案例描述

在.NET框架中,XmlSerializer類是一個常用的工具,用於將高度結構化的XML資料對映為.NET物件。然而,如果開發人員不當地使用XmlSerializer類來反序列化外部輸入的XML資料,就可能觸發反序列化漏洞,導致任意程式碼執行等安全問題。

具體案例

漏洞型別:XmlSerializer反序列化漏洞
影響:攻擊者可以透過構造惡意的XML資料,利用該漏洞執行任意程式碼。
示例:在.NET應用程式中,如果開發人員使用
XmlSerializer.Deserialize方法反序列化來自不可信源的XML資料,而沒有進行適當的驗證和過濾,就可能受到攻擊。例如,在DotNetNuke平臺中,就曾發現過由於不當使用XmlSerializer而導致的任意程式碼執行漏洞(CVE-2017-9822)。

防護措施

  1. 對所有外部輸入的XML資料進行嚴格的驗證和過濾。
  2. 使用安全的反序列化方法,如.NET Core中的System.Text.Json或第三方庫。
  3. 定期更新.NET框架和所有依賴的庫,以修復已知的安全漏洞。

Java 案例:fastjson反序列化漏洞

案例描述

fastjson是阿里巴巴開發的一個高效能的JSON庫,廣泛用於Java應用程式中。然而,fastjson在反序列化不可信資料時存在遠端程式碼執行的安全漏洞。

具體案例

漏洞型別:fastjson反序列化漏洞
影響:攻擊者可以透過傳送惡意構造的JSON資料,利用該漏洞執行任意程式碼,從而完全控制受影響的系統。
示例:在Java應用程式中,如果開發人員使用fastjson來反序列化來自外部源的JSON資料,並且沒有正確配置或更新fastjson庫,就可能受到攻擊。惡意使用者可以透過在JSON資料中包含特定的@type欄位來觸發漏洞,並執行惡意程式碼。

防護措施

  1. 升級fastjson到最新版本,以包含最新的安全修復。
  2. 禁止在反序列化過程中使用@type欄位,或者在必要時進行嚴格的驗證和過濾。
  3. 考慮使用其他安全的JSON庫,如Jackson或Gson。
  4. 對所有外部輸入的JSON資料進行嚴格的驗證和過濾。
這兩個案例都強調了在使用具有已知漏洞的元件時可能面臨的安全風險,並提供了相應的防護措施。在實際開發中,開發人員應該密切關注所使用的元件的安全性和更新情況,及時採取必要的措施來保護應用程式的安全。
另外,我最近開發並開源了一個支援免費申請萬用字元SSL證書的平臺:華迅FreeCert,解決了每隔一段時間就要重新申請和部署證書(因為傳統的雲廠商提供的免費證書一般只有三個月有效期),不支援免費申請萬用字元證書這兩大痛點,歡迎大家註冊使用並提供寶貴意見,謝謝!

相關文章