Microsoft 0-Day senza patch: Come ridurre il rischio legato a CVE-2023-36884 con PowerShell

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:

  1. I clienti che utilizzano Microsoft Defender per Office sono protetti dagli allegati che tentano di sfruttare questa vulnerabilità.
  2. 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à.
  3. 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
    }
}

 

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.