Microsoft 365 : courriels intra‑tenant en quarantaine « URL detonation reputation – High confidence phish / Malware » — causes, diagnostic et remédiations

Depuis janvier 2024, des e‑mails échangés au sein d’un même tenant Microsoft 365 sont parfois placés en quarantaine pour « URL detonation reputation – High confidence phish / Malware ». Ce guide opérationnel détaille les causes, le diagnostic et des remédiations efficaces sans affaiblir la sécurité.

Sommaire

Contexte et symptômes

Plusieurs organisations constatent, depuis la mi‑janvier 2024, la mise en quarantaine de courriels exclusivement internes (expéditeur et destinataire au sein du même tenant Microsoft 365). Le motif exposé dans la quarantaine et/ou dans les journaux de détection est : « URL detonation reputation – High confidence phish / Malware », alors que l’Explorateur de menaces n’affiche parfois aucune URL visible dans le message.

  • Les messages touchés sont souvent critiques (communications de direction, notifications applicatives, alertes métiers).
  • Les quarantaines se produisent de façon intermittente : une soumission peut être marquée « should have been blocked », puis « should not have been blocked » quelques heures plus tard.
  • Le tenant utilise fréquemment le profil Standard des Preset Security Policies, avec un filtre antimalware common attachments parfois trop large pour le contexte.

Pourquoi ces blocages surviennent

Réécriture et traçage d’URL

Des services de routage et de distribution d’e‑mails (p. ex. click‑tracking de plate‑formes d’envoi) réécrivent les liens sortants afin de mesurer les clics. La version réécrite est une URL de redirection : au moment de l’analyse (detonation), elle peut être inconnue ou de réputation faible et déclencher un verdict sévère, parfois classé « Malware », alors même que le contenu initial est légitime.

Niveau de protection et filtres

En profil Standard, Defender for Office 365 applique un équilibre entre sécurité et délivrabilité. Toutefois, certaines pièces jointes (extensions incluses dans le filtre common attachments) et des URLs jugées risquées par réputation dynamique peuvent suffire à provoquer une quarantaine. Passer en Strict augmente la sensibilité et, si le taux de faux positifs est déjà élevé, peut aggraver le symptôme.

Réputation dynamique et verdicts fluctuants

La réputation d’une URL évolue en minutes ou heures. Des soumissions identiques peuvent temporairement produire des verdicts différents (should have been blocked vs should not have been blocked) en fonction de signaux de télémétrie et de consolidations back‑end. Cette variabilité explique les faux positifs « aléatoires » perçus côté utilisateur.

Ce que révèlent réellement les en‑têtes

Lorsque l’Explorateur de menaces n’affiche pas d’URL, les en‑têtes SMTP contiennent souvent la clé de lecture. Les lignes suivantes sont particulièrement utiles :

  • X-MS-Exchange-Organization-URLDetonation-Results : indique le résultat de la détonation, l’horodatage et parfois un extrait de l’URL réécrite.
  • X-Forefront-Antispam-Report : expose des signaux (catégorisation, score SCL, etc.).
  • Authentication-Results : statut SPF, DKIM, DMARC (doivent idéalement être pass et alignés).
Authentication-Results: spf=pass (sender IP ...) smtp.mailfrom=exemple.tld;
 dkim=pass header.d=exemple.tld; dmarc=pass action=none header.from=exemple.tld
X-Forefront-Antispam-Report: ...; CAT:PHISH; SCL:9; ...
X-MS-Exchange-Organization-URLDetonation-Results: 1;1;2024-01-17T08:55:42.434Z;
 UrlDetonationVerdict=Malware;
 Url=https://u1234567.example-tracker.net/ls/click?upn=... 

Dans ce type de scénario, l’expéditeur interne est légitime, mais la présence (éventuelle ou injectée automatiquement) d’un lien réécrit vers un domaine de suivi déclenche la détonation.

Diagnostic pas à pas

  1. Récupérer les preuves : ID de message (Message‑ID et NetworkMessageId si disponible), en‑têtes complets, échantillon .eml, horodatage UTC du flux complet (soumission, quarantaine, éventuelle purge ZAP).
  2. Comparer avec Threat Explorer : repérer la catégorie (Malware vs Phish/High confidence), le DeliveryAction (Quarantine, Blocked, Deleted) et s’il existe une URL connue liée à la détection.
  3. Analyser l’URL réécrite : si l’URL n’apparaît pas dans l’Explorateur, la retrouver dans les en‑têtes. Vérifier si elle provient d’un service de click‑tracking.
  4. Vérifier les politiques : Preset Security Policies (Standard/Strict), Safe Links, Safe Attachments, filtre common attachments, politiques antispam et seuil Bulk.
  5. Soumettre le faux positif : dans le portail de sécurité, envoyer l’échantillon comme False positive et documenter l’impact sur le business.
  6. Ouvrir un ticket : joindre ID de message, en‑têtes, échantillon et preuve de la réécriture d’URL. Mentionner explicitement la demande d’allow‑listing global du domaine de réécriture si le flux est réellement sûr.

Checklist condensée

ÉtapeActionLivrable
PreuvesExporter en‑têtes et .emlFichier horodaté + ID de message
ExplorateurComparer catégories/ActionsCapture ou rapport
URLExtraire l’URL réécriteDomaine/chemin incriminé
PolitiquesRevue Standard/Strict + filtresPlan d’ajustement minimal
SoumissionEnvoyer le faux positifID de soumission
SupportOuvrir ticket et escaladerRéférence case + T2/T3

Mesures de remédiation recommandées

AxeMesure préconiséeRemarques
DiagnosticOuvrir un ticket Microsoft 365 en fournissant ID de message, en‑têtes complets et échantillonPermet d’impliquer le support T3 et d’analyser la réputation côté back‑end
Soumettre chaque faux positif via Submissions dans le portail de sécuritéAccélère l’apprentissage et la correction des verdicts
Réduction des faux positifsAjuster le filtre common attachments de l’antimalwareRetirer les extensions non pertinentes pour vos flux
Créer une Safe Attachments policy ciblée (listes internes, expéditeurs applicatifs de confiance)Limiter strictement aux flux maîtrisés
Maintenir le profil Standard tant que les faux positifs ne sont pas réduitsÉviter de passer prématurément à Strict
URLsTester des envois sans click‑tracking / réécriture d’URLPermet d’isoler la responsabilité du tracking
Si nécessaire, demander l’allow‑listing global (opéré par Microsoft) des domaines/chemins générésMesure généralement obtenue au stade T3, durable et sans affaiblir vos politiques
AntispamAjuster le seuil Bulk email threshold et/ou ajouter les expéditeurs applicatifs internes en Safe SendersN’affecte pas la détection de logiciels malveillants
SuiviMettre en place des requêtes Advanced Hunting pour surveiller les quarantaines anormalesRéagit avant que l’incident n’atteigne des VIP

Modèle de Safe Attachments ciblé

  1. Créer une nouvelle politique Safe Attachments dédiée à une DL interne (ex. « notifs‑app@… ») ou à des connecteurs applicatifs connus.
  2. Activer « Monitor » ou « Replace » plutôt que « Block » sur cette cible, le temps d’observer.
  3. Exiger SPF/DKIM/DMARC alignés pour ces expéditeurs, et interdire toute redirection externe non nécessaire.

Gérer la réécriture d’URL

  • Test A/B : désactiver temporairement le click‑tracking sur un échantillon d’envois internes et vérifier la délivrabilité.
  • Preuves : lier les quarantaines au domaine de tracking via l’en‑tête URLDetonation-Results et via les logs MDO.
  • Escalade : solliciter Microsoft pour un allow‑listing global des domaines/chemins de réécriture utilisés par votre plateforme d’envoi.

ZAP, Safe Links et risque de ré‑isolement

ZAP (Zero‑hour Auto Purge) peut retirer rétroactivement un message déjà délivré si un verdict ultérieur le classe malveillant. C’est pourquoi l’allow‑list global du domaine de réécriture, lorsqu’il est légitime, est la solution la plus robuste : elle évite que la montée en réputation « naturelle » n’entraîne des yoyos de verdicts jusqu’à stabilisation.

Surveillance proactive avec Advanced Hunting (KQL)

Les requêtes ci‑dessous ciblent les quarantaines « intra‑tenant » associées à des signaux de détonation d’URL. Remplacez contoso.com par votre domaine.

Quarantaines internes associées à des URL

let domain = "contoso.com";
EmailEvents
| where Timestamp > ago(14d)
| where SenderFromDomain == domain and RecipientDomain == domain
| where DeliveryAction in ("Quarantine","Blocked","Deleted")
| where ThreatTypes has_any ("Malware","Phish","HighConfidencePhish")
| project Timestamp, NetworkMessageId, InternetMessageId, SenderFromAddress,
         RecipientEmailAddress, Subject, DeliveryAction, ThreatTypes, DetectionMethods
| join kind=leftouter (
    EmailUrlInfo
    | project NetworkMessageId, Url, UrlDomain, UrlCategory, Action, Verdict
  ) on NetworkMessageId
| summarize Events=count(), AffectedRecipients=dcount(RecipientEmailAddress)
          by UrlDomain, Verdict, UrlCategory
| order by Events desc

Surveillance des VIP internes

let vip = dynamic(["ceo@contoso.com","cto@contoso.com","ops@contoso.com"]);
EmailEvents
| where Timestamp > ago(14d)
| where RecipientEmailAddress in (vip)
| where DeliveryAction in ("Quarantine","Blocked","Deleted")
| summarize Count=count() by RecipientEmailAddress, ThreatTypes, DeliveryAction
| order by Count desc

Détection de ZAP post‑livraison

// Suivre les messages livrés puis re‑quarantainés
EmailEvents
| where Timestamp > ago(14d)
| summarize AnyQuarantine = any(DeliveryAction == "Quarantine"),
            AnyDelivered  = any(DeliveryAction == "Delivered")
          by NetworkMessageId, InternetMessageId, Subject
| where AnyDelivered and AnyQuarantine

Astuce : créez des alertes programmées sur ces requêtes (seuils par heure/jour) et notifiez l’équipe messagerie via un canal d’astreinte.

Procédure d’escalade au support

Lors de l’ouverture du ticket, fournissez un dossier complet :

  • ID de message (InternetMessageId et NetworkMessageId), horodatage UTC, locataire impacté, boîtes aux lettres touchées.
  • En‑têtes complets avec la ligne X-MS-Exchange-Organization-URLDetonation-Results contenant l’URL réécrite.
  • Échantillon .eml ou export depuis la quarantaine, plus captures de l’Explorateur de menaces.
  • Description d’impact (ex. notifications applicatives non délivrées, messages de la direction bloqués).
  • Demande explicite d’allow‑listing global du domaine/chemin de réécriture utilisé par votre plateforme d’envoi, avec justification métier.

Modèle de texte pour accélérer l’analyse

Contexte : faux positifs « URL detonation reputation – High confidence phish / Malware »
Scope : intra-tenant (expéditeur et destinataire en @contoso.com)
Impact : notifications applicatives et messages VIP bloqués (quarantaines intermittentes)
Preuves : en-têtes + .eml + NetworkMessageId ci-joints
Hypothèse : réputation instable de l’URL de click-tracking {domaine/chemin}
Demande : examen Tier 3 et ajout en allow-list global du domaine/chemin si confirmé

Résultat obtenu

Après escalade et soumissions répétées de messages/URLs, le support Tier 3 a ajouté le domaine de réécriture à la global allow list. Les quarantaines inappropriées ont cessé immédiatement, confirmant que la réputation de l’URL réécrite était l’unique facteur déclencheur. L’organisation a ainsi rétabli la délivrabilité de ses courriels internes sans affaiblir ses politiques globales.

Informations complémentaires utiles

Cycle de vie d’une URL

Une URL inconnue peut passer de « Low reputation » à « Benign » en quelques heures sous l’effet de requêtes répétées et de la consolidation des signaux. L’allow‑list global supprime cette latence pour les domaines de tracking contrôlés et fiables.

Bonnes pratiques minimisant les faux positifs

  • Assurer l’alignement SPF, DKIM et DMARC sur tous les domaines applicatifs.
  • Conserver une journalisation externe (export de Message Trace) pour horodater et prouver l’acheminement.
  • Documenter dans le plan de réponse aux incidents la procédure de restauration d’un message bloqué nécessaire au business.
  • Limiter les safe lists aux flux strictement maîtrisés ; éviter les dérogations globales au niveau tenant lorsque non indispensables.

Pièges à éviter

  • Passer en profil Strict pour « forcer » la sécurité : vous amplifiez souvent les faux positifs tant que la cause racine (réputation d’URL réécrite) n’est pas traitée.
  • Créer des autorisations trop larges (domaine générique de tracking) sans restreindre par chemin ou contexte d’usage.
  • Ignorer ZAP : un message délivré peut être retiré a posteriori si la réputation se dégrade.

Indicateurs de succès et gouvernance

IndicateurObjectifFenêtre d’observation
Taux de quarantaines intra‑tenant< 0,1 % des messages internes7 à 14 jours après remédiation
Temps moyen de restauration< 15 min pour les VIPGlissant hebdomadaire
Faux positifs récurrents0 (après allow‑list global)Continu
Conformité SPF/DKIM/DMARC100 % des domaines applicatifsMensuel

Annexes utiles

Exemples de requêtes supplémentaires KQL

Top domaines d’URL réécrites déclenchant une action

EmailUrlInfo
| where Timestamp > ago(30d)
| where Action in ("Blocked","ClickedAndBlocked") or Verdict in ("Malware","Phish")
| summarize Events=count(), AffectedMsgs=dcount(NetworkMessageId) by UrlDomain, Verdict
| order by Events desc

Flux intra‑tenant impactés par pièce jointe

let domain = "contoso.com";
EmailEvents
| where Timestamp > ago(14d)
| where SenderFromDomain == domain and RecipientDomain == domain
| where DeliveryAction in ("Quarantine","Blocked","Deleted")
| join kind=leftouter (EmailAttachmentInfo | project NetworkMessageId, FileName, SHA256) on NetworkMessageId
| summarize Total=count(), DistinctFiles=dcount(SHA256) by FileName
| order by Total desc

PowerShell : extraire les messages en quarantaine

# Exchange Online PowerShell
Get-QuarantineMessage -StartReceivedDate (Get-Date).AddDays(-7) -EndReceivedDate (Get-Date) -PageSize 200 |
  Where-Object { $_.Reason -in @("Malware","HighConfidencePhish") } |
  Select-Object Received, Sender, Subject, Reason, PolicyType, Identity

Modèle de playbook de restauration

  1. Détection : alerte Advanced Hunting dès franchissement d’un seuil.
  2. Qualification : vérification en‑têtes + visibilité Threat Explorer.
  3. Décision : si flux critique et faux positif avéré, release via quarantaine et notification au propriétaire du processus.
  4. Prévention : soumission du faux positif + mise à jour des listes ou politiques ciblées.
  5. Post‑mortem : fiche d’incident, racine cause, action longue durée (allow‑list global si pertinent).

Conclusion

Les quarantaines intra‑tenant pour « URL detonation reputation – High confidence phish / Malware » sont le plus souvent la conséquence d’URL réécrites par des services de tracking dont la réputation est instable. En combinant preuves techniques (en‑têtes, KQL), soumissions répétées et escalade vers le support pour un allow‑listing global ciblé, on obtient une correction pérenne sans assouplir indûment les politiques de sécurité. Conservez une surveillance proactive et un playbook de restauration pour protéger la continuité métier.

Sommaire