Urgente: patch dei server di Exchange per vulnerabilità zero-day HAFNIUM

in Generale | Pubblicato il 3/5/2021

Ieri 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" -Force
Write-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.Count
foreach ($log in $logs) {
$i++
$percentage = $i / $logCount * 100
$perc = $percentage.ToString("#")
Write-Progress "Search in progress" -Status "$perc% Complete:" -PercentComplete $percentage
Import-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