Back to Checks
Prowlerprowler-provider-m365
Meetings global policy prevents external participants from giving or requesting control
teams_meeting_external_control_disabled
Service: teamsSeverity: high
OfficialBuilt-inVerified
Categories:identity-accesse3
Resource Type:NotDefined
Microsoft 365 Teams meeting policies govern whether external participants can give, be given, or request control during screen sharing via allowExternalParticipantGiveRequestControl.
Evaluation targets the org-wide default policy to confirm external control actions are blocked.
Risk
External control during sharing enables remote input on the presenter's device, impacting:
- Confidentiality: viewing/copying sensitive data
- Integrity: unauthorized changes, keystroke injection, malware launch
- Availability: session disruption or app termination
Run this check with Prowler
Run in Prowler CloudRun
prowler m365 --checks teams_meeting_external_control_disabledRecommendation
Apply least privilege: disable external give/request control by setting allowExternalParticipantGiveRequestControl=false in the org-wide policy.
If business-justified, restrict presenters to trusted users, limit sharing to SingleApplication, use lobby/presenter roles, and monitor for misuse.
Remediation
CLI
Set-CsTeamsMeetingPolicy -Identity Global -AllowExternalParticipantGiveRequestControl $falseOther
1Open Microsoft Teams admin center: https://admin.teams.microsoft.com
2Go to Meetings > Meeting policies
3Select Global (Org-wide default)
4In Content sharing, set "External participants can give or request control" to Off
5Click Save
Check Code
from typing import List
from prowler.lib.check.models import Check, CheckReportM365
from prowler.providers.m365.services.teams.teams_client import teams_client
class teams_meeting_external_control_disabled(Check):
"""Check if external participants can't give or request control in meetings.
Attributes:
metadata: Metadata associated with the check (inherited from Check).
"""
def execute(self) -> List[CheckReportM365]:
"""Execute the check for external participants' control permissions in meetings.
This method checks if external participants are prevented from giving or requesting control in meetings.
Returns:
List[CheckReportM365]: A list of reports containing the result of the check.
"""
findings = []
global_meeting_policy = teams_client.global_meeting_policy
if global_meeting_policy:
report = CheckReportM365(
metadata=self.metadata(),
resource=global_meeting_policy if global_meeting_policy else {},
resource_name="Teams Meetings Global (Org-wide default) Policy",
resource_id="teamsMeetingsGlobalPolicy",
)
report.status = "FAIL"
report.status_extended = (
"External participants can give or request control."
)
if (
not global_meeting_policy.allow_external_participant_give_request_control
):
report.status = "PASS"
report.status_extended = (
"External participants cannot give or request control."
)
findings.append(report)
return findings