Urgente: patch dei server di Exchange per vulnerabilità zero-day HAFNIUM
in Generale | Pubblicato il 3/5/2021Ieri Microsoft ha postato nel blog l'articolo Released: March 2021 Exchange Server Security Updates riguardante una grave vulnerabilità zero-day nei server Exchange on-premise. E' assolutamente urgente installare l'aggiornamento per la sicurezza subito, perché risolve una vulnerabilità che è stata rilasciata pubblicamente e può essere sfruttata da qualsiasi persona che abbia tempo da perdere e voglia di fare danni.
Cose importanti da sapere
- La vunerabilità riguarda TUTTE le versioni di Exchange a qualsiasi livello di CU.
- L'attacco parte come una richiesta non autenticata verso il server di Exchange, per cui se il server non è pubblicamente accessibile il livello di rischio è inferiore. E' chiaro che si rimane esposti agli attacchi interni.
- Le Security updates sono state rilasciate per le seguenti versioni di Exchange e livelli di Cumulative Update:
- Exchange 2010 SP3
- Exchange 2013 CU23
- Exchange 2016 CU18
- Exchange 2016 CU19
- Exchange 2019 CU7
- Exchange 2019 CU8
- Se il tuo server Exchange non ha questi livelli di CU, occorre prima installare le ultime CU per poter procedere all'installazione delle patch.
- Occorre prestare attenzione al fatto che .NET Framework e Visual Studio C++ runtime sono prerequisiti necessari per l'installazione delle CU per cui se non sono presenti l'installazione delle CU potrebbe fallire nella fase dei prerequisiti.
- L'installazione del .NET Framework e dei relativi aggiornamenti potrebbe pesare in maniera significativa sulla CPU: occorre tenerne conto per pianificare correttamente l'intervento.
- E' necessario eseguire l'update da un prompt ELEVATO. Gli amministratori che hanno ignorato questo passaggio hanno riferito che ECP viene corrotto.
- Anche gli ambienti ibridi sono coinvolti per cui occorre patchare i server che lavorano in ambiente ibrido..
Best Practices
- Applicare queste patch al più presto!
- Eseguire il restart del server di Exchange PRIMA di installare le patch o le CU. In questo modo saremo sicuri che il server si riavvii correttamente prima di installare le CU. Verranno inoltre rilasciati tutti i lock sui file..
- L'update in ambiente normale impiega 15-20 minuti per eseguire l'installazione. E' fondamentale riavviare il server di Exchange DOPO aver installato le patch o le CU, a prescindere dal fatto che venga richiesto. Nella nostra esperienza abbiamo notato che spesso non viene richiesto ma è un passaggio necessario.
- Non concatenare gli update. Per esempio,non eseguire l'update da Exchange 2016 CU17 a CU19 e immediatamente patchare il server senza il riavvio. Riavviare il server di Exchange dopo ogni aggiornamento.
- E' importante mantenere il server di Exchange Server aggiornato all'ultima o penultima CU così da poter installare le patch come questa con facilità.
Suggerimenti utili
Esegui questi comandi da una PowerShell elevata o dalla console EMS console in maniera tale da poter eseguire i file MSI o MSP in modalità "Esegui come amministratore" da tasto destro:
New-ItemProperty registry::HKEY_CLASSES_ROOTMsi.Patchshell unascommand -Name "(Default)" -Value '"%SystemRoot%System32msiexec.exe" /p "%1" %*' -PropertyType ExpandString -Force
New-ItemProperty registry::HKEY_CLASSES_ROOTMsi.Packageshell unascommand -Name "(Default)" -Value '"%SystemRoot%System32msiexec.exe" /p "%1" %*' -PropertyType ExpandString -Force
Usa i seguenti script di PowerShell script per verificare se il server è stato compromesso (richiede privilegi da amministratore). Questo script non funziona in Exchange 2010.
Start-Transcript -Path "Check-Compromise-$env:COMPUTERNAME.log" -ForceWrite-Host "Checking for CVE-2021-26858 exploitation..."findstr /snip /c:"Download failed and temporary file" "%PROGRAMFILES%MicrosoftExchange ServerV15LoggingOABGeneratorLog*.log"Write-Host "Checking for CVE-2021-26857 exploitation..."Get-EventLog -LogName Application -Source "MSExchange Unified Messaging" -EntryType Error | Where-Object { $_.Message -like "*System.InvalidCastException*" }Write-Host "Checking for CVE-2021-27065 exploitation..."Select-String -Path "$env:PROGRAMFILESMicrosoftExchange ServerV15LoggingECPServer*.log" -Pattern 'Set-.+VirtualDirectory'Write-Host "Checking CVE-2021-26855 exploitation..."$logs = (Get-ChildItem -Recurse -Path "$env:PROGRAMFILESMicrosoftExchange ServerV15LoggingHttpProxy" -Filter '*.log' -ErrorAction SilentlyContinue).FullName | sort -Descending$logCount = $logs.Countforeach ($log in $logs) {$i++$percentage = $i / $logCount * 100$perc = $percentage.ToString("#")Write-Progress "Search in progress" -Status "$perc% Complete:" -PercentComplete $percentageImport-Csv -Path $log -ErrorAction SilentlyContinue | Where-Object { $_.AuthenticatedUser -eq "" -and $_.AnchorMailbox -like 'ServerInfo~*/*' } | select DateTime, AnchorMailbox}Stop-Transcript
Controlla il file Check-Compromise-.log e fai riferimento a HAFNIUM targeting Exchange Servers with 0-day exploits per avere più informazioni.
Se l'update fallisce per qualche motivo, è possibile constatare che i servizi di Exchange sono stoppati e disabilitati. Se si prova a reinstallare l'update, questa non andrà a buon fine per questo motivo. Esegui lo script qui sotto da una PowerShell elevata, riavvia il server e assicurati di lanciare l'update come amministratore.
Get-Service -Name MSExchangeDelivery, MSExchangeRepl,MSExchangeRPC,MSExchangeFastSearch, MSExchangeThrottling, wsbexchange,MSExchangeSubmission, MSExchangeMailboxReplication, MSExchangeMailboxAssistants, MSExchangeIMAP4BE, MSExchangeImap4, MSExchangeIS, MSExchangeDagMgmt, MSExchangeDiagnostics, MSExchangeFrontEndTransport, MSExchangeADTopology, MSExchangeAntispamUpdate, MSExchangeUM, MSExchangeEdgeSync, MSExchangeHM, MSExchangeHMRecovery, MSExchangeServiceHost, MSExchangeTransport, MSExchangeTransportLogSearch, FMS, HostControllerService, winmgmt, remoteregistry, w3svc, iisadmin | Set-Service -StartupType automatic
Bisogna prestare attenzione al fatto che ogni volta che viene isntallata una nuova versione di .NET Framework o un suo aggiornamento la CPU potrebbe essere occupata al 90-100% dopo il riavvio anche per 40 minuti mentre il sistema ricompila i MOF. Questo processo è chiamato NGEN. E' possibile vedere che i processi mscorsvw.exe occupano tutta la CPU. Lo stesso comportamento si verifica in seguito agli update di Exchange, che è scritto in .NET.
Per qualsiasi richiesta di chiarimento, supporto o esigenza relativa alla manutenzione del tuo server Exchange lo staff di SIPRA è a tua completa disposizione.
TAG CLOUD: patch, Exchange, vulnerabilità, zero-day, HAFNIUM