摘要
Resecurity 的 HUNTER 團隊在一次網路安全評估中發現,Azure Active Directory (Azure AD) 的應用程式憑證,包括 ClientId 和 ClientSecret,被暴露在一個公開可存取的 Application Settings (appsettings.json) 檔案中,這類型的洩露被視為高嚴重性的安全漏洞。
這項發現凸顯了雲端環境中常見的配置錯誤,這些錯誤可能直接將「雲端金鑰」交給惡意攻擊者。由於該檔案可透過網際網路公開存取,任何人都可能利用這些憑證進行雲端帳戶入侵、資料竊取或更進一步的攻擊。這種將 Azure AD 密鑰直接嵌入到 appsettings.json 檔案中的做法,不僅僅是單純的配置錯誤,而是一個直接的攻擊向量,為攻擊者提供了繞過傳統防禦措施的途徑。
一旦憑證被洩露,攻擊者可以:
冒充受信任的應用程式,存取敏感的 Microsoft 365 資源。
從 SharePoint、OneDrive 或 Exchange Online 檢索檔案和電子郵件。
在 Azure AD 中列舉使用者、群組和目錄角色,進行橫向移動。
利用 Microsoft Graph API 提升權限或維持持久性。
在組織的租戶下部署惡意應用程式。
此類事件的根源通常來自於開發者直接將機密資訊硬編碼在設定檔中,以及缺乏適當的秘密管理工具(如 Azure Key Vault)。此外,伺服器配置錯誤、部署流程不當、安全測試不足以及過度依賴「隱藏」而非實際保護機制,也都是導致這類漏洞的常見原因。
為防範此類風險,組織應立即採取行動。首先,應確保所有設定檔,尤其是包含敏感資訊的檔案,絕不應公開存取。其次,應立即輪換所有已暴露的憑證,並將其視為已被入侵。最重要的是,應實施「最低權限原則」,並將秘密資訊從程式碼中分離出來,改用專門的秘密管理服務。持續監控與警報機制也是不可或缺的一環,以迅速偵測和應對任何異常的憑證使用情況。
總結來說,Azure AD 憑證洩露是一項嚴重的威脅,它突顯了雲端安全中人為錯誤與配置不當所帶來的風險。透過實施嚴格的安全最佳實踐、使用專業的秘密管理工具並加強員工的安全意識,組織才能有效保護其雲端環境,防範這類將「雲端金鑰」拱手讓人的致命錯誤。
報告正文
近年來,隨著企業將其運算環境從地端轉移到雲端,雲端安全威脅也日益複雜。其中,憑證外洩已成為最普遍且最具破壞性的攻擊形式之一。最近的研究報告揭示了一個令人擔憂的趨勢:開發者無意中在公共檔案中暴露了其 Azure Active Directory (Azure AD) 的憑證,從而為攻擊者打開了通往企業雲端核心的大門。
洩露的技術細節與攻擊手法
這起事件的核心是 appsettings.json
檔案。這是一個在 .NET 應用程式中常用的設定檔,用於儲存應用程式配置,包括連接字串、API 金鑰和憑證。當開發人員將 ClientId
和 ClientSecret
等 Azure AD 憑證直接硬編碼到此檔案中,並在部署時未能正確配置伺服器以限制其公開存取時,這些機密資訊便可能被公開在網路上。
攻擊者,無論是自動化爬蟲還是專業駭客,可以輕易地透過搜尋引擎或專門的漏洞掃描工具,找到這些被錯誤配置而公開的檔案。一旦獲得憑證,他們就可以利用 Microsoft 的 OAuth 2.0 端點,冒充合法的應用程式進行身份驗證。這給予了攻擊者極大的自由,使其能夠執行一系列惡意行為。
攻擊者可利用這些洩露的憑證,透過 Microsoft Graph API 進行權限升級和數據外洩。他們可以:
數據竊取: 存取並竊取儲存在 SharePoint、OneDrive 或 Exchange Online 中的敏感檔案和電子郵件。
目錄偵察: 在 Azure AD 中靜默地列舉使用者、群組和目錄角色,以規劃後續的攻擊步驟。
持久性後門: 建立後門或部署惡意應用程式,以維持對受害組織的長期控制。
橫向移動: 利用這些憑證從一個雲端資源移動到另一個,擴大其在整個 Microsoft 365 租戶內的影響範圍。
造成憑證外洩的根本原因
這種看似低級的錯誤卻能造成如此嚴重的後果,其背後有幾個主要原因:
程式碼中的秘密硬編碼: 許多開發者為了方便,習慣於將秘密資訊直接寫入程式碼或設定檔中,而非採用安全的外部化管理方式。
糟糕的部署實踐: 缺乏自動化部署流程和配置管理工具,導致手動部署過程中容易出現人為錯誤,例如忘記限制敏感檔案的存取權。
缺乏秘密管理解決方案: 未能採用如 Azure Key Vault 等專業的秘密管理服務,這些服務能夠安全地儲存和動態分發憑證,避免其暴露在程式碼庫或設定檔中。
安全測試不足: 在開發和部署過程中,缺乏針對靜態檔案洩露和配置錯誤的自動化安全掃描與測試。
對「隱藏」的錯誤依賴: 錯誤地認為只要URL不被公開或檔案名夠複雜,憑證就是安全的。這種「藉由隱藏來保安全」的心態,在面對自動化工具時不堪一擊。
應對與防範措施
為有效應對和防範 Azure AD 憑證外洩,組織應立即實施以下最佳實踐:
限制檔案存取: 確保包含敏感資訊的設定檔(如 .json
, .config
, .env
檔)絕不會被網際網路公開存取。在 Web 伺服器(如 IIS、Nginx、Apache)上配置規則,直接拒絕所有對這類檔案的請求。
使用秘密管理服務: 採用 Azure Key Vault 或其他專業的秘密管理服務。這些服務允許應用程式在執行時安全地讀取憑證,而無需將其儲存在程式碼或設定檔中。
立即輪換受損憑證: 一旦發現任何憑證外洩,應立即將其視為已被入侵。迅速輪換 ClientSecret,重新產生存取金鑰,並撤銷所有舊的、已暴露的憑證。
實施最低權限原則: 確保 Azure AD 應用程式僅被授予執行其任務所需的最低權限。避免授予 Directory.Read.All
或全域性權限,除非絕對必要。
加強監控與警報: 實施對憑證使用情況的監控和警報系統。在偵測到來自異常 IP 地址或在非正常時間的憑證使用時,應立即觸發警報並進行調查。
持續教育與培訓: 對開發者和維運人員進行定期培訓,強調安全編程實踐、秘密管理的最佳方法以及配置管理的重要性。
結論
公開檔案中的 Azure AD 憑證洩露並非一個孤立事件,而是廣泛存在的雲端安全挑戰的縮影。它清楚地提醒我們,雲端環境的安全性不僅依賴於雲服務提供商的基礎設施,更取決於使用者自身的配置與管理。透過全面審查和改進開發、部署及維運流程中的安全實踐,並積極採用現代化的秘密管理工具,企業才能有效降低這類風險,從而保護其在雲端中的數位資產。
資料來源:https://www.darkreading.com/cybersecurity-operations/public-file-leaks-azure-activedirectory-credentials