駭客最愛的漏洞?深入解析 ASP.NET 安全危機

微軟安全部落格上的一篇文章討論了涉及 ASP.NET Machine key的一個重大安全漏洞,該漏洞已被公開披露並被Threat actoer利用進行程式碼注入攻擊,可能使攻擊者獲得遠端程式碼執行能力。這篇部落格文章重點介紹了使用已知密鑰來傳遞Godzilla後滲透框架(Post-exploitation framework)的具體實例。建議包括輪換密鑰、保護 DevOps 實踐以及升級到 ASP.NET 4.8。

攻擊就在眼前!ASP.NET 金鑰如何成為危機核心? | 資訊安全新聞

漏洞概述

  • 問題:開發人員一直在將來自程式碼文件和儲存庫等來源的 公開揭露的 ASP.NET machine key 合併到他們的應用程式中。這些金鑰原本用於保護 ASP.NET Web 表單中的 ViewState 資料,但卻被無意中洩露,導致攻擊者可以存取它們。
  • 影響:已發現超過 3,000 個公開揭露的金鑰,可用於 ViewState 程式碼注入攻擊。與暗網論壇上出售的被盜金鑰不同,這些金鑰在公共儲存庫 (public repository) 中廣泛可用,增加了被攻擊的風險。

ViewState 程式碼注入攻擊

  • ViewState 是什麼?它儲存在網頁上的隱藏欄位中,並使用 Base64 進行編碼。為了保護它,ASP.NET 使用 machine key(“ValidationKey” 和 “DecryptionKey”)進行加密和驗證。
  • 攻擊如何進行:如果攻擊者獲得這些 Machine key,他們就可以製作惡意的 ViewState Payload。透過 POST 請求傳送時,ASP.NET 執行階段使用公開的金鑰解密並驗證 Payload,從而允許惡意程式碼在目標伺服器上執行。這使得攻擊者能夠在 IIS 網路伺服器 上執行 遠端程式碼執行 (RCE) 的能力。

2024 年 12 月襲擊事件

  • 事件:2024 年 12 月,一名 Threat actor 使用公開揭露的 Machine key 執行 ViewState 程式碼注入攻擊。Payload 反射式載入 (Reflectively loaded) 了 assembly.dll,它是 Godzilla 後滲透框架 的一個元件,它提供命令執行、shellcode 注入和在受感染伺服器上持久化等功能。
  • Godzilla 框架:Godzilla 是一個模組化的 webshell 工具套件,允許攻擊者控制受感染的系統、執行命令並在網路內橫向移動 (Move laterally)。

微軟的建議

  • 密鑰輪換:組織應定期 輪換機器密鑰,並避免使用來自公共來源的金鑰。對於網站伺服器農場 (Web farm),請確保所有伺服器都使用相同的新產生的金鑰。
  • 刪除靜態金鑰:如果使用靜態金鑰,則應將其從「web.config」檔案中刪除,以允許 ASP.NET 自動產生安全金鑰。
  • 加密:加密 `web.config` 檔案中的敏感資料,以防止攻擊者存取純文字機密。
  • 升級至 ASP.NET 4.8:此版本啟用 反惡意軟體掃描介面-Antimalware Scan Interface (AMSI) 功能,提供增強的針對惡意 Payload 的保護。
  • 監控與調查:使用 Microsoft Defender for Endpoint 等工具來偵測暴露的金鑰並監控可疑活動。如果懷疑有漏洞,請進行徹底調查以識別後門或持久機制。

緩解 (Mitigation) 步驟

  • 使用 IIS 管理器控制台
    • 產生新的 Machine key 並將其套用到「web.config」檔案。
    • 或者,在運行時啟用密鑰的自動產生。
  • 使用 PowerShell
    • 提供了一個 Script 來產生新的 Machine key 並更新「web.config」檔案。

更廣泛的影響

  • 公開揭露金鑰的風險:公共儲存庫中 Machine key 的可用性使其成為攻擊者的容易攻擊的目標,從而避免了複雜漏洞的需要。
  • Secure DevOps Practice:開發人員必須採用安全的編碼實踐 (Secure coding practice),避免重複使用來自公共來源的金鑰,並確保在部署期間對敏感資料進行加密。
  • 主動安全措施:組織應實施 減少攻擊面規則 (Attack surface reduction rules) 並監控 IIS Log 中是否有異常活動,例如未經授權存取「web.config」檔案。

微軟的行動

  • 刪除金鑰樣本:微軟已從其公開文件中刪除了 Machine key 樣本,以阻止不安全的做法。
  • 偵測工具:Microsoft Defender for Endpoint 現在會向管理員發出有關其環境中存在公開披露的金鑰的警報。
  • 金鑰識別 Script:GitHub 上提供了暴露金鑰的 Script 和雜湊值列表,幫助組織識別和降低風險。

結論

文章強調了 安全金鑰管理 的重要性以及與錯誤設定的系統相關的風險。公開揭露的 Machine key 的攻擊凸顯了 Secure DevOps Practice 和主動安全措施的必要性,以保護關鍵基礎設施免受日益複雜的網路威脅。