影響租用戶的危險 API 權限

High

說明

Microsoft 透過 Entra ID 中的應用程式公開 API,以允許第三方應用程式在 Microsoft Entra ID 本身、Microsoft 365 (O365)、Azure 雲端等產品中執行動作。「API 權限」會保護這些 API 的存取權,只有需要這些 API 的服務主體才能擁有權限。此權限核准程序叫做「應用程式角色指派」或「同意授予」。

若服務主體擁有某些 Microsoft API 的特定權限 (請見下文),可能會對整個 Microsoft Entra 租用戶帶來嚴重威脅​,因為服務主體會擁有強大的權限,卻同時比高權限管理員角色 (例如全域管理員) 不顯眼。攻擊者可濫用這一點繞過多因素驗證 (MFA) 並阻止使用者重設密碼。

在正當的情況下,權限會增加租用戶的攻擊破綻。在不正當的情況下,可能是提升權限或長期潛伏等惡意嘗試。

如 Microsoft 說明文件權限和同意簡介所述,Microsoft Entra ID 有兩種類型的 API 權限:

  • 應用程式權限: 由管理員同意,權限適用於所有租用戶。
  • 委派權限: 由使用者或代表整個組織的管理員同意。請注意,這些權限會根據登入使用者的特權 (即權限和使用者特權等級的交集) 限制應用程式執行動作的能力。因此,正如制定委派權限策略 中所述,這些委派權限的危險性取決於應用程式使用者的實際權限。例如: 如果普通使用者委派了「Group.ReadWrite.All」權限,實際上會允許應用程式只修改使用者可以編輯的群組,而不是所有群組。

本曝險指標會檢查這兩種類型的權限,並只會報告有關服務主體的內容,因為 API 權限僅適用於服務主體而非使用者。

本曝險指標也會著重於允許存取 Microsoft Graph API 和舊型 Azure AD Graph API 的權限。具體而言,下列危險權限會帶來安全性風險:

  • RoleManagement.ReadWrite.Directory: 允許攻擊者將自己升級為全域管理員角色
  • AppRoleAssignment.ReadWrite.All: 允許攻擊者授予自己 RoleManagement.ReadWrite.Directory 權限 (請見上文)。

擁有這些危險權限的正當應用程式要求可能過於廣泛的權限。這也可能表示出現一種叫做「非法同意授予」的網路釣魚攻擊,在這種攻擊中,攻擊者會成功取得管理員同意。

解決方案

首先判斷報告之擁有權限的服務主體是否正當​。請注意,技術上來說,網路釣魚攻擊可以偽造顯示名稱。如果服務主體似乎屬於已知軟體廠商,請對方確認報告之應用程式 ID 是否為其所擁有。如果服務主體不正當,並偽造了已知應用程式名稱,您應執行鑑識分析​。

  • 如果服務主體正當,您應確定其所有者和角色,以評估該主體是否真的需要這些危險權限。如果服務主題為內部應用程式,請根據其功能,按照 Microsoft Graph API 說明文件中「同意及授權」一節 (此章節具體說明了每個 API 所需的最低特權) 所述的最低特權原則最佳做法​來減少權限。如果是第三方應用程式,請要求廠商減少所需權限或至少說明為什麼需要這些權限。
  • 在預設情況下,所有使用者都可以委派權限給任何應用程式,也就是說使用者能夠做出機密安全性決策。Microsoft Entra ID 提供了一些您可用於設定使用者同意的選項。啟用限制後,具備特定角色的 Microsoft Entra 管理員必須管理應用程式的同意情況並評估同意請求。另請參閱如何審查管理同意請求
  • 應用程式權限 一律需要管理員同意。培訓這些管理員辨別可疑應用程式和機密權限,尤其是全租用戶應用程式權限,以及來自特權或機密使用者的委派權限 。這必須為大型應用程式監管工作的一環。
  • 如果您認為某個權限不正當,請將其移除。如果您打算執行更深入的鑑識調查,Tenable 建議您先儲存證據。Microsoft Entra 入口網站有專門的功能來審查授予企業應用程式的權限

Microsoft 還發布了兩份關於如何執行應用程式同意授權調查以及如何偵測和修復非法同意授權的指南。

指標詳細資料

名稱: 影響租用戶的危險 API 權限

代碼名稱: DANGEROUS-API-PERMISSIONS-AFFECTING-THE-TENANT

嚴重性: High

MITRE 攻擊資訊:

技術: T1566, T1528, T1550.001