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.
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 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-ID | Meldung |
---|---|
Server 10036 | Die 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 10037 | Anwendung %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 10038 | Anwendung %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-Version | Verfügbar an oder nach diesen Datumsangaben |
---|---|
Windows Server 2022 | 27. September 2021 KB5005619 |
Windows 10, Version 2004, Windows 10, Version 20H2, Windows 10, Version 21H1, Windows 10, Version 21H2 | 1. September 2021 KB5005101 |
Windows 10, Version 1909 | 26. August 2021 KB5005103 |
Windows Server 2019, Windows 10, Version 1809 | 26. August 2021 KB5005102 |
Windows Server 2016, Windows 10, Version 1607 | 14. September 2021 KB5005573 |
Windows Server 2012 R2 und Windows 8.1 | 12. Oktober 2021 KB5006714 |
Welche Security Provider stehen zur Verfügung?
Name | Wert | Security Provider |
---|---|---|
RPC_C_AUTHN_NONE | 0x00 | No Authentication |
RPC_C_AUTHN_GSS_NEGOTIATE | 0x09 | SPNEGO |
RPC_C_AUTHN_WINNT | 0x0A | NTLM |
RPC_C_AUTHN_GSS_SCHANNEL | 0x0E | TLS |
RPC_C_AUTHN_GSS_KERBEROS | 0x10 | Kerberos |
RPC_C_AUTHN_NETLOGON | 0x44 | Netlogon |
RPC_C_AUTHN_DEFAULT | 0xFF | gleich wie RPC_C_AUTHN_WINNT |
Zusammenstellung weiterer Authentication Levels
Name | Wert | Bedeutung |
---|---|---|
RPC_C_AUTHN_LEVEL_DEFAULT | 0x00 | ist wie RPC_C_AUTHN_LEVEL_CONNECT |
RPC_C_AUTHN_LEVEL_NONE | 0x01 | keine Authentifizierung |
RPC_C_AUTHN_LEVEL_CONNECT | 0x02 | Authentifiziert die Anmeldeinformationen des Clients und des Servers |
RPC_C_AUTHN_LEVEL_CALL | 0x03 | ist wie RPC_C_AUTHN_LEVEL_PKT |
RPC_C_AUTHN_LEVEL_PKT | 0x04 | ist wie RPC_C_AUTHN_LEVEL_CONNECT, verhindert aber auch Replay-Angriffe |
RPC_C_AUTHN_LEVEL_PKT_INTEGRITY | 0x05 | ist 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_PRIVACY | 0x06 | ist 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 den Zustand einer RPC-Verbindung 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