Control: 5.2.3.5 Ensure weak authentication methods are disabled
Description
Authentication methods support a wide variety of scenarios for signing in to Microsoft 365 resources. Some of these methods are inherently more secure than others but require more investment in time to get users enrolled and operational.
SMS and Voice Call rely on telephony carrier communication methods to deliver the authenticating factor.
The recommended state is to Disable these methods:
- SMS
- Voice Call
Remediation
To remediate using the UI:
- Navigate to
Microsoft Entra admin centerhttps://entra.microsoft.com/. - Click to expand
Entra ID>Authentication methods. - Select
Policies. - Inspect each method that is out of compliance and remediate:
- Click on the method to open it.
- Change the
Enabletoggle to the off position. - Click
Save.
Note: If the save button remains greyed out after toggling a method off, then first turn it back on and then change the position of the Target selection (all users or select groups). Turn the method off again and save. This was observed to be a bug in the UI at the time this document was published.
To remediate using PowerShell:
- Connect to Graph using
Connect-MgGraph -Scopes "Policy.ReadWrite.AuthenticationMethod". - Run the following to disable all three authentication methods:
$params = @(@{ Id = "Sms"; State = "disabled" },@{ Id = "Voice"; State = "disabled" })Update-MgPolicyAuthenticationMethodPolicy -AuthenticationMethodConfigurations $params
Default Value
- SMS : Disabled
- Voice Call : Disabled
Usage
Run the control in your terminal:
powerpipe control run microsoft365_compliance.control.cis_v600_5_2_3_5Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run microsoft365_compliance.control.cis_v600_5_2_3_5 --shareSQL
This control uses a named query:
with tenant_list as ( select distinct on (tenant_id) tenant_id, _ctx from azuread_user),authentication_method_policy as ( select tenant_id, count(*) as required_methods_enabled from azuread_authentication_method_policy, jsonb_array_elements(authentication_method_configurations) as cfg where cfg ->> 'id' in ('Sms', 'Voice', 'Email') and cfg ->> 'state' = 'enabled' group by tenant_id)select t.tenant_id as resource, case when required_methods_enabled = 3 then 'ok' else 'alarm' end as status, case when required_methods_enabled = 3 then t.tenant_id || ' has SMS, Voice call, and Email OTP authentication methods all enabled.' else t.tenant_id || ' does not have all of SMS, Voice call, and Email OTP authentication methods enabled.' end as reason , t.tenant_id as tenant_idfrom tenant_list as t left join authentication_method_policy as p on p.tenant_id = t.tenant_id;