Windows UserChoice Protection Driver UCPD / UCPD.sys / UCPDMgr.exe

UCPD IsMicrosoftSigned IsInDenyList

Spätestens mit den März 2024 Updates dürfte Microsoft bei ziemlich allen Windows 10 und Windows 11 Editionen einen “UserChoice Protection Driver” (Kurz-Name “UCPD”) auf die Systeme aufgebracht haben.

Es handelt sich hierbei um einen Filter-Treiber, der den schreibenden Zugriff auf diverse “UserChoice” Registry-Keys unterbinden soll. Was “UserChoice” bedeutet habe ich vor vielen Jahren (im Jahr 2017) in diesem Blog-Post erläutert. Kurzfassung: es geht hierbei darum zu konfigurieren, welches Programm z.B. als Default-Browser (HTTP, HTTPS URL-Associations) bzw. z.B. als Default-PDF-Viewer (.pdf File-Extension) unter Windows konfiguriert ist.

Meiner Beobachtung und Recherchen nach dürfte dieser Treiber beginnend ab Jänner 2024 bis März 2024 in Wellen ausgerollt und aktiviert worden sein. Mittlerweile dürfte dieser zumindest auf allen “europäischen” Windows 10 & 11 Systemen vorhanden und aktiv sein.

Prüfung ob der “UserChoice Protection Driver” vorhanden ist bzw. läuft:

C:\>sc query ucpd

SERVICE_NAME: ucpd
        TYPE               : 2  FILE_SYSTEM_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Prüfung der Dienst-Konfiguration von UCPD … Start Type: SYSTEM_START (1)

C:\>sc qc ucpd
[SC] QueryServiceConfig ERFOLG

SERVICE_NAME: ucpd
        TYPE               : 2  FILE_SYSTEM_DRIVER
        START_TYPE         : 1   SYSTEM_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : system32\drivers\UCPD.sys
        LOAD_ORDER_GROUP   : FSFilter Activity Monitor
        TAG                : 0
        DISPLAY_NAME       : UCPD
        DEPENDENCIES       :
        SERVICE_START_NAME :

Auswirkungen am Beispiel SetUserFTA.exe

Dieser Filter-Treiber unterbindet, dass Software die nicht von Microsoft stammt schreibend auf diverse “UserChoice” Registry-Keys zugreifen können, ein Process-Monitor zeigt: ACCESS-DENIED.

Beispiel: Das populäre SetUserFTA-Tool von Christoph Kolbicz in bewährter Version 1.7 kann nun nicht mehr wie gewohnt zur Konfiguration des Default-PDF-Readers verwendet werden. Process-Monitor zeigt Access-Denied (obwohl die Rechte hierfür eigentlich unverändert vorhanden wären):

UCPD SetUserFTA.exe RegDeleteKey RegCreateKey ProcMon Access-Denied

Wie funktioniert dieser Filter-Treiber?

Der UCPD Filter-Treiber fügt sich auf einer definierten “Altitude” (“Höhe”) in das Gefüge der Microsoft (bzw. Dritthersteller-) Filter-Treiber ein, dies kann z.B. wie folgt geprüft werden:

C:\>fltMC.exe filters

Filtername                     Anzahl von Instanzen    Höhe    Frame
-----------------------------  --------------------    ----    -----
bindflt                                 1       409800         0
FsDepends                              13       407000         0
UCPD                                   15       385250.5       0
PROCMON24                               4       385200         0
WdFilter                               15       328010         0
storqosflt                              2       244000         0
wcifs                                   3       189900         0
CldFlt                                  4       180451         0
FileCrypt                               0       141100         0
luafv                                   1       135000         0
npsvctrig                               1        46000         0
Wof                                    12        40700         0
FileInfo                               15        40500         0

Den vollen Namen eines Filter-Treibers ermittelt man auf der CmdLine am schnellsten mittels “sc qc <DienstName>“:

  • bindflt … Windows Bind Filter Driver / FSFilter Top
  • FsDepends … File System Dependency Minifilter / FSFilter Top
  • UCPD … User Choice Protection Driver / FSFilter Activity Monitor
  • PROCMON24 … SysInternals Process Monitor
  • WdFilter … Microsoft Defender Antivirus-Minifiltertreiber / FSFilter Anti-Virus
  • storqosflt … QoS-Filter für Speicher – Treiber / FSFilter Quota Management
  • wcifs … Windows Container Isolation / FSFilter Virtualization
  • CldFlt … Windows Cloud Files Filter Driver / FSFilter HSM
  • FileCrypt … FileCrypt / FSFilter Encryption
  • luafv … UAC-Dateivirtualisierung / FSFilter Virtualization
  • npsvctrig … Named pipe service trigger provider
  • FileInfo … File Information FS MiniFilter / FSFilter Bottom

Welche Registry-Zugriffe unterbindet UCPD?

Praktische Tests und De-Assemblierung/De-Kompilierung sowie String-Analyse zeigen, dass augenscheinlich Lösch- und Schreib-Operationen auf folgende Registry-Keys derzeit unterbunden werden:

# SetProtectRuleOnStart Funktion setzt offenkundig Filter für folgende HKCU Registry-Keys:
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoiceLatest
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoicePrevious
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoiceLatest
Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoicePrevious
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoiceLatest
Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoicePrevious

# Nachtrag vom 08.04.2024: Auch die DeviceRegion ist von UCPD geschützt:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion\DeviceRegion

Welche Prozesse werden blockiert, bzw. welche Prozesse dürfen noch zugreifen?

Hier wird offenbar wie folgt vorgegangen: Es wird geprüft, ob es sich um ein Microsoft signiertes, zum Windows-Betriebssystem gehörendes File handelt, und dieses darf nicht auf der “DenyList” stehen:

UCPD - UserChoice Protection Driver, IsMicrosoftSigned und IsInDenyList Prüfung

Ob es sich um ein Microsoft-signiertes File handelt wird offenbar wie folgt geprüft:

UCPD - UserChoice Protection Driver, IsMicrosoftSigned Prüfung

Und hierfür allzu leicht geeignete Werkzeuge sind über eine DenyList ausgeschlossen:

UCPD - UserChoice Protection Driver, IsInDenyListPrüfung

Konkret handelt es sich hierbei in der mit März 2024 aktuellen UCPD.sys Version um folgende Microsoft Windows Prozesse:

# IsInDenyList Prozesse
*\dllhost.exe
*\reg.exe
*\rundll32.exe
*\powershell.exe
*\regedit.exe
*\wscript.exe
*\cscript.exe

Lässt sich der UserChoice Protection Driver deaktivieren?

Ja, allerdings nicht im laufenden Betrieb – dies wird verweigert (bzw. dies ist im Filter-Treiber nicht implementiert). Zur Deaktivierung muss daher die Startart auf “Deaktiviert” konfiguriert und Windows anschließend neu gestartet werden. Danach läuft der Treiber nicht mehr:

C:\>sc config UCPD start= disabled
[SC] ChangeServiceConfig ERFOLG

C:\>sc qc UCPD
[SC] QueryServiceConfig ERFOLG

SERVICE_NAME: UCPD
        TYPE               : 2  FILE_SYSTEM_DRIVER
        START_TYPE         : 4   DISABLED
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : system32\drivers\UCPD.sys
        LOAD_ORDER_GROUP   : FSFilter Activity Monitor
        TAG                : 0
        DISPLAY_NAME       : UCPD
        DEPENDENCIES       :
        SERVICE_START_NAME :

OK, Deaktivieren klappt – aber der Treiber reaktiviert sich wieder!

Ja, diese Beobachtung ist korrekt. Microsoft hat einen TaskPlaner-Job Namens “Microsoft \ Windows \ AppxDeplomentClient \ UCPD velocity” hinterlegt, der nach jeder Benutzer-Anmeldung und 10min Idle-Time des System durch Aufruf des “UCPDMgr.exe” den Treiber wieder rekonfiguriert. Achtung: Dieser TaskPlaner-Job ist nur mit Administrator-Rechten (nicht mit User-Rechten) sichtbar!

Um eine Reaktivierung von UCPD zu verhindern muss also auch dieser TaskPlaner-Job deaktiviert werden:

C:\>schtasks.exe /change /Disable /TN "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity"
ERFOLGREICH: Die Parameter der geplanten Aufgabe "\Microsoft\Windows\AppxDeploymentClient\UCPD velocity" wurden geändert.

UCPDMgr.exe prüft und korrigiert offenkundig folgendes:

  • Start-Art des Dienstes “SYSTEM_START” … wenn nicht korrekt wird diese Konfiguration hergestellt
  • Wert des Registry-Keys HKLM\SYSTEM\CurrentControlSet\Services\UCPD\FeatureV2 … wird auf “2” konfiguriert sofern nicht gesetzt.
  • Läuft der Dienst? Wenn nein wird dieser gestartet. Ein Starten des Filter-Treibers ist jederzeit im laufenden Betrieb möglich, ein Beenden hingegen nicht – hierfür muss wie oben bereits erläutert die Startart auf DISABLED konfiguriert und Windows neu gestartet werden.
Registry: HKLM\SYSTEM\CurrentControlSet\Services\UCPD => "FeatureV2" => "2"

Was hat es mit “FeatureV2” auf sich?

Offenbar besteht mittels des “FeatureV2” Setting die Möglichkeit den Filter-Treiber in einen nicht-wirksamen Modus zu schalten. Getesteter Weise wird auch bei gestartetem Filter-Treiber und “FeatureV2” Wert “0” kein Zugriff blockiert, während mit Wert “2” sich der Filter-Treiber blockierend wie beschrieben verhält.

Achtung: Dieser FeatureV2 Wert wird nur beim Filter-Treiber-Start ausgelesen, eine Änderung bedingt zum Test also einen Neustart von Windows.

Gibt es Möglichkeiten den Filter-Treiber zu umgehen?

Ja, neben der Deaktivierung bestehen zahlreiche Schlupflöcher wie der Filter-Treiber umgangen werden kann … aber dies zu behandeln ist vorerst nicht Teil dieses Blog-Posts 😁.

Wozu macht Microsoft das?

Nun ja, darüber kann man – in Ermangelung von Dokumentation seitens Microsoft – nur spekulieren. Best Guess:

  • Um zu verhindern, dass Software wie z.B. Adobe Reader, Firefox, Chrome sich selbst als “Default-Anwendung” konfigurieren kann.
  • Um zu verhindern, dass Administratoren mit Tools wie z.B. SetUserFTA.exe das System für den Benutzer passend vorkonfigurieren bzw. gescriptet rekonfigurieren.
  • Um damit Auflagen der EU betreffend “Unfair Commercial Practices Directive” (man beachte, dass diese EU-Richtlinie ebenfalls die Abkürzung UCPD trägt!) umzusetzen … und zwar vermutlich in einer Art und Weise, die es nur noch dem Benutzer interaktiv mittels Wizzard bzw. Explorer erlaubt diese Auswahl welche Default-Programme genutzt werden sollen festzulegen.

Betroffene Anwendungsfälle & Anwender-Feedback

Weiterführende Informationen

Medienberichterstattung (Auszug)

  • Am 07.04.2024 erschien von BleepingComputer im Wesentlichen ein WriteUp des Blog-Posts von Christoph Kolbicz inklusive Verweis auf meinen Blog-Post hier. Neue Erkenntnisse liefert der Artikel jedoch keine, Microsoft wurde demnach zwar gebeten eine Stellungnahme abzugeben, wollte sich jedoch angeblich nicht äußern.
  • Basierend auf dem Artikel von BleepingComputer erschienen in weiterer Folge zig (teils offenbar automatisiert ins Spanische, Portugiesische, Chinesische etc… übersetze) Kopien, viele davon finden sich in der Liste der PingBacks unten. Neue Erkenntnisse hieraus ergeben sich daraus aber freilich keine.
  • Am 08.04.2024 berichtet nun auch ghacks.net hierüber, auch dieser Artikel ist eine Wiedergabe der bereits bekannten Erkenntnisse.
  • Ebenfalls am 08.04.2024 berichtet nun auch Neowin.com hierüber, auch dieser Artikel ist eine Zusammenfassung der bereits beschriebenen Erkenntnisse.
  • Ebenfalls am 08.04.2024 berichtet auch techzine.eu, der Artikel fasst den Stand der Dinge recht akkurat zusammen.
  • Am 09.04.2024 berichtet das Schweizer IT-Magazine hierüber, auch dieser Artikel ist eine Wiedergabe der bereits bekannten Erkenntnisse.
  • Am 09.04.2024 berichtet nun auch Heise hierüber, wenngleich der Redakteur den Sachverhalt nur partiell wiedergibt.

Schutz der DeviceRegion & mögliches Uninstall des Edge-Browsers in der EU (Nachtrag vom 08.04.2024)

Der Microsoft Edge Browser ließ sich seit ca. Juni 2023 nicht mehr deinstallieren. Microsoft lässt mittlerweile die DeInstallation (z.B. mittels MSIEXEC oder über die Systemsteuerung/Software) des Edge-Browsers zwar wieder zu, allerdings nur wenn das Gerät in einem Land der EU lokalisiert ist. Geprüft wird dies über den Registry-Key HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\DeviceRegion\DeviceRegion … wenn dieser z.B. einen Wert von 0x0000000e (Dezimal 14) = Österreich/Austria oder Hex 0x0000005e (Dezimal 94) für Deutschland aufweist, dann ist eine DeInstallation möglich. Wert 0x000000f4 (Dezimal 244) = USA lässt hingegen kein Entfernen des Edge-Browsers zu. Es muss sich also um eine DeviceRegion eines EU-Landes handeln.

Und auch dieser DeviceRegion Registry-Key kann nicht so einfach automatisiert geändert werden, da dieser vom UserChoice Protection Driver ucpd.sys geschützt wird!

Die VMWare-Lösung VMWare-DEM-FTA-stub.dll (Nachtrag vom 11.04.2024)

Ich habe oben ja bereits angedeutet, dass es freilich zahlreiche Schlupflöcher gibt um den Filter-Treiber zu umgehen. Ein relativ billiges Schlupfloch hat VMWare gewählt. Da dieses nun ohnehin allgemein bekannt ist (Patch ist allgemein verfügbar), kann ich dieses somit auch hier öffentlich kommentieren:

Wie oben notiert hat VMWare mit Einführung des UCPD-Treibers dieses Problem hier: VMWare Dynamic Environment Manager – Issue with DEM FTA and Default Browser settings.

Als Lösung hat VMWare am 11.04.2024 nun UCPD-fix-KB-97169 bereitgestellt. Wie funktioniert dieser?

VMWare stellt eine vmware-dem-fta-stub.dll bereit. Ausgeführt wird diese von UCPD-fix.exe

Hierzu wird die von Microsoft signierte rundll.exe nach UCPD-fix.exe kopiert. Da dieses File Microsoft signiert ist, wird es vom UCPD-Filtertreiber für den Zugriff zugelassen. Da es nicht mehr rundll.exe heißt, ist es nicht in der oben erläuterten IsInDenyList enthalten, darf die Registry-Keys daher ändern.

You May Also Like

38 Comments

  1. “Ja, neben der Deaktivierung bestehen zahlreiche Schlupflöcher wie der Filter-Treiber umgangen werden kann”

    Wie denn zum Beispiel?
    Muss keine genaue Beschreibung sein, ein paar Stichworte bzw. Ideen würden schon genügen

    1. Danke für das Interesse. Hinweise wie der Filter-Treiber arbeitet und welche Operationen daher für welche Prozesse blockiert werden finden sich ja bereits in diesem Blog-Post. Weitere Details möchte ich an dieser Stelle aber nicht veröffentlichen. Ich denke wer darüber nachdenkt welche Operationen blockiert werden und ob es hierzu Alternativen gibt die daher nicht blockiert werden wird hierzu Ideen haben. Für konspirativen Austausch stehe ich nötigenfalls per E-Mail zur Verfügung

  2. Der folgende Satz ist falsch:

    “Er war es auch, der bereits im Februar 2023 die Existenz und Wirkungsweise des UserChoice Protection Drivers entdeckte .”

    Es sei denn er hat sich am 23. Februar 2024 entschieden, über eine Entdeckung zu twittern, die er exakt ein Jahr zuvor gemacht hatte.

  3. You can delete the driver in safe mode. I would use everything search to look for all instances of upcd.sys and delete them all, problem solved.

    Now that you tracked this issue, maybe you can find how to disable driver signature enforcement in this build, they changed the old way of patching ci.dll, that no longer works, and neither does the advanced boot options.
    thanks in advance.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert