Impossibile connettersi via RDP a macchine on-premises o alle Azure Virtual Machine: Errore CredSSP Encryption Oracle Remediation
A partire dall’ 8 Maggio 2018, a seguito del rilascio da parte di Microsoft degli aggiornamenti mensili ed in particolar modo della KB4103727, diversi utenti stanno ricevendo una serie di errori nei collegamenti RDP dovuti alla CredSSP Encryption Oracle Remediation.
Le connessioni Desktop remoto (RDP) sono infatti soggette ad una vulnerabilità di “Remote Code Execution” che è stata descritta nella CVE-2018-0886. Già dal 18 Marzo 2018 Microsoft aveva rilasciato una patch per poter gestire questa vulnerabilità e aveva introdotto una Group Policy per mitigarne i rischi. Se volete conoscere l’evoluzione degli aggiornamenti per questa vulnerabilità potete leggere l’articolo CredSSP updates for CVE-2018-0886
Con le patch contenute nel Cumulative Update di Maggio 2018, la Group Policy è stata modificata ed il valore è passato da Vulnerable a Mitigated. Il parametro lo trovate in Computer Configuration -> Administrative Templates -> System -> Credentials Delegation
Questa modifica al parametro della Group Policy obbliga la connessione RDP ad essere instaurata solo se dall’altra parte risponde una macchina che abbia ricevuto l’aggiornamento della KB4103727
Per maggiori informazioni sui diversi valori che il parametro può avere potete fare riferimento all’articolo https://support.microsoft.com/en-us/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018
Figura 1: Policy utilizzata per la gestione della vulnerabilità di CredSSP Encryption
Per verificare che abbiate installato la KB “incriminata” (KB4103727) potete lanciare un prompt di PowerShell con privilegi elevati ed eseguire il comando Get-Hotfix
Figura 2: Aggiornamenti installati sul sistema operativo client
Problema
Sul mio client Windows 10 ho installato la KB4103727 e quando ho tentato di connettermi ad una macchina dove la patch non era installata ho ricevuto il seguente messaggio di errore:
Figura 3: Impossibile collegarvi via RDP su una macchina non aggiornata
Anche controllando il Registro Eventi l’errore appare chiaro:
Figura 4: Errore nel Registro Eventi relativo al fallimento della negoziazione sicura della connessione
Il comportamento delle macchine può essere riassunto in questo modo:
- se sia il client che la VM o il PC hanno la patch, la connessione avverrà in maniera sicura
- se il client ha la patch ma la VM o il PC non ce l’hanno, apparirà un messaggio di errore e non sarà possibile connettersi
- se il client non ha la patch ma la VM o il PC ce l’hanno, sarà possibile collegarsi via RDP ma la connessione non sarà sicura
Soluzione
Per ovviare al problema è possibile modificare la Policy che vi ho indicato prima (mettendo il valore su Vulnerable) o disinstallare la KB4103727 oppure modificare il registro utilizzando il comando
REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2
Io sconsiglio queste soluzioni. La cosa migliore da fare è aggiornare tutte le VM ed i PC installando gli aggiornamenti di sicurezza consigliati. Per aggiornare un PC o una VM potete utilizzare Windows Update oppure un server WSUS.
Figura 5: Aggiornamenti di Maggio 2018 su Windows Server 2016
Figura 6: Aggiornamenti di Maggio 2018 su Windows 10
Connessione ad una VM in Microsoft Azure e installazione della patch mancante
Se tentate di connettervi ad una VM in Azure in cui non avete installato la patch KB4103727, allora ricevete l’errore descritto prima e sarà necessario aggiornarla o mitigare la vulnerabilità.
Nel mio caso però la VM non è in dominio e non ho la possibilità di accedervi in console. Per installare la patch mi sono servito della funzionalità di Azure Update Management, una soluzione che vi permette di eseguire gli aggiornamenti per le macchine Windows e per le macchine Linux direttamente dal portale di Azure e tramite un Automation Account.
Figura 7: Abilitazione della soluzione Azure Update Management
Il principio di funzionamento di Azure Update Management è molto semplice e può essere riassunto dal seguente diagramma:
Figura 8: Principio di funzionamento di Azure Update Management
La tabella seguente elenca i sistemi operativi supportati da Azure Update Management:
Sistema operativo | Note |
Windows Server 2008, Windows Server 2008 R2 RTM | Supporta solo le valutazioni degli aggiornamenti |
Windows Server 2008 R2 SP1 e versioni successive | Sono richiesti .NET Framework 4.5 e WMF 5.0 o versioni successive per Windows Server 2008 R2 SP1 |
CentOS 6 (x86/x64) e 7 (x64) | Gli agenti Linux devono avere accesso a un repository degli aggiornamenti. |
Red Hat Enterprise 6 (x86/x64) e 7 (x64) | Gli agenti Linux devono avere accesso a un repository degli aggiornamenti. |
SUSE Linux Enterprise Server 11 (x86/x64) e 12 (x64) | Gli agenti Linux devono avere accesso a un repository degli aggiornamenti. |
Ubuntu 12.04 LTS e versioni x86/x64 più recenti | Gli agenti Linux devono avere accesso a un repository degli aggiornamenti. |
Dopo pochissimi minuti dall’abilitazione della soluzione, la macchina verrà testata e verranno mostrati gli aggiornamenti mancanti. Come è possibile vedere dalla figura, manca il Security Update KB4103723
Figura 9: Aggiornamenti mancanti sulla VM
Fate clic sul pulsante Schedule update deployment che vi appare nel blade del portale di Azure e programmate quando volete effettuare l’aggiornamento. L’aggiornamento non è programmabile prima di 30 minuti e potete scegliere di eliminare alcune patch dall’installazione.
Figura 10: Programmazione dell’aggiornamento della VM
Una volta che avete schedulato l’aggiornamento non vi resta che attendere. La programmazione sarà visibile cliccando su Scheduled update deployment, come mostrato in figura:
Figura 11: Aggiornamenti programmati
Figura 12: Esecuzione del job di Update Deployment all’orario stabilito
Cliccando sul nome del job, nel mio caso Aggiornamenti Maggio 2018, potrete ricevere maggiori dettagli sullo stato di aggiornamento, come mostrato in figura:
Figura 13: Stato di avanzamento degli aggiornamenti
Dopo alcuni minuti, il processo di aggiornamento terminerà e finalmente potrete connettervi in RDP alla Azure VM.
Figura 14: Aggiornamenti completati
Conclusioni
Avere le macchine sempre aggiornate e lavorare con sistemi operativi sicuri è un prerequisito importante per non essere soggetti alle vulnerabilità dei software e dei sistemi operativi e non perdere i propri dati. Prima di aggiornare però assicuratevi di fare dei test sulla vostra infrastruttura e verificate che tutto continui a funzionare prima di distribuire in maniera massiva gli aggiornamenti.
Buon lavoro!
Nic