Windows mit SAFER absichern

Mit Software Restriction Policies (SRP bzw. „SAFER“) läßt sich festlegen, welche Programme unter Windows ausgeführt bzw. nicht ausgeführt werden dürfen. Insbesondere läßt sich SAFER verwenden, um die Ausführung von Schadprogrammen zuverlässig zu verhindern.

SAFER ist in allen Windows-Versionen ab XP eingebaut und muß lediglich konfiguriert werden.

SAFER-Konfiguration einrichten

SAFER wird stets über die Windows-Registry konfiguriert. Man muß aber nicht mit regedit.exe arbeiten, sondern kann die Registry-Einträge auch folgendermaßen erstellen:

Stefan Kanthaks *_SAFER.INF

Stefan Kanthak stellt unter dem Namen *_SAFER.INF mehrere Installationsskripte bereit, die sinnvolle und erprobte SAFER-Regeln automatisch in die Windows-Registry eintragen:

Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Nur Benutzer werden eingeschränktXP_SAFER.INFNT6_SAFER.INF
Auch Administratoren werden eingeschränktXP_SUPER.INFNT6_SUPER.INF

*_SAFER.INF konfiguriert Windows so, daß Benutzer (also Nicht-Administratoren) Programme nur dort ausführen dürfen, wo sie keine Schreibrechte haben. Ein Benutzer kann somit ein Schadprogramm nicht zur Ausführung bringen, selbst wenn er wollte – wo er es ablegen kann, darf er es nicht ausführen, und wo er es ausführen dürfte, darf er es nicht ablegen.

*_SAFER.INF sollte man sich übrigens auch anschauen, wenn man lieber eigene Regeln mit secpol.msc oder direkt in der Registry erstellen möchte, denn Stefans Kommentare darin sind eine vorzügliche Dokumentation für SAFER.

Meine Basiskonfiguration

SAFER kann man mit wenigen Einträgen in der Registry konfigurieren, die gut als Basis für eigene Erweiterungen dienen können:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers]
"AuthenticodeEnabled"=dword:00000000
"Levels"=dword:00031000
"DefaultLevel"=dword:00000000
"TransparentEnabled"=dword:00000002
"PolicyScope"=dword:00000001
;Definiert ausführbare Dateien anhand ihrer Dateierweiterung: 
;XLL WSH WSF WSC WPC WLL VCM VBS VBE VB TSP SHS SCT SCR PS1 PIF PCD OCX MUI 
;MST MSP MSI MSC MDE MDB JSE JS JOB ISP INS IME HTC HTA HLP EXE DS DRV DLL 
;CRT CPL COM CMD CHM BAT BAS AX ADP ADE ACM
"ExecutableTypes"=hex(7):58,00,4c,00,4c,00,00,00,57,00,53,00,48,00,00,00,57,00,\
  53,00,46,00,00,00,57,00,53,00,43,00,00,00,57,00,50,00,43,00,00,00,57,00,4c,\
  00,4c,00,00,00,56,00,43,00,4d,00,00,00,56,00,42,00,53,00,00,00,56,00,42,00,\
  45,00,00,00,56,00,42,00,00,00,54,00,53,00,50,00,00,00,53,00,48,00,53,00,00,\
  00,53,00,43,00,54,00,00,00,53,00,43,00,52,00,00,00,50,00,53,00,31,00,00,00,\
  50,00,49,00,46,00,00,00,50,00,43,00,44,00,00,00,4f,00,43,00,58,00,00,00,4d,\
  00,55,00,49,00,00,00,4d,00,53,00,54,00,00,00,4d,00,53,00,50,00,00,00,4d,00,\
  53,00,49,00,00,00,4d,00,53,00,43,00,00,00,4d,00,44,00,45,00,00,00,4d,00,44,\
  00,42,00,00,00,4a,00,53,00,45,00,00,00,4a,00,53,00,00,00,4a,00,4f,00,42,00,\
  00,00,49,00,53,00,50,00,00,00,49,00,4e,00,53,00,00,00,49,00,4d,00,45,00,00,\
  00,48,00,54,00,43,00,00,00,48,00,54,00,41,00,00,00,48,00,4c,00,50,00,00,00,\
  45,00,58,00,45,00,00,00,44,00,53,00,00,00,44,00,52,00,56,00,00,00,44,00,4c,\
  00,4c,00,00,00,43,00,52,00,54,00,00,00,43,00,50,00,4c,00,00,00,43,00,4f,00,\
  4d,00,00,00,43,00,4d,00,44,00,00,00,43,00,48,00,4d,00,00,00,42,00,41,00,54,\
  00,00,00,42,00,41,00,53,00,00,00,41,00,58,00,00,00,41,00,44,00,50,00,00,00,\
  41,00,44,00,45,00,00,00,41,00,43,00,4d,00,00,00,00,00

;Erlaubt die Ausführung im Verzeichnis %SystemRoot%, typischerweise C:\Windows
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{191cd7fa-f240-4a17-8986-94d480a6c8ca}]
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,4c,00,4f,00,43,00,41,00,\
  4c,00,5f,00,4d,00,41,00,43,00,48,00,49,00,4e,00,45,00,5c,00,53,00,6f,00,66,\
  00,74,00,77,00,61,00,72,00,65,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,\
  6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4e,\
  00,54,00,5c,00,43,00,75,00,72,00,72,00,65,00,6e,00,74,00,56,00,65,00,72,00,\
  73,00,69,00,6f,00,6e,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
  00,6f,00,74,00,25,00,00,00

;Erlaubt die Ausführung im Verzeichnis %ProgramFiles%, typischerweise C:\Program Files
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{d2c34ab2-529a-46b2-b293-fc853fce72ea}]
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,4c,00,4f,00,43,00,41,00,\
  4c,00,5f,00,4d,00,41,00,43,00,48,00,49,00,4e,00,45,00,5c,00,53,00,6f,00,66,\
  00,74,00,77,00,61,00,72,00,65,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,\
  6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,43,\
  00,75,00,72,00,72,00,65,00,6e,00,74,00,56,00,65,00,72,00,73,00,69,00,6f,00,\
  6e,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,\
  00,73,00,44,00,69,00,72,00,25,00,00,00

safer-base.reg herunterladen (für 32-Bit-Systeme)

safer-base-x64.reg herunterladen (für 64-Bit-Systeme)

Damit werden nur Programme unterhalb von

zugelassen, alle Programme außerhalb dieser Pfade hingegen verboten. Diese Einschränkung gilt außerdem nur für eingeschränkte Benutzer, d.h. Administratoren werden nicht beeinträchtigt. Falls es dadurch wider Erwarten zu Problemen kommt, können die SAFER-Restriktionen genauso einfach wieder aufgehoben werden; SAFER nimmt am System ansonsten keine Änderungen vor. Die Bedeutung der einzelnen Registry-Einträge hat Microsoft dokumentiert.

Leider gibt es unterhalb von C:\WINDOWS Verzeichnisse, in die Benutzer schreiben dürfen. Korrekterweise verbietet *_SAFER.INF in derartigen Verzeichnissen die Ausführung von Programmen durch entsprechende Verbots-Regeln. Meine Basiskonfiguration verzichtet aus Gründen der Übersichtlichkeit darauf.

SAFER-Konfiguration anpassen

Log erstellen und durchsuchen

Windows kann das Ergebnis der Auswertung der SAFER-Regeln protokollieren. Das ist vor allem dann sinnvoll, wenn ein Programm von SAFER unerwünschterweise blockiert wird. Mit diesem Registry-Eintrag etwa wird das Logging aktiviert und der Pfad der Log-Datei auf C:\SAFER.log festgelegt:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers]
"LogFileName"="c:\\SAFER.log"

safer-log.reg herunterladen

Das Logging findet im aufrufenden Prozeß statt, deshalb muß man auch der Gruppe Benutzer Schreibrechte für die Datei C:\SAFER.log erteilen, andernfalls findet kein Logging statt. (Es wäre attraktiv, den Pfad zum Logfile etwa mittels %USERPROFILE%\SAFER.log benutzerabhängig festzulegen, aber SAFER wertet an dieser Stelle leider keine Variablen aus.)

Ich persönlich lasse das SAFER-Logging permanent eingeschaltet und leere die Datei einfach, wenn sie zu groß wird. Es ist möglicherweise auch sinnvoll, für die Log-Datei NTFS-Kompression zu aktivieren; dadurch wird die physikalische Größe der Datei typischerweise auf ein Viertel verringert.

Die Log-Datei ist UTF-16-codiert, so daß man sie etwa mit findstr.exe nicht sinnvoll durchsuchen kann. Mit PowerShell geht es besser, von SAFER blockierte Dateien findet man etwa so:

Get-Content -Path 'C:\SAFER.log' | Where-Object { $_ -notmatch ' as Unrestricted ' };

Oder in kompakter Form:

gc 'C:\SAFER.log' | where { $_ -notmatch ' as Unrestricted ' };

GUID erstellen

Wenn man neue Regeln direkt in die Registry schreiben will, benötigt man im Schlüsselnamen eine beliebige, aber eindeutige GUID. Mit PowerShell läßt sich eine neue GUID bequem erstellen:

"{{{0}}}" -f [System.GUID]::NewGuid()

Die Ausgabe kann man mit der Maus markieren und mit der rechten Maustaste bequem in die Zwischenablage befördern.

Regeln aktualisieren

Der aufrufende Prozeß übernimmt bei SAFER die Regelauswertung (und auch das Logging). Typischerweise lädt der aufrufende Prozeß die SAFER-Regeln nur einmalig aus der Registry; Änderungen an den SAFER-Regeln, die nach dem Start des aufrufenden Prozesses vorgenommen wurden, werden deshalb nicht wirksam. Das ist problematisch beim Prozeß explorer.exe, der für Desktop und Startmenü zuständig ist.

Um geänderte Regeln schnell zu testen, starte ich eine neue Shell (cmd.exe) und rufe darin das gewünschte Programm auf.

Beschränkungen der Länge von Pfad-Regeln

Pfad-Regeln dürfen nur höchstens 133 Zeichen lang sein. Längere Regeln werden nicht ausgewertet. Ggf. kann man Teile des Pfades durch * ersetzen.

Richtig (131 Zeichen):%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local AppData%Google/*/*/*/*/pepflashplayer.dll
Falsch (164 Zeichen):%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local AppData%Google/Chrome/User Data/PepperFlash/11.5.31.139/pepflashplayer.dll

secpol.msc kann ebenfalls nicht korrekt mit Pfaden umgehen, die länger als 133 Zeichen sind. Solche Regeln lassen sich zwar mit secpol.msc erstellen, und sie werden auch in die Registry übernommen (aber dort ohnehin nicht ausgewertet). Die Regeln werden jedoch gar nicht mehr angezeigt, wenn man secpol.msc erneut öffnet.

Korrekte Trennzeichen

In registry path rules können Registry-Variablen mit literalen Pfadsegmenten kombiniert werden. Im Widerspruch zur Dokumentation müssen die Pfadsegmente dabei mit / getrennt werden, nicht mit \:

Richtig:%HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SystemRoot%System32/RunAs.Exe
Falsch:%HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SystemRoot%System32\RunAs.Exe

SAFER-Restriktionen aufheben

In speziellen Situationen kann es notwendig sein, die SAFER-Restriktionen vorübergehend aufzuheben. Dies kann man erreichen, indem man den Registry-Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer bspw. in _Safer umbenennt. Prozesse, die anschließend gestartet werden, sind nicht mehr durch SAFER eingeschränkt.

Einzelne Regeln kann man deaktivieren, indem man den entsprechenden ItemData-Wert bspw. in _ItemData umbenennt.

SAFER und AppLocker

AppLocker funktioniert nur in folgenden Windows-Versionen:

SAFER hingegen funktioniert in allen Windows-Versionen ab XP!

SAFER-Regeln werden auf den o.g. Systemen vollständig ignoriert, sobald die erste AppLocker-Regel erstellt wird.

Hash-Regeln für DLLs

Unter Windows XP funktionieren Hash-Regeln nicht für DLLs.

Pfad-Regeln mit Dateierweiterung

Pfad-Regeln (etwa für C:\WINDOWS) wirken rekursiv auch auf alle Unterverzeichnisse.

Das gilt jedoch nicht, wenn die Regel eine Dateierweiterung enthält. Eine Pfad-Regel für C:\WINDOWS\system32\*.dll würde deshalb zwar auf C:\WINDOWS\system32\MSCTF.dll wirken, aber nicht auf C:\WINDOWS\system32\wbem\cimwin32.dll. Wenn man eine Dateierweiterung angibt, braucht man also für jedes Unterverzeichnis eine eigene Regel.

Gefährliche Verzeichnisse finden

Leider gibt es unter C:\WINDOWS – bei Windows XP etliche, aber auch bei Windows 8 noch einige wenige – Verzeichnisse, in die Benutzer schreiben dürfen; unter Windows 7 ist bspw. das Verzeichnis C:\Windows\debug\WIA für Benutzer beschreibar. Außerdem kann im Prinzip jedes Programm bei der Installation Verzeichnisse unter C:\Windows anlegen und diese für Benutzer beschreibbar machen. Solche Verzeichnisse sollte man mit einer entsprechenden Pfadregel explizit ausschließen, denn andernfalls könnte ein Benutzer dort ausführbare Dateien ablegen und tatsächlich zur Ausführung bringen. Dabei können folgende Fälle auftreten:

Die Datei kann gar nicht erst erstellt werden.Harmlos
Die Datei kann erstellt werden, aber wegen ACLs nicht ausgeführt werden.Harmlos
Die Datei kann erstellt werden, aber wegen SAFER-Regeln nicht ausgeführt werden.Harmlos
Die Datei kann erstellt und ausgeführt werden.Gefährlich

Dieses PowerShell-Skript versucht, solche gefährlichen Verzeichnisse aufzuspüren:

# Möglichst zufälligen Dateinamen wählen.
$executableFilename = 'psancxtqkbgfomb.cmd';

# Bei Fehlern einfach fortsetzen.
$ErrorActionPreference = 'SilentlyContinue';

Get-ChildItem $env:windir -Recurse -Force | Where-Object { $_.PSIsContainer } | ForEach-Object {
    $currentFolder = $_.Fullname;
    $executableFilepath = (Join-Path $currentFolder $executableFilename);

    # Datei mit trivialem Inhalt erstellen.
    New-Item -Path $executableFilepath -ItemType file -Value "@echo off" | Out-Null;

    if ($?) {
        # Mehr Rechte für die neue Datei.
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule ("BUILTIN\Users", "ExecuteFile", "Allow");
        $acl = Get-ACL -Path $executableFilepath;
        $acl.AddAccessRule($rule);
        Set-ACL -Path $executableFilepath -AclObject $acl;

        # Datei ausführen.
        & $executableFilepath;

        if ($?) {
            Write-Host $currentFolder -BackgroundColor Red;
        }

        # Angelegte Datei wieder löschen.
        Remove-Item -Path $executableFilepath;
    }
}

find-unsafe-dirs.ps1 herunterladen

Führen Sie dieses Skript mit Benutzerrechten aus. Das Skript versucht, seine Dateien (psancxtqkbgfomb.cmd) wieder zu löschen, aber das klappt nicht überall. Die Überbleibsel muß ein Administrator entfernen.

Alle Programme in einem Verzeichnis durch Hash-Regeln freigeben

Ausnahmen, die per Hash-Regel definiert werden, sind typischerweise sicherer als solche, die per Pfad-Regel definiert werden. Sie sind aber auch umständlicher zu erstellen. Ein kleines PowerShell-Skript kann den Vorgang deutlich vereinfachen. Es gibt leider zwei Varianten, weil Windows XP MD5-Hashes verwendet, neuere Systeme hingegen SHA-1-Hashes:

function New-SaferHashRule {
    param (
        [String] $GuidPrefix = "ff00",
        [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
        [System.IO.FileInfo] $File
    )

    begin {
        Add-Type -AssemblyName System.Security;
        $crypto = [System.Security.Cryptography.HashAlgorithm]::Create('MD5');
    }

    process {
        $File.Fullname;
        $guid = $GuidPrefix + [System.Guid]::NewGuid().ToString().Substring($GuidPrefix.Length);
        $path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Hashes\{{{0}}}' -f $guid;
        New-Item -Path $path > $null;
        New-ItemProperty -Path $path -Name 'FriendlyName' -Value $File.Name > $null;
        New-ItemProperty -Path $path -Name 'Description' -Value $File.FullName > $null;
        New-ItemProperty -Path $path -Name 'ItemSize' -Value $File.Length -PropertyType QWord > $null;
        New-ItemProperty -Path $path -Name 'HashAlg' -Value 0x8003 -PropertyType DWord > $null;
        New-ItemProperty -Path $path -Name 'ItemData' -Value $crypto.ComputeHash([System.IO.File]::ReadAllBytes($File.FullName)) -PropertyType Binary > $null;
    }
}

New-SaferHashRule-XP.ps1 herunterladen

function New-SaferHashRule {
    param (
        [String] $GuidPrefix = "ff00",
        [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
        [System.IO.FileInfo] $File
    )

    begin {
        Add-Type -AssemblyName System.Security;
        $crypto = [System.Security.Cryptography.HashAlgorithm]::Create('SHA1');
    }

    process {
        $File.Fullname;
        $guid = $GuidPrefix + [System.Guid]::NewGuid().ToString().Substring($GuidPrefix.Length);
        $path = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Hashes\{{{0}}}' -f $guid;
        New-Item -Path $path > $null;
        New-ItemProperty -Path $path -Name 'FriendlyName' -Value $File.Name > $null;
        New-ItemProperty -Path $path -Name 'Description' -Value $File.FullName > $null;
        New-ItemProperty -Path $path -Name 'ItemSize' -Value $File.Length -PropertyType QWord > $null;
        New-ItemProperty -Path $path -Name 'HashAlg' -Value 0x8004 -PropertyType DWord > $null;
        New-ItemProperty -Path $path -Name 'ItemData' -Value $crypto.ComputeHash([System.IO.File]::ReadAllBytes($File.FullName)) -PropertyType Binary > $null;
    }
}

New-SaferHashRule-NT6.ps1 herunterladen

Der Aufruf ist jedoch in beiden Fällen identisch, etwa so:

dir -Include *.cmd,*.exe -Recurse | where { !$_.PSIsContainer } | New-SaferHashRule;

Damit wird für jede .cmd- und .exe-Datei im aktuellen Verzeichnis eine passende Hash-Regel erstellt. Über die Variable $GuidPrefix kann ein gemeinsames Präfix für alle GUIDs festgelegt werden, die das Skript erzeugt. Das erleichtert es, die Hash-Regeln wieder zu entfernen, wenn man sie nicht mehr benötigt.

Mythen

SAFER muß installiert werden.

SAFER ist in Windows bereits eingebaut. Es muß lediglich konfiguriert werden.

Mit SAFER kann man sich selber aussperren.

Typischerweise wird SAFER so eingerichtet, daß nur eingeschränkte Benutzer den Regeln unterliegen, nicht aber Administratoren. Im abgesicherten Modus werden die SAFER-Regeln ebenfalls nicht ausgewertet, so daß man stets einen Rettungsanker hat.

SAFER funktioniert nicht in den Home-Varianten von Windows.

SAFER funktioniert in allen Versionen ab Windows XP bis einschließlich Windows 8. In den Home-Varianten fehlt der Gruppenrichtlinien-Editor, aber SAFER-Regeln lassen sich in jedem Fall direkt in die Registry schreiben. Maßgeblich sind in allen Windows-Varianten ausschließlich die Registry-Einträge.

Wer mit eingeschränkten Rechten arbeitet (etwa mit UAC), braucht SAFER nicht.

Das Sicherheits-Placebo UAC soll verhindern, daß Programme mit Administratorrechten ausgeführt werden. UAC soll nicht verhindern, daß Programme mit Benutzerrechten ausgeführt werden. Schadsoftware benötigt aber keine Administratorrechte, um Benutzerdaten zu kompromittieren. Außerdem kann eine Schadsoftware, die mit Benutzerrechten läuft, versuchen, sich auch noch Administratorrechte zu verschaffen, bspw. durch Binary Planting.

UAC hindert Schadsoftware also nicht an der Ausführung, SAFER schon. Deshalb ist auch mit UAC der Einsatz von SAFER ratsam. UAC und SAFER können problemlos zusammen benutzt werden.

Verwirrend kann jedoch das Verhalten der sog. Installationserkennung sein, die dafür sorgen soll, daß Installationsprogramme wie setup.exe automatisch einen UAC-Dialog anzeigen, damit das Installationsprogramm mit Administratorrechten ausgeführt wird. Wenn SAFER einem Benutzer die Ausführung des Installationsprogramms verbietet, kann die Installationserkennung aber gar nicht mehr zum Zuge kommen. Es erscheint also kein UAC-Dialog, sondern bloß eine SAFER-Fehlermeldung. Starten Sie Installationsprogramme deshalb per Rechtsklick und Als Administrator ausführen. Nach Bestätigung wird das Programm unter dem Administratorkonto ausgeführt, und dieses ist ja typischerweise nicht durch SAFER-Regeln eingeschränkt.

SAFER eignet sich nicht für normale Anwender.

SAFER eignet sich gerade für Anwender, die nur mit den installierten Programmen arbeiten wollen. Software-Entwickler benötigen höchstwahrscheinlich zusätzliche Regeln, aber diese lassen sich leicht erstellen.

Nützliche SAFER-Ausnahmen

Manche Programme legen ausführbare Dateien im Profilverzeichnis (%USERPROFILE%) ab, wo diese eigentlich nichts zu suchen haben. Wenn man solche Programme mit SAFER verwenden will, muß man sie mit eigenen Regeln freigeben.

Die hier vorgestellten Regeln erlauben die Ausführung des jeweiligen Programms und ggf. der automatischen Updates, allerdings nicht die Erstinstallation – ich möchte nämlich vermeiden, zu viele Ausnahmen zu definieren. Für die Installation dieser Programme müssen die SAFER-Restriktionen deshalb vorübergehend aufgehoben werden.

Viele Regeln enthalten Registry-Variablen, um das Profilverzeichnis des jeweiligen Benutzers zu referenzieren. Registry-Variablen werden von SAFER nur dann aufgelöst, wenn sie im ItemData-Wert mit dem Datentyp REG_EXPAND_SZ notiert werden. REG_EXPAND_SZ-Werte wiederum lassen sich in .reg-Dateien nur binär darstellen. Um die Regel hier dennoch lesbar anzuzeigen, schreibe ich sie zusätzlich mit dem Datentyp REG_SZ in den Description-Wert. Maßgeblich für die Auswertung ist allein ItemData.

Manche Regeln verweisen mit Registry-Variablen auf die Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders oder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders. Das ist eigentlich eine ganz schlechte Idee, aber eine saubere Lösung, die unter allen Windows-Versionen funktioniert, gibt es leider nicht.

Google Chrome

Wird der Chrome-Installer mit Administratorrechten gestartet, so installiert sich Chrome neuerdings ordentlich nach %ProgramFiles% und steht dann allen Benutzern zur Verfügung. Das ist die bevorzugte Methode, und es werden dann keine SAFER-Ausnahmen benötigt.

Wenn Chrome allerdings ins Benutzerprofil installiert wird, werden mehrere Ausnahmen benötigt:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{28c898f7-b49a-4734-938a-487a4c3c70ab}]
"Description"="%HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\Local AppData%Google/Chrome/Application"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,53,00,6f,00,66,00,74,\
  00,77,00,61,00,72,00,65,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,\
  66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,43,00,75,\
  00,72,00,72,00,65,00,6e,00,74,00,56,00,65,00,72,00,73,00,69,00,6f,00,6e,00,\
  5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,5c,00,53,00,68,00,65,\
  00,6c,00,6c,00,20,00,46,00,6f,00,6c,00,64,00,65,00,72,00,73,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,20,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,25,\
  00,47,00,6f,00,6f,00,67,00,6c,00,65,00,2f,00,43,00,68,00,72,00,6f,00,6d,00,\
  65,00,2f,00,41,00,70,00,70,00,6c,00,69,00,63,00,61,00,74,00,69,00,6f,00,6e,\
  00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{28c898f7-b49a-4734-938a-487a4c3c70ac}]
"Description"="%HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\Local AppData%Google/Update"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,53,00,6f,00,66,00,74,\
  00,77,00,61,00,72,00,65,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,\
  66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,43,00,75,\
  00,72,00,72,00,65,00,6e,00,74,00,56,00,65,00,72,00,73,00,69,00,6f,00,6e,00,\
  5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,5c,00,53,00,68,00,65,\
  00,6c,00,6c,00,20,00,46,00,6f,00,6c,00,64,00,65,00,72,00,73,00,5c,00,4c,00,\
  6f,00,63,00,61,00,6c,00,20,00,41,00,70,00,70,00,44,00,61,00,74,00,61,00,25,\
  00,47,00,6f,00,6f,00,67,00,6c,00,65,00,2f,00,55,00,70,00,64,00,61,00,74,00,\
  65,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{28c898f7-b49a-4734-938a-487a4c3c70ad}]
"Description"="%HKEY_CURRENT_USER\\Environment\\TEMP%CR_*.tmp/setup.exe"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,45,00,6e,00,76,00,69,\
  00,72,00,6f,00,6e,00,6d,00,65,00,6e,00,74,00,5c,00,54,00,45,00,4d,00,50,00,\
  25,00,43,00,52,00,5f,00,2a,00,2e,00,74,00,6d,00,70,00,2f,00,73,00,65,00,74,\
  00,75,00,70,00,2e,00,65,00,78,00,65,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{28c898f7-b49a-4734-938a-487a4c3c70ae}]
"Description"="%HKEY_CURRENT_USER\\Environment\\TEMP%GUM*.tmp/*"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,45,00,6e,00,76,00,69,\
  00,72,00,6f,00,6e,00,6d,00,65,00,6e,00,74,00,5c,00,54,00,45,00,4d,00,50,00,\
  25,00,47,00,55,00,4d,00,2a,00,2e,00,74,00,6d,00,70,00,2f,00,2a,00,00,00

google-chrome.reg herunterladen

Silverlight mit PlayReady DRM Black Box-Plugin

Silverlight-Anwendungen laufen im Browser mit SAFER ohne Probleme. Für die Wiedergabe von DRM-geschützten Videos (etwa für das Video-on-Demand-Angebot bei LOVEFiLM) installiert Silverlight jedoch eine DLL ins Benutzerprofil! Von dort kann die DLL wegen SAFER nicht geladen werden. Diese Regel läßt die DLL anhand ihres Speicherortes unterhalb von %ALLUSERSPROFILE% und ihres Dateinamens MSPRindiv01.key zu:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{0144f22c-74c0-4391-806a-3498730f0670}]
"Description"="%HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\Common AppData%Microsoft/PlayReady/Cache/*/MSPRindiv01.key"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,4c,00,4f,00,43,00,41,00,\
  4c,00,5f,00,4d,00,41,00,43,00,48,00,49,00,4e,00,45,00,5c,00,53,00,4f,00,46,\
  00,54,00,57,00,41,00,52,00,45,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,\
  6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,43,\
  00,75,00,72,00,72,00,65,00,6e,00,74,00,56,00,65,00,72,00,73,00,69,00,6f,00,\
  6e,00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,5c,00,53,00,68,\
  00,65,00,6c,00,6c,00,20,00,46,00,6f,00,6c,00,64,00,65,00,72,00,73,00,5c,00,\
  43,00,6f,00,6d,00,6d,00,6f,00,6e,00,20,00,41,00,70,00,70,00,44,00,61,00,74,\
  00,61,00,25,00,2a,00,2f,00,50,00,6c,00,61,00,79,00,52,00,65,00,61,00,64,00,\
  79,00,2f,00,2a,00,2f,00,2a,00,2f,00,4d,00,53,00,50,00,52,00,69,00,6e,00,64,\
  00,69,00,76,00,30,00,31,00,2e,00,6b,00,65,00,79,00,00,00

silverlight-drm.reg herunterladen

Dropbox

Auch Dropbox installiert sich idiotischerweise ins Profilverzeichnis, braucht also ebenfalls eine Ausnahme:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{b45b6e4a-9d73-4d68-90c5-e40b61065881}]
"Description"="%HKEY_CURRENT_USER\\Volatile Environment\\APPDATA%Dropbox/bin/"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,56,00,6f,00,6c,00,61,\
  00,74,00,69,00,6c,00,65,00,20,00,45,00,6e,00,76,00,69,00,72,00,6f,00,6e,00,\
  6d,00,65,00,6e,00,74,00,5c,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,\
  00,44,00,72,00,6f,00,70,00,62,00,6f,00,78,00,2f,00,62,00,69,00,6e,00,2f,00,\
  00,00

dropbox.reg herunterladen

SkyDrive

Microsoft hat offenbar seine eigenen Designed for Windows-Richtlinien vergessen und installiert SkyDrive ins Profilverzeichnis:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{bdd01513-e725-414d-b5ce-bf0ea257f8ad}]
"Description"="%HKEY_CURRENT_USER\\Volatile Environment\\LOCALAPPDATA%Microsoft/SkyDrive/"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,56,00,6f,00,6c,00,61,\
  00,74,00,69,00,6c,00,65,00,20,00,45,00,6e,00,76,00,69,00,72,00,6f,00,6e,00,\
  6d,00,65,00,6e,00,74,00,5c,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,\
  00,44,00,41,00,54,00,41,00,25,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,\
  66,00,74,00,2f,00,53,00,6b,00,79,00,44,00,72,00,69,00,76,00,65,00,2f,00,00,\
  00

skydrive.reg herunterladen

Google Drive

Google Drive installiert sich zwar ins Programmverzeichnis, legt aber beim Start noch ausführbare Dateien im Profilverzeichnis an. Das ist ganz großer Mist und erfordert eine ziemlich großzügige und somit gefährliche Ausnahme:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{d4fb8a20-2fcb-4c10-b543-0ccc6ebfee74}]
"Description"="%HKEY_CURRENT_USER\\Environment\\TEMP%_MEI*/"
"ItemData"=hex(2):25,00,48,00,4b,00,45,00,59,00,5f,00,43,00,55,00,52,00,52,00,\
  45,00,4e,00,54,00,5f,00,55,00,53,00,45,00,52,00,5c,00,45,00,6e,00,76,00,69,\
  00,72,00,6f,00,6e,00,6d,00,65,00,6e,00,74,00,5c,00,54,00,45,00,4d,00,50,00,\
  25,00,5f,00,4d,00,45,00,49,00,2a,00,2f,00,00,00

google-drive.reg herunterladen