M365EXO-015: SPF policy published for each domain (MS.EXO.2.2)
- Platform
- Entra ID / M365
- Category
- Advanced Threat Protection
- Severity
- Critical
- Zero Trust pillar
- Applications & Workloads (weight 2)
- Golden fixtures
- 3
- Branch coverage
- Observed: fixtures prove the verdicts they exercise
- Provenance
- baseline
What it checks
SCuBA MS.EXO.2.2 requires that an SPF policy be published for each domain, designating only approved addresses as senders and failing all others. SPF is published as a DNS TXT record rather than an Exchange Online setting. A missing SPF record, or one ending in +all or ?all, allows adversaries to spoof the FROM field of mail appearing to originate from the organization, enabling convincing phishing.
Recommended value
A single SPF TXT record per domain that lists all approved senders and ends with -all (hard fail)
Remediation
Publish a single SPF TXT record for each accepted domain that enumerates all approved sending sources and ends with -all to hard-fail unauthorized senders. Remove any duplicate SPF records, which violate RFC 7208 and cause validation to fail. Avoid +all and ?all, which neutralize SPF enforcement, and validate the record with a DNS lookup after publishing.
Fixture-proven verdicts
Every verdict below is proven by a golden fixture in the module's gating test suite. This table derives from the last green run; it cannot be edited by hand.
| Scenario | Expected verdict |
|---|---|
| clean | PASS |
| known-bad | FAIL |
| throttled | Not Assessed |
Framework mappings
- CISA SCuBA
- MS.EXO.2.2v1, MS.EXO.2.2v3
- NIST SP 800-53
- SI-8
- MITRE ATT&CK
- T1566.001