Ungepatchter Microsoft 0-Day: Wie man CVE-2023-36884 mit PowerShell entschärft

Die Microsoft-Updates für den Patch Tuesday im Juli 2023 weisen auf mehrere Sicherheitslücken hin, die aktiv ausgenutzt werden. Darunter befindet sich eine Sicherheitslücke (oder mehrere?), die noch nicht behoben wurde. Hier erfahren Sie, was Sie über die Zero-Day-Schwachstelle CVE-2023-36884 wissen müssen, die Angreifer ausnutzen, um Remotecodeausführung über “speziell gestaltete” Microsoft Office-Dokumente zu erlangen.

Was ist CVE-2023-36884?

Kurzantwort: Microsoft bezeichnet CVE-2023-36884 als Sicherheitsanfälligkeit in Office und Windows HTML mit Remotecodeausführung und einem CVSS-Wert von 8.3.

Eine ausführlichere Antwort: Wird erwartet.

Im Moment deutet der Hinweis des Unternehmens darauf hin, dass Microsoft die Schwachstelle noch aktiv untersucht, und liefert nicht viel mehr als eine kurzgefasste Beschreibung. Darin heißt es, dass ein Angreifer bei erfolgreicher Ausnutzung der Sicherheitsanfälligkeit in der Lage ist, Remotecode im Kontext des jeweiligen Betroffenen auszuführen. Dazu müssen betroffene lediglich dazu gebracht werden, ein mit speziellen Funktionen versehenes Microsoft Office-Dokument zu öffnen.

Der Hinweis beginnt mit der Aussage: “Microsoft untersucht Berichte über eine Reihe von Schwachstellen, die Remotecodeausführung ermöglichen” (“Betonung von mir”), was den Schwachstellenexperten Will Dormann zu der Theorie veranlasst, dass “CVE-2023-36884 lediglich ein Platzhalter für ein Update ist, das mehrere Schwachstellen über ein einziges CVE behebt, das möglicherweise zu einem unbekannten Zeitpunkt in der Zukunft veröffentlicht wird”.

Während das Gutachten selbst keine Einzelheiten enthält, verweist es auf einen Blogbeitrag, der mehr über die Entdeckung der Schwachstelle durch Microsoft aussagt.

Spionage und Ransomware – aktive Ausnutzung von CVE-2023-36884

Im Juni identifizierte Microsoft eine Phishing-Kampagne, die von einem Angreifer gestartet wurde, den Microsoft als Storm-0978 bezeichnet. Die Kampagne zielte auf Verteidigungs- und Regierungseinrichtungen in Nordamerika und Europa ab, wobei die Lockangebote im Zusammenhang mit dem ukrainischen Weltkongress standen. Die im Rahmen der Kampagne versandten E-Mails enthielten Links zu Word-Dokumenten, die CVE-2023-36884 missbrauchten, um eine Sicherheitslücke zu installieren.

Während diese Ziele und Aktivitäten nach der Kompromittierung auf Spionagemotive hindeuten, stellt Microsoft fest, dass Storm-0978 während dieser Kampagne auch separate Ransomware-Angriffe auf nicht verwandte Ziele durchführte, die die gleichen ursprünglichen Nutzdaten verwendeten.

Laut Microsoft waren die Ransomware-Aktivitäten des Bedrohungsakteurs “größtenteils opportunistischer Natur und völlig getrennt von den auf Spionage ausgerichteten Zielen”.

UPDATE: Eine noch ausführlichere Analyse dieser Kampagne ist bei BlackBerry erhältlich.

 

Ist ein Patch für CVE-2023-36884 verfügbar?

Momentan nicht.

Microsoft weist darauf hin, dass die Untersuchung dieser Sicherheitslücke noch nicht abgeschlossen ist und dass das Unternehmen nach Abschluss der Untersuchung “die entsprechenden Maßnahmen zum Schutz unserer Kunden ergreifen wird. Dazu kann die Bereitstellung eines Sicherheitsupdates im Rahmen unseres monatlichen Veröffentlichungsprozesses oder die Bereitstellung eines Sicherheitsupdates außerhalb des Zyklus gehören, je nach Kundenbedarf.”

Abhilfen für CVE-2023-36884

Nach Angaben von Microsoft gibt es derzeit drei Möglichkeiten für Unternehmen, sich zu schützen:

  1. Kunden, die Microsoft Defender für Office verwenden, sind vor Anhängen geschützt, die versuchen, diese Sicherheitslücke auszunutzen.
  2. In aktuellen Angriffsketten verhindert die Regel “Block all Office applications from creating child processes “, dass die Sicherheitslücke ausgenutzt wird.
  3. Organisationen, die diese Schutzmaßnahmen nicht in Anspruch nehmen können, haben die Möglichkeit, folgende Anwendungsnamen als Werte des Typs REG_DWORD mit dem Wert 1 in diesen Registrierungsschlüssel aufzunehmen:
    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

Hinweis: Microsoft weist darauf hin, dass diese Registrierungseinstellungen zwar die Ausnutzung von Sicherheitslücken eindämmen können, dass sie aber auch die reguläre Funktionalität für bestimmte Anwendungsfälle im Zusammenhang mit diesen Anwendungen beeinträchtigen können. Daher ist es wichtig, die Änderungen zu testen, bevor sie in großem Umfang eingesetzt werden.

Abschwächung von CVE-2023-36884 mit PowerShell

Für diejenigen, die eine Änderung der Registrierung in Erwägung ziehen, hat unser Software Product Engineer Kyle Bohlander das folgende Skript zur Automatisierung dieses Prozesses erstellt. Wenn Sie dieses Skript mit Ninja (oder einem RMM Ihrer Wahl) verwenden, können Sie die Abschwächung remote und in großem Maß einsetzen.

Hinweis: Dieses Skript ist nicht nur auf NinjaOne-Nutzer beschränkt. Es kann von jedem verwendet werden. Wie von Microsoft empfohlen, sollte diese Korrektur jedoch vor einer allgemeinen Anwendung auf Testrechnern eingesetzt werden. Wenn Sie das Skript ausführen, geschieht dies wie üblich auf eigene Gefahr.

Anforderungen an das Gerät: Geeignet für Systeme mit Windows 7 und Windows Server 2008 und höher.

Wenn Sie die Einstellungen rückgängig machen müssen: Die Einstellungen der Registrierungsschlüssel können mit dem Parameter “Undo” rückgängig gemacht oder mit dem Parameter “OfficeProducts” auf bestimmte Office-Produkte übertragen werden.

 

Verfasser: Kyle Bohlander, Software Product Engineer bei NinjaOne

 

 

Laden Sie die Skriptdatei hier herunter.

<#
.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
    }
}

 

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).