CVE-2026-44963 : exécution de code à distance dans Veeam Backup & Replication via la désérialisation d'ObjRef .NET
HERMES THREAT SCORE & RISQUE DE L'INFRASTRUCTURE
Cible :Veeam Backup & Replication - VeeamThreatHunterSvc (.NET Remoting TCP 6175) Le score CVSS v3.1 évalue la vulnérabilité CVE-2026-44963 à 9.8 (Critique) et CVSS v4.0 à 9.3. Le Hermes Threat Score lui attribue 96 (CRITIQUE). Dans un domaine Windows Active Directory d'entreprise, la faille transforme n'importe quel compte utilisateur compromis non privilégié en une prise de contrôle totale avec les privilèges NT AUTHORITY\SYSTEM sur le serveur de sauvegarde. La compromission du plan de récupération constitue historiquement l'ultime étape précédant le déploiement massif d'un rançongiciel destructeur (Akira, Qilin, Fog, LockBit).
CVE-2026-44963: Remote Code Execution in Veeam Backup & Replication via .NET Remoting ObjRef DeserializationVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Veeam Backup & Replication documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Contexte & matrice des versions affectées
Section intitulée « 1. Contexte & matrice des versions affectées »Le tableau suivant présente une analyse rigoureuse du périmètre de vulnérabilité, des composants logiciels incriminés et des conditions d’exploitation.
| Paramètre | Spécification technique | Impact opérationnel |
|---|---|---|
| Identifiant CVE | CVE-2026-44963 | Référence internationale de suivi |
| Bulletin éditeur | Veeam KB4869 | Correctif officiel cumulatif |
| Service vulnérable | VeeamThreatHunterSvc.exe | Service Veeam Backup Threat Hunter |
| Couche réseau | Port 6175/TCP | Canal binaire .NET Remoting propriétaire |
| Composant en cause | Puits de désérialisation .NET Remoting | Liste blanche contournée par instanciation de proxy ObjRef |
| Privilèges obtenus | NT AUTHORITY\SYSTEM | Compromission totale de l’hôte de sauvegarde |
| Versions affectées | VBR 12.0 (Build 12.0.0.1420) jusqu’à 12.3.2.4465 | Installations par défaut jointes à un domaine |
| Version corrigée | VBR 12.3.2.4854 (KB4869) | Correction du contrôle de liste blanche et de la validation d’accès |
| Architecture immune | VBR v13 (Build 13.0.1.2067 et ultérieures) | Réécriture sous .NET 8 / Kestrel ; .NET Remoting supprimé |
| Prérequis de domaine | Machine hébergeant VBR jointe à un domaine AD | BUILTIN\Users englobe NT AUTHORITY\Authenticated Users |
L’illusion de l’authentification : pourquoi la faille est fonctionnellement non authentifiée
Section intitulée « L’illusion de l’authentification : pourquoi la faille est fonctionnellement non authentifiée »Bien que le bulletin de Veeam mentionne qu’une authentification soit requise, dans la topologie réelle des entreprises, la vulnérabilité doit être qualifiée d’exécution de code à distance quasi non authentifiée :
- Mécanisme d’expansion des jetons Active Directory : la routine d’autorisation du service évalue
new WindowsPrincipal(windowsIdentity).IsInRole(WindowsBuiltInRole.User). Dès lors qu’un serveur Windows est membre d’un domaine, le groupe localBUILTIN\Usersenglobe automatiquement le groupeNT AUTHORITY\Authenticated Users(tous les utilisateurs du domaine). - Surface compromise accessible : n’importe quel compte utilisateur ou machine (y compris un simple poste bureautique ou un terminal IoT rattaché au domaine) satisfait ce critère sans aucune élévation de privilèges préalable.
- Exploitation via les comptes de machines : un attaquant ayant obtenu un accès initial sur n’importe quel poste de travail du réseau peut utiliser le compte d’ordinateur local (
DOMAINE\POSTE$) pour négocier NTLM sur le port 6175, validant la barrière d’authentification sans avoir à dérober d’identifiants utilisateurs.
Le statut architectural : le plan de contrôle de récupération privilégié
Section intitulée « Le statut architectural : le plan de contrôle de récupération privilégié »Comme le souligne l’analyse technique de Penligent, un serveur de sauvegarde ne doit jamais être traité comme un serveur applicatif ordinaire. Il constitue le plan de contrôle de récupération privilégié (Privileged Recovery Control Plane) de l’organisation :
- Il conserve les identifiants d’administration des hyperviseurs (VMware vCenter, ESXi, Hyper-V, Nutanix).
- Il détient l’index complet et les clés de déchiffrement des sauvegardes de l’ensemble des données d’entreprise.
- Il pilote les baies de stockage, les dépôts d’objets cloud et les bibliothèques de bandes.
Historiquement, les groupes de rançongiciels (notamment Akira, Fog, Frag et LockBit) traquent méthodiquement les serveurs Veeam Backup & Replication. L’obtention d’un accès NT AUTHORITY\SYSTEM permet aux cybercriminels de purger les points de restauration, d’effacer les instantanés de disques virtuels et d’annihiler toute possibilité de reprise d’activité avant de lancer le chiffrement destructeur du réseau.
2. Décomposition technique approfondie : anatomie de la chaîne d’exploitation
Section intitulée « 2. Décomposition technique approfondie : anatomie de la chaîne d’exploitation »L’élégance et la criticité de l’exploitation découverte par Sina Kheirkhah et documentée par Liad Eliyahu (Miggo Security) reposent sur l’imbrication de quatre anomalies conceptuelles distinctes.
+-----------------------------------------------------------------------------------------+| MÉCANIQUE DE L'EXPLOITATION EN DEUX TEMPS (CVE-2026-44963) |+-----------------------------------------------------------------------------------------+
[Machine de l'attaquant] [Serveur Veeam Backup] IP : 192.168.1.100 IP : 192.168.1.10 Port : TCP 6175 (VeeamThreatHunterSvc) │ │ [1] │───── Connexion TCP & auth NTLM (simple compte de domaine) ────>│ (Validation : BUILTIN\Users satisfait) │ │ [2] │───── Paquet Remoting sérialisé contenant ObjRef ──────────────>│ Désérialise ObjRef (présent en liste blanche !) │ (Pointe vers tcp://192.168.1.100:9999/pwn) │ Instancie un TransparentProxy │ │ │ │ Le service exécute : │ │ EnsureAccessIsAllowed() │ │ Accède à la propriété msg.MethodBase │ │ [3] │<════ Rappel TCP sortant vers l'attaquant:9999 ═════════════════│ Le TransparentProxy déclenche l'appel RPC │ « Lecture de la propriété MethodBase sur l'objet distant »│ │ │ [4] │═════ Réponse malveillante : SortedSet + TypeConfuseDelegate ══>│ _serializingResponse == true : │ Le gadget exécute : Process.Start("cmd.exe", ...) │ liste blanche non appliquée ! │ │ │ │ [!] Prise de contrôle NT AUTHORITY\SYSTEMLe leurre de l’authentification : l’accès pour tout utilisateur de domaine
Section intitulée « Le leurre de l’authentification : l’accès pour tout utilisateur de domaine »À la réception d’un flux sur le port 6175, le service VeeamThreatHunterSvc extrait l’identité Windows négociée via SSPI (NTLM ou Kerberos) :
// Décompilation simplifiée de Veeam.Backup.ThreatHunter.Service.dllprivate bool ValidateClientIdentity(IIdentity identity){ WindowsIdentity windowsIdentity = identity as WindowsIdentity; if (windowsIdentity == null) return false;
WindowsPrincipal principal = new WindowsPrincipal(windowsIdentity); // VULNÉRABILITÉ : vérifie le rôle local BUILTIN\Users if (principal.IsInRole(WindowsBuiltInRole.User)) { return true; } return false;}Sur une machine autonome hors domaine, seuls les comptes locaux créés sur l’ordinateur franchiraient cette porte. Mais en entreprise, sur un serveur membre du domaine, cette condition est satisfaite par l’intégralité des identités du domaine Active Directory.
Le paradoxe de la liste blanche : la faille critique ObjRef
Section intitulée « Le paradoxe de la liste blanche : la faille critique ObjRef »Conscient des risques liés à BinaryFormatter, Veeam avait implémenté un puits de canal personnalisé (ChannelSink) vérifiant que chaque type instancié figure dans un fichier d’autorisation nommé whitelist.txt (contenant environ 4 200 entrées). Les gadgets classiques de désérialisation (TypeConfuseDelegate, ObjectDataProvider) y étaient proscrits.
Cependant, la liste blanche autorisait expressément :
System.Runtime.Remoting.ObjRefDans l’écosystème .NET Remoting, la classe ObjRef encapsule les coordonnées requises pour dialoguer avec un objet résidant dans un domaine d’application distant ou sur un serveur tiers. Lors de la désérialisation d’un ObjRef, le moteur CLR instancie automatiquement un TransparentProxy.
De plus, en injectant des flux bruts sérialisés directement dans le récepteur de transport, l’attaquant neutralise le contrôle de sécurité par défaut TypeFilterLevel.Low, car le drapeau interne du runtime .NET IsRemoting reste à faux lors du décodage direct du flux binaire.
Le déclencheur inverse : quand le serveur interroge l’attaquant
Section intitulée « Le déclencheur inverse : quand le serveur interroge l’attaquant »Une fois les paramètres de la requête désérialisés, le service Veeam procède au contrôle de conformité des méthodes appelées via sa routine EnsureAccessIsAllowed(...) :
public void EnsureAccessIsAllowed(IMethodCallMessage msg){ // Accès aux métadonnées de la méthode distante MethodBase method = msg.MethodBase; string methodName = method.Name;
// Évaluation des autorisations...}C’est ici que survient le basculement fondamental : l’objet référencé par msg n’est pas un objet local mais le TransparentProxy pointant vers l’adresse IP de l’attaquant (tcp://192.168.1.100:9999/Service).
Lorsque le serveur Veeam lit la propriété msg.MethodBase, le runtime CLR intercepte la demande et émet un appel TCP sortant vers le serveur de l’attaquant afin de résoudre la valeur de la propriété !
Le contournement de la réponse sérialisée & exécution de code SYSTEM
Section intitulée « Le contournement de la réponse sérialisée & exécution de code SYSTEM »Sur le récepteur TCP de l’attaquant, la requête d’interrogation du serveur Veeam est réceptionnée. L’attaquant forge alors sa réponse.
Au sein du puits de sécurité personnalisé de Veeam, la vérification de la liste blanche était conditionnée par un indicateur de direction :
if (!_serializingResponse){ // Filtrage strict de la liste blanche sur les requêtes entrantes EnforceTypeWhitelist(deserializedObject);}else{ // Les réponses sont considérées comme internes et de confiance PassThrough();}Puisque le serveur Veeam agit ici en tant que client attendant la réponse à son appel sortant, le paquet renvoyé par l’attaquant est traité comme une réponse (_serializingResponse == true). La vérification de la liste blanche est purement et simplement ignorée !
L’attaquant renvoie une chaîne de gadgets .NET classique :
- Un conteneur
SortedSet<string>associé à un comparateur sur mesure. - Un objet
ComparisonComparer<string>englobant un délégué multicast. - Un
TypeConfuseDelegateciblantSystem.Diagnostics.Process.Start("cmd.exe", ...).
Le serveur Veeam désérialise la réponse sans aucun filtrage. La commande est exécutée instantanément par VeeamThreatHunterSvc.exe sous le contexte NT AUTHORITY\SYSTEM.
3. Schéma séquentiel & flux d’attaque complet
Section intitulée « 3. Schéma séquentiel & flux d’attaque complet »- Reconnaissance réseau : l’attaquant identifie le serveur Veeam Backup & Replication exposant le port TCP 6175.
- Négociation NTLM / Kerberos initiale : l’attaquant initie le canal .NET Remoting en présentant les identifiants d’un compte de domaine ordinaire ou d’un compte de machine compromise.
- Injection du paquet ObjRef : l’attaquant transmet une charge binaire contenant un
System.Runtime.Remoting.ObjRefconfiguré pour pointer vers son écouteur distant (tcp://attaquant:9999/Service). - Instanciation du proxy & appel sortant : le service Veeam désérialise l’
ObjReflégitime et crée le proxy. Lors du contrôle d’accès, la lecture demsg.MethodBaseforce le serveur à ouvrir une connexion TCP sortante vers l’attaquant. - Livraison de la charge utile de retour : l’écouteur de l’attaquant répond en envoyant la chaîne de gadgets
SortedSet/TypeConfuseDelegate. - Exécution du code avec les privilèges SYSTEM : la réponse traverse le puits de désérialisation sans vérification de liste blanche.
Process.Startdémarre un interpréteur de commandes ou un implant sous le compteNT AUTHORITY\SYSTEM.
4. Gestion de l’exposition & découverte d’actifs avec runZero
Section intitulée « 4. Gestion de l’exposition & découverte d’actifs avec runZero »Comme le documentent les travaux de recherche de runZero sur la gestion de l’exposition, une organisation ne peut protéger que les actifs qu’elle a préalablement recensés. Dans les parcs informatiques d’entreprise, des serveurs de test, des passerelles de réplication secondaires ou des proxys oubliés sur des sous-réseaux généraux échappent fréquemment à la vigilance des équipes de sécurité.
4.1 requêtes d’inventaire logiciel runZero
Section intitulée « 4.1 requêtes d’inventaire logiciel runZero »Pour cartographier instantanément les instances de Veeam Backup & Replication déployées :
# Requête 1 : découverte globale de toutes les instances Veeam Backup & Replicationvendor:=Veeam AND (product:="Backup & Replication" OR product:="Veeam Backup & Replication")
# Requête 2 : ciblage précis des versions vulnérables (branche v12 antérieure à 12.3.2.4854)vendor:=Veeam AND product:="Veeam Backup & Replication" AND (version:>0 AND version:>=12 AND version:<12.3.2.4854)4.2 découverte de services réseau & empreintes de ports
Section intitulée « 4.2 découverte de services réseau & empreintes de ports »Les analystes peuvent localiser les services Veeam non répertoriés à l’aide de filtres de services réseau :
# Détection de l'interface d'administration Veeam Service Provider Console (VSPC)has:"html.title" html.title:"Veeam Service Provider Console"
# Détection de l'API Veeam Distribution Servicetcp_port:9380
# Détection du canal binaire Veeam Threat Hunter Servicetcp_port:61755. Boîte à outils d’audit PowerShell & vérification locale
Section intitulée « 5. Boîte à outils d’audit PowerShell & vérification locale »Afin de permettre aux analystes et administrateurs d’évaluer directement l’état de vulnérabilité d’un hôte Windows sans agent tiers, les scripts opérationnels suivants (issus de la méthodologie Penligent) fournissent un diagnostic immédiat :
# 1. Extraction de la version exacte installée depuis le registre WindowsGet-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "*Veeam Backup*" } | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
# 2. Vérification de l'appartenance au domaine Active Directory (condition d'exploitabilité)(Get-CimInstance Win32_ComputerSystem) | Select-Object Name, Domain, PartOfDomain | Format-List
# 3. État des services Windows associés à VeeamGet-Service | Where-Object { $_.DisplayName -like "*Veeam*" -or $_.Name -like "*Veeam*" } | Sort-Object Status, Name | Select-Object Status, Name, DisplayName, StartType | Format-Table -AutoSize# Cartographie des ports TCP en écoute et processus propriétairesGet-NetTCPConnection -State Listen | ForEach-Object { $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue [PSCustomObject]@{ LocalAddress = $_.LocalAddress LocalPort = $_.LocalPort ProcessId = $_.OwningProcess ProcessName = $proc.ProcessName } } | Where-Object { $_.LocalPort -in 6175, 9380, 9401, 10006 } | Sort-Object LocalPort | Format-Table -AutoSize
# Examen des règles de pare-feu actives ciblant les composants VeeamGet-NetFirewallRule -Enabled True -Direction Inbound | Where-Object { $_.DisplayName -match "Veeam|Backup|Replication|6175" } | Select-Object DisplayName, Profile, Action, Enabled | Format-Table -AutoSize# Validation de l'élévation vers la version 12.3.2.4854 ou ultérieure$vbr = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "Veeam Backup & Replication Server" }
if ($vbr.DisplayVersion -ge "12.3.2.4854") { Write-Host "[+] CONFORME : Veeam Backup & Replication est corrigé (version : $($vbr.DisplayVersion))" -ForegroundColor Green} else { Write-Host "[!] ALERTE CRITIQUE : version vulnérable détectée ($($vbr.DisplayVersion)) !" -ForegroundColor Red}6. Indicateurs de compromission (IOCs) & matrice comportementale SOC
Section intitulée « 6. Indicateurs de compromission (IOCs) & matrice comportementale SOC »Dans le cadre d’une analyse post-mortem ou d’une recherche proactive de menaces, les analystes de sécurité doivent investiguer les marqueurs suivants.
6.1 télémétrie réseau (flux inhabituels)
Section intitulée « 6.1 télémétrie réseau (flux inhabituels) »[Flux entrant anormal]IP source : poste bureautique ou serveur non référencé comme console VeeamIP destination : serveur Veeam Backup & ReplicationPort destination : port 6175/TCPProtocole : canal .NET Remoting (canal TCP binaire avec négociation NTLM)
[Rappel inverse sortant (Le déclencheur inverse)]IP source : serveur Veeam Backup & ReplicationPort source : port éphémère élevé (ex. 49152 - 65535)IP destination : hôte interne compromis ou adresse IP externePort destination : port arbitraire d'écoute de l'attaquant (ex. 1337, 4444, 9999)Signature : trafic binaire de rappel .NET Remoting6.2 artefacts de processus & arborescence anormale
Section intitulée « 6.2 artefacts de processus & arborescence anormale »Dans son fonctionnement nominal, VeeamThreatHunterSvc.exe ne lance jamais d’interpréteur de commandes, d’outils d’administration en ligne de commande ou de moteurs de script :
Processus parent : C:\Program Files\Veeam\Backup and Replication\Backup\VeeamThreatHunterSvc.exeUtilisateur : NT AUTHORITY\SYSTEM
Processus enfants anormaux (ALERTE CRITIQUE) : - cmd.exe - powershell.exe / pwsh.exe - wscript.exe / cscript.exe - mshta.exe - certutil.exe - bitsadmin.exe / curl.exe - rundll32.exe / regsvr32.exe - whoami.exe / net.exe / net1.exe / nltest.exe6.3 journaux d’événements Windows (event logs)
Section intitulée « 6.3 journaux d’événements Windows (event logs) »- Event ID 4624 (ouverture de session réussie) :
- Type d’ouverture de session :
3(Réseau / Network Logon) - Processus de connexion :
NtLmSspouKerberos - Nom du compte cible : compte de domaine non privilégié utilisé pour négocier la connexion sur le port 6175 immédiatement avant l’apparition d’un sous-processus suspect.
- Type d’ouverture de session :
- Event ID 4688 (création de processus) :
- Processus créateur :
*\VeeamThreatHunterSvc.exe - Nouveau processus : tout binaire non lié à Veeam.
- Élévation : jeton
TokenElevationTypeDefault (1)avec l’identifiantS-1-5-18(SYSTEM).
- Processus créateur :
- Event ID 1000 / 1026 (erreurs du runtime .NET) :
- En cas de tentative d’exploitation mal formulée ou de charge corrompue, le journal d’application Windows enregistre des exceptions non gérées
System.Runtime.Remoting.RemotingExceptionouSystem.Runtime.Serialization.SerializationExceptionliées àVeeamThreatHunterSvc.exe.
- En cas de tentative d’exploitation mal formulée ou de charge corrompue, le journal d’application Windows enregistre des exceptions non gérées
6.4 matrice comportementale de détection SOC
Section intitulée « 6.4 matrice comportementale de détection SOC »| Question d’investigation | Portée opérationnelle | Signaux & filtres de télémétrie |
|---|---|---|
| Connexion inattendue d’un utilisateur de domaine sur VBR ? | L’exploitation requiert une identité authentifiée ordinaire | Event ID 4624 (Type 3) depuis un compte non-administrateur |
| Processus enfant anormal issu d’un service Veeam ? | L’exécution de code engendre des interpréteurs ou LOLBins | Event ID 4688, Sysmon Event ID 1 (parent *Veeam* -> enfant cmd.exe, powershell.exe) |
| Connexion réseau sortante inhabituelle depuis VBR ? | Rappel vers l’écouteur de l’attaquant / phase de rebond | Sysmon Event ID 3, pare-feu (ports sortants vers adresses non sécurisées) |
| Accès des comptes de service Veeam hors des fenêtres de sauvegarde ? | Réutilisation d’identifiants de sauvegarde volés | Requêtes Kerberos TGS hors plages de production |
| Altération imprévue des tâches OU rétentions de sauvegarde ? | Préparation au déploiement d’un rançongiciel | Journaux d’audit Veeam, Event ID 4663 sur les dépôts de stockage |
7. Arsenal de détection : règles Sigma, YARA & requêtes de chasse
Section intitulée « 7. Arsenal de détection : règles Sigma, YARA & requêtes de chasse »Déployez les artefacts de détection suivants au sein de vos plateformes SIEM, EDR et sondes de surveillance réseau :
title: Processus enfant anormal engendré par Veeam Threat Hunter Serviceid: 5c89a124-7b43-4c91-912a-cve202644963frstatus: productiondescription: détecte la création de processus suspects par VeeamThreatHunterSvc.exe, caractéristique de l'exploitation de la CVE-2026-44963.references: - https://www.veeam.com/kb4869 - https://www.cert.ssi.gouv.fr/avis/CERTFR-2026-AVI-0712/author: Équipe Hermes Threat Intelligencedate: 2026-06-11logsource: category: process_creation product: windowsdetection: selection: ParentImage|endswith: '\VeeamThreatHunterSvc.exe' Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\pwsh.exe' - '\wscript.exe' - '\cscript.exe' - '\rundll32.exe' - '\regsvr32.exe' - '\mshta.exe' - '\certutil.exe' - '\whoami.exe' - '\net.exe' - '\net1.exe' condition: selectionfields: - ComputerName - User - ParentImage - Image - CommandLinefalsepositives: - Aucun faux positif connu dans un déploiement standard.level: criticaltags: - attack.execution - attack.t1059 - attack.lateral_movement - attack.t1210 - cve.2026_44963title: Processus enfant anormal engendré par un composant Veeamid: 8b4b0f64-9b2f-4f2a-a0d8-veeam-rce-hunt-frstatus: productiondescription: détecte les interpréteurs de commandes et LOLBins exécutés par tout service Veeam sur un serveur de sauvegarde.references: - https://www.penligent.ai/hackinglabs/cve-2026-44963/author: Équipe Hermes Threat Intelligencedate: 2026-06-11logsource: category: process_creation product: windowsdetection: selection_parent: ParentImage|contains: '\Veeam' selection_child: Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\pwsh.exe' - '\wscript.exe' - '\cscript.exe' - '\rundll32.exe' - '\regsvr32.exe' - '\certutil.exe' - '\bitsadmin.exe' condition: selection_parent and selection_childfields: - ComputerName - User - ParentImage - Image - CommandLinefalsepositives: - Scripts de support technique Veeam (très rares).level: hightags: - attack.execution - attack.t1059 - cve.2026_44963title: Connexion réseau sortante inhabituelle émise par Veeam Threat Hunterid: 6d90b235-8c54-5da2-a23b-cve202644963netfrstatus: productiondescription: détecte une tentative de connexion TCP sortante initiée par VeeamThreatHunterSvc.exe, signalant le rappel de l'ObjRef distant.references: - https://www.veeam.com/kb4869author: Équipe Hermes Threat Intelligencedate: 2026-06-11logsource: category: network_connection product: windowsdetection: selection: Image|endswith: '\VeeamThreatHunterSvc.exe' Initiated: 'true' filter_local: DestinationIp: - '127.0.0.1' - '::1' condition: selection and not filter_localfields: - ComputerName - Image - SourceIp - DestinationIp - DestinationPortlevel: hightags: - attack.command_and_control - attack.t1071 - cve.2026_44963rule Exploit_CVE_2026_44963_Veeam_Remoting_ObjRef_FR { meta: description = "Détecte les trames .NET Remoting exploitant la CVE-2026-44963 via le rappel ObjRef et gadgets de sérialisation" author = "Hermes Codex Threat Intelligence" date = "2026-06-11" reference = "https://www.cert.ssi.gouv.fr/avis/CERTFR-2026-AVI-0712/" severity = "Critical" strings: // En-tête binaire .NET Remoting TCP $remoting_magic = { 2E 4E 45 54 00 00 00 00 }
// Identifiant du service cible $service_target = "VeeamThreatHunter" ascii wide nocase
// Classe ObjRef présente dans la liste blanche $objref_class = "System.Runtime.Remoting.ObjRef" ascii
// Marqueurs de gadgets dans le flux de retour $gadget_tc = "TypeConfuseDelegate" ascii $gadget_sorted = "System.Collections.Generic.SortedSet" ascii $gadget_proc = "System.Diagnostics.Process" ascii condition: ($remoting_magic and $service_target and $objref_class) or ($objref_class and ($gadget_tc or ($gadget_sorted and $gadget_proc)))}// Requête 1 : détection des processus anormaux issus de VeeamThreatHunterSvcDeviceProcessEvents| where InitiatingProcessFileName =~ "VeeamThreatHunterSvc.exe"| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "whoami.exe", "net.exe", "net1.exe", "certutil.exe", "rundll32.exe")| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, AccountDomain| order by Timestamp desc
// Requête 2 : connexions réseau anormales émises par le serveur de sauvegardeDeviceNetworkEvents| where DeviceName has_any ("veeam", "backup", "vbr")| where RemoteUrl !endswith ".microsoft.com"| where RemoteIPType == "Public" or RemotePort in (22, 80, 443, 445, 3389, 5985, 5986, 9999, 1337)| summarize Count=count(), FirstSeen=min(Timestamp), LastSeen=max(Timestamp), RemotePorts=make_set(RemotePort), RemoteIPs=make_set(RemoteIP) by DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine| order by LastSeen desc# Requête 1 : création de sous-processus anormaux par VeeamThreatHunterSvcindex=wineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1parent_image="*\\VeeamThreatHunterSvc.exe"image IN ("*\\cmd.exe", "*\\powershell.exe", "*\\wscript.exe", "*\\cscript.exe", "*\\rundll32.exe", "*\\whoami.exe", "*\\net.exe")| table _time, host, user, parent_image, image, process_command_line
# Requête 2 : connexions réseau sortantes inhabituellesindex=wineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=3image="*\\VeeamThreatHunterSvc.exe" NOT (dest_ip IN ("127.0.0.1", "::1"))| table _time, host, image, dest_ip, dest_port, protocol8. Stratégies de remédiation & plan de durcissement en 10 étapes
Section intitulée « 8. Stratégies de remédiation & plan de durcissement en 10 étapes »Les administrateurs d’infrastructures de sauvegarde doivent appliquer sans délai les mesures de protection suivantes.
8.1 priorité 1 : déploiement du correctif officiel (KB4869)
Section intitulée « 8.1 priorité 1 : déploiement du correctif officiel (KB4869) »Mettre à niveau Veeam Backup & Replication vers la version 12.3.2.4854 :
- Téléchargement officiel : disponible via le bulletin Veeam KB4869.
- Modifications apportées par le correctif : la mise à jour retire la classe
System.Runtime.Remoting.ObjRefdewhitelist.txt, renforce la validation bidirectionnelle des puits de sérialisation (sur les requêtes et les réponses) et exige des privilèges d’administration locale stricte pour interagir avec le service.
8.2 priorité 2 : blocage réseau immédiat du port TCP 6175
Section intitulée « 8.2 priorité 2 : blocage réseau immédiat du port TCP 6175 »En cas d’impossibilité d’appliquer le correctif dans l’immédiat, isoler le port incriminé au niveau du pare-feu local du serveur de sauvegarde :
# Règle PowerShell de blocage d'urgence sur le port 6175New-NetFirewallRule -DisplayName "Hermes-Mitigation-Blocage-Veeam-Port-6175" ` -Direction Inbound ` -LocalPort 6175 ` -Protocol TCP ` -Action Block ` -RemoteAddress Any ` -Profile Any ` -Description "Atténuation d'urgence CVE-2026-44963 : bloque l'accès externe à VeeamThreatHunterSvc"Précision opérationnelle : le port TCP 6175 est dédié aux communications internes du module de recherche de menaces sur le serveur VBR local. Le filtrage de ce port n’affecte pas l’exécution des travaux de sauvegarde programmés, les sauvegardes sur bande ou les mécanismes de réplication de machines virtuelles.
8.3 priorité 3 : désactivation temporaire du service
Section intitulée « 8.3 priorité 3 : désactivation temporaire du service »Si le pare-feu ne peut être configuré, le service incriminé peut être arrêté et désactivé sans interrompre les fonctions vitales de sauvegarde et de restauration :
Stop-Service -Name "VeeamThreatHunterSvc" -ForceSet-Service -Name "VeeamThreatHunterSvc" -StartupType Disabled8.4 priorité 4 : plan de durcissement architectural en 10 étapes
Section intitulée « 8.4 priorité 4 : plan de durcissement architectural en 10 étapes »| Étape | Mesure de sécurité | Objectif opérationnel |
|---|---|---|
| 1 | Mise à niveau vers la build 12.3.2.4854+ | Élimine la vulnérabilité dans le canal .NET Remoting historique |
| 2 | Recensement des hôtes VBR joints au domaine | Cartographie tous les serveurs exposant la condition BUILTIN\Users |
| 3 | Segmentation réseau & ACLs pare-feu | Restreint le port 6175 et les flux d’administration aux seuls bastions dédiés |
| 4 | Suppression des accès depuis les VLANs utilisateurs | Empêche tout terminal bureautique compromis d’atteindre le serveur de sauvegarde |
| 5 | Sortie du domaine Active Directory de production | Déploie VBR dans un workgroup isolé ou une forêt dédiée d’administration (Tier-0) |
| 6 | Activation du MFA pour les administrateurs | Neutralise l’impact d’identifiants dérobés sur la console d’administration |
| 7 | Hygiène des rôles & principe du moindre privilège | Traite les comptes d’opérateurs de sauvegarde comme des identités hautement sensibles |
| 8 | Surveillance EDR de niveau tier-0 | Déploie des agents EDR et achemine l’intégralité des journaux vers le SIEM |
| 9 | Tests systématiques de restauration | Valide l’intégrité des flux de restauration en bac à sable après correctif |
| 10 | Immuabilité stricte des dépôts de sauvegarde | Configure des dépôts Linux durcis (chattr +i) ou du stockage S3 en mode Compliance |
9. Corrélation avec le panorama historique des vulnérabilités Veeam
Section intitulée « 9. Corrélation avec le panorama historique des vulnérabilités Veeam »La vulnérabilité CVE-2026-44963 s’inscrit dans une suite historique de failles ciblant le plan de sauvegarde :
| CVE | Année | Typologie & composant affecté | Lien opérationnel avec la CVE-2026-44963 |
|---|---|---|---|
| CVE-2023-27532 | 2023 | Fuite d’identifiants non authentifiée (Veeam Backup Service) | A démontré qu’un accès réseau initial sur le port de sauvegarde permet de voler des secrets AD |
| CVE-2024-40711 | 2024 | RCE critique pré-authentification par désérialisation | Armée activement par des rançongiciels (Akira, Fog, Frag) pour détruire les sauvegardes |
| CVE-2025-23120 | 2025 | RCE authentifiée utilisateur de domaine sur VBR | A mis en lumière le même défaut conceptuel d’autorisation basé sur l’appartenance au domaine |
| CVE-2025-48983 | 2025 | RCE critique dans le service Veeam Mount | A prouvé la fragilité des délimitations de services sur les hôtes joints à un domaine |
| CVE-2025-48984 | 2025 | RCE critique sur les serveurs de sauvegarde joints au domaine | A confirmé la nécessité impérieuse de sortir les serveurs de sauvegarde du domaine de production |
| CVE-2026-21666 | 2026 | RCE authentifiée utilisateur de domaine sur VBR | Faille conjointe sur VBR 12.3.x / 13.0.x permettant la prise de contrôle totale depuis un simple compte |
| CVE-2026-21668 | 2026 | Manipulation arbitraire de fichiers sur les dépôts | Permettait à un utilisateur non privilégié d’écraser et corrompre les points de restauration |
| CVE-2026-44963 | 2026 | RCE via rappel de désérialisation d’ObjRef .NET Remoting | La vulnérabilité pivot : prise de contrôle SYSTEM via le rappel inverse d’une classe en liste blanche |