Hallo,
Aus Sicherheitsgründen möchte ich verhindern, dass DLLs standardmäßig aus meinem Anwendungsverzeichnis geladen werden. Ich würde mein Applikationsverzeichnis nicht ausschliessen, aber bevorzugt mit System32 usw. beginnen um eventuelles DLL side loading im Applikationsverzeichnis zu verhindern.
Ich habe schon einiges (eigentlich sehr viel) im Netz gesucht, aber irgendwie keine Lösung gefunden. Auch DefaultDllImportSearchPaths mit DllImportSearchPath hat mich da nicht weitergebracht, da hier kein Parameter da ist, der z.B. System32 priorisiert.
Wenn ich mit Process Monitor mitschaue, wird z.B. immer CRYPTBASE.dll im Anwendungsverzeichnis zuerst gesucht. Auch wenn ich die Authenticode Signatur von der Microsoft DLL testweise entferne, wird die DLL auch genutzt, wenn ich sie vom System32 Verzeichnis ins Anwendungsverzeichnis kopiere.
Habe da auch schon in Richtung SetDllDirectory (erfolglos) getestet, ich vermute, das ist aber zu spät, da wird schon auf die DLL zugegriffen. Wenn ich sicherstellen könnte, dass nur signierte DLLs geladen werden, wäre das vielleicht auch eine Variante.
Hat da jemand eine Idee bzw. einen Ansatz, in welche Richtung ich da suchen muss?
Aus Sicherheitsgründen möchte ich verhindern, dass DLLs standardmäßig aus meinem Anwendungsverzeichnis geladen werden. Ich würde mein Applikationsverzeichnis nicht ausschliessen, aber bevorzugt mit System32 usw. beginnen um eventuelles DLL side loading im Applikationsverzeichnis zu verhindern.
Ich habe schon einiges (eigentlich sehr viel) im Netz gesucht, aber irgendwie keine Lösung gefunden. Auch DefaultDllImportSearchPaths mit DllImportSearchPath hat mich da nicht weitergebracht, da hier kein Parameter da ist, der z.B. System32 priorisiert.
Wenn ich mit Process Monitor mitschaue, wird z.B. immer CRYPTBASE.dll im Anwendungsverzeichnis zuerst gesucht. Auch wenn ich die Authenticode Signatur von der Microsoft DLL testweise entferne, wird die DLL auch genutzt, wenn ich sie vom System32 Verzeichnis ins Anwendungsverzeichnis kopiere.
Habe da auch schon in Richtung SetDllDirectory (erfolglos) getestet, ich vermute, das ist aber zu spät, da wird schon auf die DLL zugegriffen. Wenn ich sicherstellen könnte, dass nur signierte DLLs geladen werden, wäre das vielleicht auch eine Variante.
Hat da jemand eine Idee bzw. einen Ansatz, in welche Richtung ich da suchen muss?