Gli aggiornamenti del Patch Tuesday di luglio 2023 di Microsoft hanno evidenziato diverse vulnerabilità sfruttate attivamente, tra cui una (o più?) ancora senza una patch risolutiva. Ecco cosa hai bisogno di sapere su CVE-2023-36884, una vulnerabilità zero-day che gli aggressori stanno sfruttando per eseguire codice da remoto tramite documenti Microsoft Office “appositamente creati”.
Che cos’è CVE-2023-36884?
Risposta breve: Microsoft definisce CVE-2023-36884 come una vulnerabilità che permette di eseguire codice da remoto tramite Office e Windows HTML, con un punteggio CVSS di base pari a 8,3. Risposta più significativa: Cosa succederà? Per il momento, le dichiarazioni della società sembrano suggerire che Microsoft stia ancora indagando attivamente sulla situazione, e non forniscono molte informazioni al di là di una descrizione sommaria. L’azienda afferma che uno sfruttamento riuscito della vulnerabilità può consentire a un aggressore di eseguire codice da remoto nell’ambiente IT di chi subisce l’attacco, e per farlo è necessario semplicemente ingannare la vittima spingendola ad aprire un documento Microsoft Office appositamente creato. La dichiarazione di Microsoft si apre in modo curioso affermando: “Microsoft sta indagando sulle segnalazioni di una serie di vulnerabilità relative all’esecuzione di codice da remoto” (l’enfasi posta sulle parole in grassetto è mia), e quanto scoperto fino a ora induce l’ esperto di vulnerabilità Will Dormann a ipotizzare quanto segue: “CVE-2023-36884 è semplicemente un placeholder per un aggiornamento che riguarderà più vulnerabilità in un singolo CVE, e che potrebbe essere rilasciato in un futuro più o meno prossimo.” Sebbene la dichiarazione in sé manchi di dettagli, rimanda a un post sul blog che fa luce sul modo in cui Microsoft ha scoperto la vulnerabilità.
Spionaggio e ransomware – sfruttamento attivo di CVE-2023-36884
A giugno, Microsoft ha individuato una campagna di phishing lanciata da un criminale informatico che Microsoft identifica con il nome di Storm-0978. La campagna ha preso di mira enti governativi e della difesa in Nord America e in Europa, con esche legate al Congresso mondiale ucraino. Le e-mail inviate nell’ambito della campagna contenevano link a documenti Word che sfruttavano CVE-2023-36884 per installare backdoor. Sebbene questi obiettivi e le attività successive alla compromissione suggeriscano motivazioni di spionaggio, Microsoft dichiara di aver scoperto che, mentre questa campagna era in corso, Storm-0978 conduceva attacchi ransomware separati, su obiettivi non correlati, utilizzando gli stessi payload iniziali. Secondo Microsoft, l’attività di ransomware dell’aggressore è stata “in gran parte di natura opportunistica e completamente separata dagli obiettivi di spionaggio” AGGIORNAMENTO: Un’ancora più approfondita analisi tecnica di questa campagna è disponibile presso BlackBerry.
È disponibile una patch per CVE-2023-36884?
Al momento, no. Microsoft ha fatto sapere di stare ancora indagando attivamente su questa vulnerabilità e ha rilasciato la seguente dichiarazione in merito alle azioni che seguiranno: “Adotteremo le misure appropriate per proteggere i nostri clienti. Questo potrebbe significare che renderemo disponibile un aggiornamento della sicurezza attraverso il nostro processo di rilascio mensile o che distribuiremo un aggiornamento di sicurezza al di fuori delle date canoniche, a seconda delle esigenze dei clienti”
Riduzione del rischio per CVE-2023-36884
Secondo Microsoft, attualmente le aziende possono proteggersi in tre modi:
- I clienti che utilizzano Microsoft Defender per Office sono protetti dagli allegati che tentano di sfruttare questa vulnerabilità.
- Per come sono strutturati attualmente gli di attacchi, l’applicazione della regola di Attack Surface Reduction (ASR) ”Impedisci a tutte le applicazioni Office di creare processi figli” impedisce lo sfruttamento della vulnerabilità.
- Le organizzazioni che non possono usufruire di queste protezioni, potranno aggiungere i seguenti nomi di applicazioni a questa chiave di registro, come valori di tipo REG_DWORD con dati 1.: ComputerHKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATION
-
- Excel.exe
- Graph.exe
- MSAccess.exe
- MSPub.exe
- PowerPoint.exe
- Visio.exe
- WinProj.exe
- WinWord.exe
- Wordpad.exe
Nota: Microsoft dichiara che, sebbene queste impostazioni del registro di sistema possano ridurre il rischio di sfruttamento della vulnerabiità, potrebbero anche compromettere la regolare funzionalità di queste applicazioni in alcune situazioni d’uso. Pertanto, è importante eseguire dei test prima di distribuire le modifiche su larga scala.
Come ridurre il rischio legato a CVE-2023-36884 utilizzando PowerShell
Per coloro che intendono apportare le modifiche al registro, il nostro Software Product Engineer Kyle Bohlander ha creato il seguente script che automatizza il processo. L’utilizzo di questo script con Ninja (o con l’RMM di vostra scelta) ti consentirà di distribuire la risoluzione in remoto e su larga scala. Nota: Questo script non è limitato ai soli utenti di NinjaOne. Può essere utilizzato da chiunque. Come consiglia Microsoft, tuttavia, questa risoluzione dovrebbe essere distribuita su macchine di test prima di una distribuzione più ampia. Come al solito, se decidessi di eseguirlo, lo faresti a tuo rischio e pericolo. Requisiti del dispositivo: Funziona su sistemi Windows 7 e Windows Server 2008 e successivi. Se dovessi avere bisogno di ripristinare la situazione precedente all’applicazione della risoluzione: Le impostazioni della chiave di registro possono essere annullate con il parametro -Undo o applicate a prodotti Office specifici con il parametro -OfficeProducts.
Autore dello script: Kyle Bohlander, Software Product Engineer presso NinjaOne
Scarica il file dello script qui.
<# .SYNOPSIS This script will set the registry keys required to remediate CVE-2023-36884. Please note that these keys may effect regular functionality of Microsoft Office Products. These changes can be undone with the -Undo parameter or applied only to specific office products using the -OfficeProducts parameter. .DESCRIPTION This script will set the registry keys required to remediate CVE-2023-36884. Please note that these keys may effect regular functionality of Microsoft Office Products. These changes can be undone with the -Undo parameter or applied only to specific office products using the -OfficeProducts parameter. .EXAMPLE (No Parameters) Visio was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONVisio.exe to 1 Success! Word was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONWinWord.exe to 1 Success! Wordpad was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONWordpad.exe to 1 Success! Project was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONWinProj.exe to 1 Success! PowerPoint was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONPowerPoint.exe to 1 Success! Excel was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONExcel.exe to 1 Success! Publisher was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONMsPub.exe to 1 Success! Graph was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONGraph.exe to 1 Success! Access was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONMSAccess.exe to 1 Success! PARAMETER: -Undo Remove's the registry keys used for this fix (if they're set at all). .EXAMPLE -Undo Visio was selected for remediation. Succesfully removed registry key! Word was selected for remediation. Succesfully removed registry key! Wordpad was selected for remediation. Succesfully removed registry key! Project was selected for remediation. Succesfully removed registry key! PowerPoint was selected for remediation. Succesfully removed registry key! Excel was selected for remediation. Succesfully removed registry key! Publisher was selected for remediation. Succesfully removed registry key! Graph was selected for remediation. Succesfully removed registry key! Access was selected for remediation. Succesfully removed registry key! PARAMETER: -OfficeProducts "Excel,Word" Set's the registry key for only those products. Can be given an individual product or a comma seperated list. Can also be used in combination with the -Undo parameter Ex. "Publisher" or "Word,Excel,Access" .EXAMPLE -OfficeProducts "Excel,Word" Word was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONWinWord.exe to 1 Success! Excel was selected for remediation. Set Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATIONExcel.exe to 1 Success! .OUTPUTS None .NOTES General notes #> [CmdletBinding()] param ( [Parameter()] [String]$OfficeProducts = "All", [Parameter()] [Switch]$Undo ) begin { # Test's if the script is running in an elevated fashion (required for HKLM edits) function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } # This is just to make setting regkey's easier function Set-RegKey { param ( $Path, $Name, $Value, [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")] $PropertyType = "DWord" ) if (-not $(Test-Path -Path $Path)) { # Check if path does not exist and create the path New-Item -Path $Path -Force | Out-Null } if ((Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue)) { # Update property and print out what it was changed from and changed to $CurrentValue = (Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name try { Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false -ErrorAction Stop | Out-Null } catch { Write-Error "[Error] Unable to Set registry key for $Name please see below error!" Write-Error $_ exit 1 } Write-Host "$Path$Name changed from $CurrentValue to $($(Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name)" } else { # Create property with value try { New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false -ErrorAction Stop | Out-Null } catch { Write-Error "[Error] Unable to Set registry key for $Name please see below error!" Write-Error $_ exit 1 } Write-Host "Set $Path$Name to $($(Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue).$Name)" } } # All the microsoft office products with their corresponding dword value $RemediationValues = @{ "Excel" = "Excel.exe"; "Graph" = "Graph.exe"; "Access" = "MSAccess.exe"; "Publisher" = "MsPub.exe"; "PowerPoint" = "PowerPnt.exe"; "OldPowerPoint" = "PowerPoint.exe" ; "Visio" = "Visio.exe"; "Project" = "WinProj.exe"; "Word" = "WinWord.exe"; "Wordpad" = "Wordpad.exe" } } process { # Error out when not elevated if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } # If they have a smaller selection we'll want to filter our remediation list if ($OfficeProducts -notlike "All") { $OfficeProducts = $OfficeProducts.split(',') | ForEach-Object { $_.Trim() } $RemediationTargets = $RemediationValues.GetEnumerator() | ForEach-Object { $_ | Where-Object { $OfficeProducts -match $_.Key } } } else { $RemediationTargets = $RemediationValues.GetEnumerator() } # Path to all the registry keys $Path = "Registry::HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternet ExplorerMainFeatureControlFEATURE_BLOCK_CROSS_PROTOCOL_FILE_NAVIGATION" # We'll want to display an error if we don't have anything to do if ($RemediationTargets) { # For Each product we're targeting we'll set the regkey. The Set-RegKey function already checks if it was succesful and will display an error and exit if it fails $RemediationTargets | ForEach-Object { Write-Host "$($_.Name) was selected for remediation." if (-not $Undo) { Set-RegKey -Path $Path -Name $_.Value -Value 1 Write-Host "Success!" } else { # If you only applied it to certain products this will error so instead we'll hide the errors and check afterwards if the registry key is there. Remove-ItemProperty -Path $Path -Name $_.Value -ErrorAction SilentlyContinue | Out-Null if (Get-ItemProperty -Path $Path -Name $_.Value -ErrorAction SilentlyContinue) { Write-Error "[Error] Unable to undo registry key $($_.Value)!" exit 1 } else { Write-Host "Succesfully removed registry key!" } } } Write-Warning "A reboot may be required." exit 0 } else { Write-Host $RemediationTargets Write-Warning "No products were selected! The valid value's for -OfficeProducts is listed below you can also use a comma seperated list or simply put 'All'." $RemediationValues | Sort-Object Name | Format-Table | Out-String | Write-Host Write-Error "ERROR: Nothing to do!" exit 1 } }