CIS.M365.2.1.11: Ensure comprehensive attachment filtering is applied
| ID | CIS.M365.2.1.11 |
| Severity | Medium |
| Suite | CIS Microsoft 365 Foundations Benchmark |
| Product | Defender |
| Related products | Exchange Online |
| Feature | Anti-malware |
| Security area | Email and collaboration protection |
| Resource type | Tenant |
| User impact of fixing | Medium |
| Effort to fix | Medium |
| Benchmark | CIS Microsoft 365 Foundations Benchmark 7.0.0, 2.1.11 (L2, E3 Level 2) |
| Framework controls | cis-m365:2.1.11nist-800-53-r5:SI-3 Malicious Code Protection |
| MITRE ATT&CK | T1566.001, T1204.002 |
| Reads from | Exchange Online |
What this checks and how to fix it
Section titled “What this checks and how to fix it”2.1.11 (L2) Ensure comprehensive attachment filtering is applied
The Common Attachment Types Filter lets a user block known and custom malicious file types from being attached to emails. The policy provided by Microsoft covers 53 extensions, and an additional custom list of extensions can be defined. The list of 186 extensions provided in this recommendation is comprehensive but not exhaustive.
Rationale
Section titled “Rationale”Blocking known malicious file types can help prevent malware-infested files from infecting a host or performing other malicious attacks such as phishing and data extraction. Defining a comprehensive list of attachments can help protect against additional unknown and known threats. Many legacy file formats, binary files and compressed files have been used as delivery mechanisms for malicious software. Organizations can protect themselves from Business E-mail Compromise (BEC) by allow-listing only the file types relevant to their line of business and blocking all others.
Impact
Section titled “Impact”For file types that are business necessary users will need to use other organizationally approved methods to transfer blocked extension types between business partners.
Remediation action
Section titled “Remediation action”To implement a new policy containing a comprehensive list of extensions:
- Connect to Exchange Online using
Connect-ExchangeOnline. - Run the following script after editing InternalSenderAdminAddress:
# Create an attachment policy and associated rule. The rule is# intentionally disabled allowing the org to enable it when ready$Policy = @{ Name = "CIS L2 Attachment Policy" EnableFileFilter = $true ZapEnabled = $true EnableInternalSenderAdminNotifications = $true InternalSenderAdminAddress = 'admin@contoso.com' # Change this.}$L2Extensions = @( "7z", "a3x", "ace", "ade", "adp", "ani", "apk", "app", "appinstaller", "applescript", "application", "appref-ms", "appx", "appxbundle", "arj", "asd", "asx", "bas", "bat", "bgi", "bz2", "cab", "chm", "cmd", "com", "cpl", "crt", "cs", "csh", "daa", "dbf", "dcr", "deb", "desktopthemepackfile", "dex", "diagcab", "dif", "dir", "dll", "dmg", "doc", "docm", "dot", "dotm", "elf", "eml", "exe", "fxp", "gadget", "gz", "hlp", "hta", "htc", "htm", "html", "hwpx", "ics", "img", "inf", "ins", "iqy", "iso", "isp", "jar", "jnlp", "js", "jse", "kext", "ksh", "lha", "lib", "library", "library-ms", "lnk", "lzh", "macho", "mam", "mda", "mdb", "mde", "mdt", "mdw", "mdz", "mht", "mhtml", "mof", "msc", "msi", "msix", "msp", "msrcincident", "mst", "ocx", "odt", "ops", "oxps", "pcd", "pif", "plg", "pot", "potm", "ppa", "ppam", "ppkg", "pps", "ppsm", "ppt", "pptm", "prf", "prg", "ps1", "ps11", "ps11xml", "ps1xml", "ps2", "ps2xml", "psc1", "psc2", "pub", "py", "pyc", "pyo", "pyw", "pyz", "pyzw", "rar", "reg", "rev", "rtf", "scf", "scpt", "scr", "sct", "searchConnector-ms", "service", "settingcontent-ms", "sh", "shb", "shs", "shtm", "shtml", "sldm", "slk", "so", "spl", "stm", "svg", "swf", "sys", "tar", "theme", "themepack", "timer", "uif", "url", "uue", "vb", "vbe", "vbs", "vhd", "vhdx", "vxd", "wbk", "website", "wim", "wiz", "ws", "wsc", "wsf", "wsh", "xla", "xlam", "xlc", "xll", "xlm", "xls", "xlsb", "xlsm", "xlt", "xltm", "xlw", "xnk", "xps", "xsl", "xz", "z")# Create the policyNew-MalwareFilterPolicy @Policy -FileTypes $L2Extensions# Create the rule for all accepted domains$Rule = @{ Name = $Policy.Name Enabled = $false MalwareFilterPolicy = $Policy.Name RecipientDomainIs = (Get-AcceptedDomain).Name Priority = 0}New-MalwareFilterRule @Rule- When prepared enable the rule either through the UI or PowerShell.
Related links
Section titled “Related links”- Microsoft 365 Defender
- Get-MalwareFilterPolicy
- Configure anti-malware policies for cloud mailboxes
- File format reference for Word, Excel, and PowerPoint
- CIS Microsoft 365 Foundations Benchmark v7.0.0 - Page 121
Mito check, based on CIS Microsoft 365 Foundations Benchmark. Author: NZLostboy; contributors: Mynster9361. Open-source licences.
Open-source licences. CIS Benchmark material © Center for Internet Security, Inc.; CISA SCuBA baselines are public domain (CC0).
© 2026 Virtual Petals. Mito is a Virtual Petals service, hosted in Microsoft Azure UAE North.
