Windows DCOM Server Authentifizierung

Windows DCOM-Server Authentifizierung

Was ist DCOM und wofür wird es eingesetzt?

In diesem Artikel geht es speziell um die Härtung der Windows DCOM-Server Authentifizierung, aber vorher sollte man wisssen, wofür DCOM eingesetzt wird.

DCOM (Distributed Component Object Model ) ist eine von Microsoft entwickelte Softwarekomponente, mit der COM-Objekte über das Netzwerk miteinander kommunizieren können.

DCOM ermöglicht einem Computer, Programme über das Netzwerk auf einem anderen Computer auszuführen, als ob das Programm lokal ausgeführt werden würde. DCOM setzt dabei auf Remote Procedure Calls kurz RPC.

Windows DCOM-Server Authentifizierung

Ab dem 8. März 2022 wird Microsoft die Härtungsmaßnahme für DCOM forcieren. Bis es soweit ist, kann die Maßnahme (Hardening) auch noch nach der Forcierung in der Registry manuell deaktiviert werden.

Die Sicherheitsanfälligkeit wird seit dem 08.06.2021 unter CVE-2021-26414 geführt und betrifft Windows Server 2008/7 bis hin zu 2022/11.

Microsoft empfiehlt, den vollständigen Schutz so bald wie möglich zu aktivieren, viel Zeit ist ja nicht mehr, um Probleme mit der Intermobilität zwischen Windows- und Nicht-Windows-Betriebssystemen und -Anwendungen zu erkennen.

Windows DCOM-Server Authentifizierung

Die nächste Phase, die für den 14. Juni 2022 geplant ist, aktiviert die Härtung auf DCOM-Servern standardmäßig. Sie kann aber mittels des Registry-Key deaktiviert werden.

Das am 8. November 2022 erscheinende Update, bewirkt eine automatische Erhöhung der Authentifizierungsstufe und zwar für alle nicht anonymen Aktivierungsanforderungen von DCOM-Clients, um RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, wenn es unterhalb der Paketintegrität liegt.

Am 14. März 2023 wird die Härtung nicht mehr deaktivierbar seien, bis dahin sollten alle Kompatibilitätsprobleme beseitgt worden sein.

DCOM Authentication Level aktivieren

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat]
“RequireIntegrityActivationAuthenticationLevel”=dword:00000001

Neustart des Systems

DCOM Authentication Level deaktivieren

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat]
“RequireIntegrityActivationAuthenticationLevel”=dword:00000000

Neustart des Systems

DCOM Aktivierungsauthentifizierungsebene manuell erhöhen

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat] “RaiseActivationAuthenticationLevel” =dword:00000001

Wert 1 bedeutet, dass die Standardauthentifizierungsebene auf RPC_C_AUTHN_LEVEL_PKT_INTEGRITY erhöht wird.

Wert 2 bedeutet, dass die Authentifizierungsstufe für alle nicht anonymen Aktivierungsanforderungen auf RPC_C_AUTHN_LEVEL_PKT_INTEGRITY erhöht wird, wenn sie unter der Paketintegrität liegt.

DCOM RaiseActivationAuthenticationLevel

Neustart des Systems

DCOM Sicherheitsprobleme aufdecken

Es gibt 3 neue Events, die einem nach der Aktivierung der Härtungsmaßnahme Sicherheitsprobleme mit Anwendungen aufzeigen soll und zwar dann, wenn erkannt wird, dass eine DCOM-Clientanwendung versucht einen DCOM-Server mit einer Authentifizierungsstufe zu aktivieren, die kleiner ist als

RPC_C_AUTHN_LEVEL_PKT_INTEGRITY.

Aus der ersten Tabelle gehen die 3 neuen Events inkl. der angezeigten Meldungen hervor und was sie bedeuten.

Aus dem serverseitigen Ereignisprotokoll kann eine Ablaufverfolgung zum Clientgerät erstellt werden, und aus dem clientseitigen Ereignisprotokoll geht dann die Anwendung hervor, die zum Sicherheitsproblem werden könnte.

Ereignis-IDMeldung
Server 10036Die Richtlinie für die serverseitige Authentifizierungsstufe lässt nicht zu, dass der Benutzer %1\%2 SID (%3) von Der Adresse %4 den DCOM-Server aktiviert. Bitte erhöhen Sie die Aktivierungsauthentifizierungsstufe, um RPC_C_AUTHN_LEVEL_PKT_INTEGRITY Clientanwendung zu aktivieren.

(%1 – Domäne, %2 – Benutzername, %3 – Benutzer-SID, %4 – Client-IP-Adresse)
Client 10037Anwendung %1 mit PID %2 fordert die Aktivierung von CLSID %3 auf Computer %4 mit explizit festgelegter Authentifizierungsstufe %5 an. Die niedrigste von DCOM erforderliche Aktivierungsauthentifizierungsstufe ist 5(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY). Wenden Sie sich an den Hersteller der Anwendung, um die Aktivierungsauthentifizierungsstufe zu aktivieren.
Client 10038Anwendung %1 mit PID %2 fordert die Aktivierung von CLSID %3 auf Computer %4 mit standardmäßiger Aktivierungsauthentifizierungsstufe von %5 an. Die niedrigste von DCOM erforderliche Aktivierungsauthentifizierungsstufe ist 5(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY). Wenden Sie sich an den Hersteller der Anwendung, um die Aktivierungsauthentifizierungsstufe zu aktivieren.

(%1 – Anwendungspfad, %2 – Anwendungs-PID, %3 – CLSID der COM-Klasse, die die Anwendung zur Aktivierung anfordert, %4 – Computername, %5 – Wert der Authentifizierungsebene)

Diese Events werden auf folgenden Systemen zur Verfügung stehen sofern folgende KBs installiert worden sind.

Windows-VersionVerfügbar an oder nach diesen Datumsangaben
Windows Server 202227. September 2021

KB5005619
Windows 10, Version 2004, Windows 10, Version 20H2, Windows 10, Version 21H1, Windows 10, Version 21H21. September 2021

KB5005101
Windows 10, Version 190926. August 2021

KB5005103
Windows Server 2019, Windows 10, Version 180926. August 2021

KB5005102
Windows Server 2016, Windows 10, Version 160714. September 2021

KB5005573
Windows Server 2012 R2 und Windows 8.112. Oktober 2021

KB5006714

Welche Security Provider stehen zur Verfügung?

NameWertSecurity Provider
RPC_C_AUTHN_NONE0x00No Authentication
RPC_C_AUTHN_GSS_NEGOTIATE0x09SPNEGO
RPC_C_AUTHN_WINNT0x0ANTLM
RPC_C_AUTHN_GSS_SCHANNEL0x0ETLS
RPC_C_AUTHN_GSS_KERBEROS0x10Kerberos
RPC_C_AUTHN_NETLOGON0x44Netlogon
RPC_C_AUTHN_DEFAULT0xFFgleich wie RPC_C_AUTHN_WINNT

Zusammenstellung weiterer Authentication Levels

NameWertBedeutung
RPC_C_AUTHN_LEVEL_DEFAULT0x00ist wie RPC_C_AUTHN_LEVEL_CONNECT
RPC_C_AUTHN_LEVEL_NONE0x01keine Authentifizierung
RPC_C_AUTHN_LEVEL_CONNECT0x02Authentifiziert die Anmeldeinformationen des Clients und des Servers
RPC_C_AUTHN_LEVEL_CALL0x03ist wie RPC_C_AUTHN_LEVEL_PKT
RPC_C_AUTHN_LEVEL_PKT0x04ist wie RPC_C_AUTHN_LEVEL_CONNECT, verhindert aber auch Replay-Angriffe
RPC_C_AUTHN_LEVEL_PKT_INTEGRITY0x05ist wie RPC_C_AUTHN_LEVEL_PKT, aber überprüft auch, dass keine der zwischen Client und Server übertragenen Daten geändert wurde
PC_C_AUTHN_LEVEL_PKT_PRIVACY0x06ist wie RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, stellt aber zusätzlich sicher, dass die übertragenen Daten nur unverschlüsselt vom Client und vom Server eingesehen werden können.

Dieses Diagram zeigt den Zustand einer RPC-Verbindung clientseitig an.

Dieses Diagram zeigt dem Zustand einer RPC-Verbindung an clientseitig an

Dieses Diagram zeigt den Zustand einer RPC-Verbindung serverseitig an.

Dieses Diagram zeigt dem Zustand einer RPC-Verbindung an serverseitig an

Überprüfung der Authentifizierungsebene des Clients

Der Client kann die zu verwendende Ebene beim Herstellen einer Verbindung mit dem Server mithilfe der RpcBindingSetAuthInfo-API angeben, der Server kann jedoch nicht direkt die von ihm akzeptierte Mindestauthentifizierungsebene übergeben. Stattdessen kann der Rückruf (Callback) die RpcBindingInqAuthClient-API verwenden, um festzustellen, was der Client verwendet hat, und den Zugriff basierend darauf gewähren oder verweigern.

Die in der Regel eingesetzen Authentication Levels sind:

  • RPC_C_AUTHN_LEVEL_NONE
  • RPC_C_AUTHN_LEVEL_CONNECT
  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY
  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY