Blog & Actualités

RDP et mise à jour Windows avril 2026

RDP et mise à jour Windows avril 2026


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èmeMise à jourBuild
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 RDP affiché à la première ouverture après la mise à jour avril 2026 - IT-Connect

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 fenêtre de connexion RDP avec fichier non signé - bannière rouge - IT-Connect

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.

Fenêtre de connexion RDP avec fichier signé et éditeur vérifié - IT-Connect

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 :

Fichier .rdp
full address:s:VALEUR_ICI
Valeur dans full addressParamètre DnsName à utiliser
FQDN (serveur.mondomaine.fr) "serveur.mondomaine.fr", "NOM_COURT"
IP publique (203.0.113.10) "serveur.mondomaine.fr", "NOM_COURT", "203.0.113.10"
Nom NetBIOS seul "NOM_SERVEUR"

Créer le certificat

PowerShell — Serveur (admin)
# Adapter les valeurs DnsName selon votre environnement
$cert = New-SelfSignedCertificate `
    -DnsName "serveur.mondomaine.fr", "NOM_COURT" `
    -CertStoreLocation "Cert:\LocalMachine\My" `
    -NotAfter (Get-Date).AddYears(10) `
    -KeyUsage DigitalSignature, KeyEncipherment `
    -FriendlyName "RDP-SERVEUR-2036"

# Vérifier
$cert | Select-Object Subject, NotBefore, NotAfter, Thumbprint
ℹ Note Windows Server 2019

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.


05 — Étape 3 — Lier le certificat au rôle RDP

PowerShell — Serveur (admin)
$thumbprint = "VOTRE_THUMBPRINT_ICI"

$path = (Get-WmiObject -Class "Win32_TSGeneralSetting" `
    -Namespace root\cimv2\terminalservices `
    -Filter "TerminalName='RDP-tcp'").__path

Set-WmiInstance -Path $path -Argument @{SSLCertificateSHA1Hash=$thumbprint}

# Vérifier
Get-WmiObject -Class "Win32_TSGeneralSetting" `
    -Namespace root\cimv2\terminalservices | Select-Object SSLCertificateSHA1Hash, CertificateName
✓ Bon à savoir

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.


06 — Étape 4 — Exporter le certificat public

PowerShell — Serveur (admin)
# Export clé publique uniquement (sans clé privée)
Export-Certificate `
    -Cert "Cert:\LocalMachine\My\VOTRE_THUMBPRINT_ICI" `
    -FilePath "C:\temp\rdp-cert.cer" -Force

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 à remplacerPar
\\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.

Clé de registre CVE-2026-26151

Registre Windows
HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Client
Valeur : RedirectionWarningDialogVersion = 1 (DWORD)
⚠ Sécurité

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émentDurée recommandéeAction à 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.