Back to Checks
Meeting chat for untrusted organizations is disabled
teams_meeting_external_chat_disabled
Service: teamsSeverity: high
OfficialBuilt-inVerified
Categories:trust-boundariese3
Resource Type:NotDefined
Microsoft 365 Teams meeting policy setting AllowExternalNonTrustedMeetingChat governs whether users can read or send chat messages in meetings hosted by untrusted organizations.
This assesses the org-wide default policy to confirm external meeting chat with non-trusted tenants is blocked.
Risk
Permitting chat in external meetings with untrusted tenants risks:
- Confidential data exposure via messages/files
- Malware delivery through links or media (e.g., GIF-based techniques)
- Social engineering enabling account compromise and lateral movement, degrading confidentiality and integrity
Run this check with Prowler
Run in Prowler CloudRun
prowler m365 --checks teams_meeting_external_chat_disabledRecommendation
Block chat for meetings hosted by non-trusted organizations and restrict collaboration to a vetted allowlist.
Adopt defense in depth: limit content sharing, enable link/file scanning, enforce DLP, and user training. Review external trust relationships regularly per least privilege.
Remediation
CLI
Set-CsTeamsMeetingPolicy -Identity Global -AllowExternalNonTrustedMeetingChat $FalseOther
1Sign in to the Teams admin center: https://admin.teams.microsoft.com
2Go to Meetings > Meeting policies
3Select Global (Org-wide default)
4Under Meeting engagement, set External meeting chat (untrusted organizations) 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_chat_disabled(Check):
"""Check if external meeting chat is disabled.
Attributes:
metadata: Metadata associated with the check (inherited from Check).
"""
def execute(self) -> List[CheckReportM365]:
"""Execute the check for external meeting chat settings.
This method checks if external meeting chat is disabled for untrusted organizations.
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 meeting chat is enabled for untrusted organizations."
)
if not global_meeting_policy.allow_external_non_trusted_meeting_chat:
report.status = "PASS"
report.status_extended = (
"External meeting chat is disabled for untrusted organizations."
)
findings.append(report)
return findings