01 — Contexte : CVE-2026-26151 et Patch Tuesday avril 2026
Depuis le 14 avril 2026, de nombreux administrateurs système ont été confrontés à un afflux de signalements : à l'ouverture de leurs fichiers .rdp habituels, une fenêtre d'avertissement apparaît avec le message "Serveur de publication inconnu".
Ce comportement n'est pas un bug. Il est intentionnel et résulte du Patch Tuesday d'avril 2026 de Microsoft, qui introduit de nouveaux mécanismes de protection contre le phishing RDP via la vulnérabilité CVE-2026-26151.
⚠ Point crucial
Ce changement de comportement se situe côté client (postes Windows 10/11), et non côté serveur. Tous les serveurs RDS sont concernés quelle que soit leur version (2016, 2019, 2022, 2025), dès lors que les clients ont installé la mise à jour.
Les mises à jour concernées
Système
Mise à jour
Build
Windows 11 25H2 / 24H2
KB5083769
26200.8246 / 26100.8246
Windows 11 23H2
KB5082052
—
Windows 10
KB5082200
—
Pourquoi Microsoft a fait ce changement
CVE-2026-26151 est une vulnérabilité de spoofing dans Remote Desktop, identifiée par le National Cyber Security Centre (NCSC) du Royaume-Uni, avec un score CVSS v3 de 7.1 (Important). Microsoft l'a classée comme "susceptible d'être exploitée".
Le vecteur d'attaque est simple : des acteurs malveillants envoient des fichiers .rdp piégés par email. Lorsqu'une victime ouvre le fichier, son poste se connecte silencieusement à un serveur contrôlé par l'attaquant, en partageant potentiellement lecteurs locaux, presse-papier et identifiants.
Premier avertissement affiché lors de la première ouverture d'un fichier .rdp après la mise à jour d'avril 2026 — Source : IT-Connect
02 — Les deux types d'avertissements
Fichier .rdp non signé — bannière rouge
Lorsqu'un fichier .rdp n'est pas signé numériquement, Windows affiche une bannière rouge avec le libellé "Connexion distante inconnue" et indique "Serveur de publication inconnu" dans le champ Éditeur. La case "Ne plus me demander" ne fonctionne pas dans ce cas.
Nouvelle boîte de dialogue de connexion RDP avec un fichier non signé — bannière rouge "Connexion distante inconnue" — Source : IT-Connect
Fichier .rdp signé — bannière orange
Lorsqu'un fichier .rdp est signé numériquement, la bannière devient orange avec le libellé "Vérifier l'éditeur de cette connexion à distance". Le nom de l'éditeur est affiché et cliquable. Une case "Mémoriser mes choix pour les connexions à distance à partir de cet éditeur" devient disponible.
Boîte de dialogue avec fichier .rdp signé — l'éditeur est vérifié et l'option "Mémoriser mes choix" est disponible — Source : IT-Connect
ℹ Solution complète
Pour supprimer définitivement l'avertissement : (1) un certificat valide côté serveur, (2) des fichiers .rdp signés numériquement, (3) le certificat importé dans les autorités de confiance des postes clients, et optionnellement (4) la clé de registre pour désactiver la boîte de dialogue.
03 — Étape 1 — Vérifier le certificat RDP du serveur
Sur le serveur (PowerShell en admin) :
PowerShell — Serveur
# Voir le hash du certificat lié au rôle RDP
Get-WmiObject -Class "Win32_TSGeneralSetting" `
-Namespace root\cimv2\terminalservices | Select-Object SSLCertificateSHA1Hash
PowerShell — Serveur
# Chercher le certificat dans tous les stores
$hash = (Get-WmiObject -Class "Win32_TSGeneralSetting" `
-Namespace root\cimv2\terminalservices).SSLCertificateSHA1Hash
Get-ChildItem -Path Cert:\LocalMachine\* -Recurse -ErrorAction SilentlyContinue | Where-Object {
$_.Thumbprint -eq $hash
} | Select-Object PSPath, Subject, Issuer, NotBefore, NotAfter
Points à vérifier dans le résultat :
Le certificat est-il encore valide (NotAfter) ?
Le Subject (CN) correspond-il au nom ou à l'IP utilisée dans le fichier .rdp ?
Est-il auto-signé (Issuer = Subject) ?
⚠ Attention
Si la connexion se fait par adresse IP mais que le certificat est émis pour un nom DNS, le certificat ne correspondra jamais — l'avertissement sera permanent. Il faut inclure l'IP dans le SAN du certificat ou utiliser le FQDN dans le fichier .rdp.
04 — Étape 2 — Créer un nouveau certificat adapté
✓ Recommandation
Créer un certificat avec une durée de 10 ans pour éviter de refaire l'opération et de redéployer sur tous les postes régulièrement.
Identifier la valeur full address dans le fichier .rdp
Ouvrir le fichier .rdp avec un éditeur de texte et repérer :
Le paramètre -IPAddress n'est pas disponible sur Windows Server 2019. Pour inclure une IP dans le SAN, la passer comme valeur dans -DnsName — cela fonctionne avec le client RDP Windows.
Il n'est pas nécessaire de redémarrer le service TermService. Le nouveau certificat est pris en compte pour les nouvelles connexions sans interrompre les sessions actives en cours.
Ce fichier .cer (clé publique uniquement, sans clé privée) devra être distribué aux postes clients pour qu'ils fassent confiance au certificat du serveur.
07 — Étape 5 — Préparer et signer les fichiers .rdp
⚠ Point critique
La ligne full address:s: est obligatoire dans le fichier pour que rdpsign.exe fonctionne. Sans elle, le fichier sera considéré comme corrompu après signature. La ligne alternate full address seule ne suffit pas.
Structure minimale recommandée
Fichier connexion-mono.rdp
full address:s:serveur.mondomaine.fr:3389
screen mode id:i:2
use multimon:i:0
dynamic resolution:i:1
session bpp:i:32
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:7
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
autoreconnection enabled:i:1
authentication level:i:0
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
redirectprinters:i:1
redirectclipboard:i:1
redirectcomports:i:0
redirectsmartcards:i:0
redirectposdevices:i:0
audiomode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:0
use redirection server name:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:
Pour un fichier multi-écrans, remplacer use multimon:i:0 par use multimon:i:1.
Signer les fichiers
CMD — Serveur (admin)
rdpsign.exe /sha256 VOTRE_THUMBPRINT_ICI "C:\temp\connexion-mono.rdp"
rdpsign.exe /sha256 VOTRE_THUMBPRINT_ICI "C:\temp\connexion-multi.rdp"
REM Vérifier les signatures
rdpsign.exe /verify "C:\temp\connexion-mono.rdp"
rdpsign.exe /verify "C:\temp\connexion-multi.rdp"
Un fichier .rdp correctement signé contiendra les lignes signscope:s: et signature:s: à la fin.
08 — Étape 6 — Script de déploiement sur les postes clients
Le script ci-dessous gère l'intégralité du déploiement côté client, adapté aux environnements sans Active Directory avec un partage réseau (NAS ou serveur de fichiers) comme source de distribution.
ℹ Sur Active Directory
Dans un environnement AD, distribuer le certificat via GPO (Configuration ordinateur → Autorités de certification racines de confiance) et la clé de registre via GPO. Les fichiers .rdp signés peuvent être distribués via le dossier de scripts de connexion ou un partage SYSVOL.
Batch — deploy-rdp.bat
@echo off
CLS
net session >nul 2>&1
if %errorLevel% neq 0 (
copy /Y "%~f0" "%TEMP%\deploy-rdp.bat" >nul 2>&1
powershell -ExecutionPolicy Bypass -Command "Start-Process '%TEMP%\deploy-rdp.bat' -Verb RunAs"
exit
)
chcp 65001 >nul
CLS
echo =====================================================================================
echo ATTENTION : Supprimez les ANCIENS fichiers RDP du serveur avant de continuer !
echo Une fenetre de recherche va s'ouvrir - supprimez les anciens fichiers
echo puis revenez ici et appuyez sur une touche pour continuer.
echo =====================================================================================
echo.
REM -- Recherche des anciens fichiers RDP (remplacer NOM_SERVEUR par votre terme)
explorer "search-ms:query=NOM_SERVEUR System.FileExtension:rdp&crumb=location:c:\users"
color F4
timeout /t 1 >nul
color 07
timeout /t 1 >nul
color F4
timeout /t 1 >nul
color 07
timeout /t 1 >nul
color F4
echo Supprimez les anciens fichiers RDP dans la fenetre de recherche puis...
pause
color 07
REM -- Autoriser l'acces guest SMB (necessaire depuis Windows 10 1709)
echo Configuration acces reseau...
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 1 /f
REM -- Import du certificat dans les racines de confiance de l'ordinateur
echo Import du certificat en cours...
powershell.exe -ExecutionPolicy Bypass -Command "Import-Certificate -FilePath '\\SERVEUR\PARTAGE\rdp-cert.cer' -CertStoreLocation Cert:\LocalMachine\Root"
if %errorLevel% neq 0 (
echo ERREUR : Import du certificat echoue.
pause
exit /b 1
)
echo Certificat importe avec succes.
REM -- Desactiver la boite de dialogue CVE-2026-26151 (optionnel)
echo Configuration securite RDP...
reg add "HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Client" /v RedirectionWarningDialogVersion /t REG_DWORD /d 1 /f
echo Registre mis a jour.
REM -- Copie des fichiers RDP signes sur le bureau public
echo Copie des fichiers RDP en cours...
copy /Y "\\SERVEUR\PARTAGE\*.rdp" "%PUBLIC%\Desktop\"
if %errorLevel% neq 0 (
echo ERREUR : Impossible de copier les fichiers RDP.
pause
exit /b 1
)
echo Fichiers RDP copies avec succes.
REM -- Recuperer l'utilisateur connecte (et non l'admin UAC)
for /f "tokens=2 delims=\" %%i in ('powershell -NoProfile -Command "(Get-WmiObject Win32_ComputerSystem).UserName"') do set REALUSER=%%i
REM -- Recuperer le nom de l'admin ayant valide l'UAC
powershell -NoProfile -Command "$p = Get-WmiObject Win32_Process -Filter 'name=''cmd.exe'''; $p | ForEach-Object { $_.GetOwner().User } | Select-Object -First 1 | Out-File '%TEMP%\admin.txt' -Encoding ASCII"
set /p ADMIN=<"%TEMP%\admin.txt"
REM -- Recuperer le nom complet de l'utilisateur
for /f "delims=" %%i in ('powershell -NoProfile -Command "(Get-LocalUser -Name '%REALUSER%').FullName"') do set FRIENDLY=%%i
if "%FRIENDLY%"=="" set FRIENDLY=%REALUSER%
REM -- Journalisation centralisee sur le partage
set "LOGLINE=%date%;%time:~0,8%;%COMPUTERNAME%;%REALUSER%;%FRIENDLY%;%ADMIN%"
powershell -NoProfile -Command "Add-Content -Path '\\SERVEUR\PARTAGE\deploy-rdp-log.txt' -Value '%LOGLINE%' -Encoding UTF8"
echo Log enregistre.
REM -- Refermer l'acces guest SMB
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 0 /f
echo Acces guest SMB referme.
REM -- Nettoyage des fichiers temporaires
del "%TEMP%\deploy-rdp.bat" >nul 2>&1
del "%TEMP%\admin.txt" >nul 2>&1
echo.
echo =====================================================================================
echo Installation terminee avec succes - Vous pouvez fermer cette fenetre
echo =====================================================================================
pause
Valeurs à adapter
Valeur à remplacer
Par
\\SERVEUR\PARTAGE\
Le chemin UNC de votre partage réseau
rdp-cert.cer
Le nom de votre fichier certificat exporté
NOM_SERVEUR
Le terme contenu dans le nom de vos fichiers RDP
09 — Points techniques importants
Pourquoi le script se copie dans %TEMP% avant l'élévation UAC
Windows bloque l'exécution de scripts .bat depuis un chemin UNC en mode élevé. Le script se copie en local dans %TEMP% avant de se relancer en administrateur — ce qui contourne cette restriction.
Pourquoi AllowInsecureGuestAuth est nécessaire
Depuis Windows 10 1709, Microsoft bloque les connexions SMB anonymes depuis un contexte élevé. La clé AllowInsecureGuestAuth = 1 autorise temporairement cet accès. Elle est refermée (= 0) à la fin du script.
Pourquoi capturer l'utilisateur via WMI et non %USERNAME%
Après élévation UAC, %USERNAME% retourne le compte administrateur, pas l'utilisateur réellement connecté. (Get-WmiObject Win32_ComputerSystem).UserName retourne l'utilisateur de la session active, indépendamment du compte utilisé pour l'élévation.
Ne pas appliquer cette clé sur des postes exposés à des fichiers .rdp reçus de sources externes (email, téléchargement). Elle supprime la protection mise en place par Microsoft contre CVE-2026-26151.
10 — Résumé des échéances
Élément
Durée recommandée
Action à l'échéance
Certificat auto-signé RDP
10 ans
Régénérer, re-signer les .rdp, redéployer le .cer
Fichiers .rdp signés
Durée du certificat
Re-signer avec le nouveau certificat
Clé registre clients
Permanente
Aucune action requise
Certificat importé clients
Durée du certificat
Redéployer le script de déploiement
✓ Conclusion
La procédure décrite dans cet article permet de traiter le problème de manière propre et durable, avec un seul déploiement sur les postes clients valable pour 10 ans. Elle est applicable aussi bien dans les environnements avec Active Directory (via GPO) que sans AD, en adaptant simplement la méthode de distribution.