Delphi und C++Builder in 11.1 aktivieren standardmäßig eine Reihe von PE-Sicherheitsflags für Windows-Anwendungen, von denen einige bereits verfügbar, aber etwas versteckt waren.
Delphi bietet seit langem Unterstützung für ASLR und einige der anderen empfohlenen Windows-Sicherheitsflags. In der aktuellen Version 11.1 hat Embarcadero die Verwendung dieser Flags sowohl in Delphi als auch in C++Builder vereinfacht, indem bestimmte Linker-Optionen angezeigt und standardmäßig aktiviert wurden und außerdem Pakete und Anwendungen erstellt wurden, die Teil von RAD Studio mit diesen aktivierten Flags sind .
Mehr zu diesen Windows PE-Flags
Datenausführungsverhinderung (DEP)
Ermöglicht dem System, eine oder mehrere Speicherseiten als nicht ausführbar zu markieren, wodurch verhindert wird, dass Code aus diesen Speicherbereichen ausgeführt wird, wodurch es schwieriger wird, Pufferüberläufe auszunutzen. Sie können mehr darüber in der Microsoft-Dokumentation hier nachlesen .
Adressraum-Layout-Randomisierung (ASLR)
Ordnet die Adressraumpositionen der Schlüsseldatenbereiche eines Prozesses zufällig an, einschließlich der Basis der ausführbaren Datei und der Positionen des Stacks, Heaps und der Bibliotheken. Verhindert die Ausnutzung von Speicherbeschädigungsschwachstellen. Sie können mehr über ASLR auf Wikipedia lesen .
64-Bit-ASLR mit hoher Entropie (nur in 64-Bit-Anwendungen)
Ermöglicht ASLR, den gesamten 64-Bit-Adressraum zu verwenden, wie Sie hier nachlesen können .
Terminaldienste
Erstellen Sie Terminal Server-fähige (TSAWARE) Anwendungen. Dies hat nichts mit der Sicherheit zu tun und wird hier von Microsoft abgedeckt .
RAD Studio Verbesserte Unterstützung
Während zuvor Compiler-Flags existierten , macht die RAD Studio-IDE diese Flags jetzt als Linker-Optionen verfügbar. Unten sehen Sie die Einstellungen für Delphi- und C++-Windows-Compiler (danke für die Bilder an Jim McKeeth )
Ein paar Vorbehalte
Die ASLR-Compilerkonfiguration funktioniert erwartungsgemäß für Delphi-Anwendungen, die Laufzeitpakete verwenden. Bei Programmen, die Bibliotheken in der ausführbaren Datei einbinden, besteht ein Konflikt mit der Art und Weise, wie Programme auf verzögert geladene DLL-Funktionen verweisen, wodurch das erwartete Verhalten verhindert wird. Dies ist ein Problem, das Embarcadero nach der Veröffentlichung gefunden hat und für das es in (naher) Zukunft eine Lösung geben wird.
Wie Sie unten sehen können, erhalten Sie für eine App mit Laufzeitpaketen die richtige Konfiguration, wie von SysInternals Process Explorer gezeigt:
Beachten Sie im Allgemeinen, dass diese Flags die Sicherheit erzwingen und die Möglichkeit besteht, dass eine Anwendung, die Low-Level-Code verwendet, möglicherweise nicht mehr funktioniert. Beispielsweise haben wir festgestellt, dass einige alte ActiveX-Steuerelemente aufgrund eines Konflikts mit dem DEP-Flag nicht mehr in der IDE funktionieren.
Wenn Sie ein Problem in Ihren Anwendungen feststellen, können Sie diese Flags deaktivieren. Wir empfehlen jedoch, sich mit dem zugrunde liegenden Problem zu befassen, da einige Unternehmen allmählich verlangen, dass die gesamte von ihnen verwendete Software mit allen von Microsoft empfohlenen Sicherheitsflags aktiviert ist.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition