Sicherheitsfeatures

.NET bietet viele Möglichkeiten, um Sicherheitsbedenken beim Erstellen von Apps zu beheben. Die systemeigene AOT-Bereitstellung baut auf diesen Einrichtungen auf und bietet mehrere, die Ihnen dabei helfen können, Ihre Apps zu härten.

Keine Laufzeitcodegenerierung

Da systemeigene AOT zum Zeitpunkt der Veröffentlichung der App den gesamten Code generiert, muss zur Laufzeit kein neuer ausführbarer Code generiert werden. Dadurch können Ihre Apps in Umgebungen ausgeführt werden, in denen die Erstellung neuer ausführbarer Codeseiten zur Laufzeit nicht zulässig ist. Der gesamte Code, den die CPU ausführt, kann digital signiert werden.

Eingeschränkte Spiegelungsoberfläche

Wenn Apps mit systemeigenem AOT veröffentlicht werden, analysiert der Compiler die Verwendung der Spiegelung innerhalb der App. Nur die Programmelemente, die als Reflexionsziele gelten, stehen zur Laufzeit zur Reflexion zur Verfügung. Programmstellen, die versuchen, uneingeschränkte Reflexion durchzuführen, werden mithilfe von Trimwarnungen gekennzeichnet. Programmelemente, die nicht als Reflexionsziele gedacht waren, können nicht berücksichtigt werden. Diese Einschränkung kann eine Klasse von Problemen verhindern, bei denen ein böswilliger Akteur die Kontrolle darüber erhält, was das Programm widerspiegelt und unbeabsichtigten Code aufruft. Diese Einschränkung umfasst Ansätze, die Assembly.LoadFrom oder Reflection.Emit verwenden - keiner dieser Methoden funktioniert mit nativem AOT, und ihre Verwendung wird zur Build-Zeit mit einer Warnung gekennzeichnet.

Kontrollfluss-Schutz

Beim Ablaufsteuerungsschutz (Control Flow Guard,) handelt es sich um eine hochgradig optimierte Plattformsicherheitsfunktion in Windows, die erstellt wurde, um auf Speicherbeschädigungs-Sicherheitsrisiken zu reagieren. Durch die strikte Beschränkung der Orte, von denen aus eine Anwendung Code ausführen kann, wird es für Exploits wesentlich schwieriger, über Schwachstellen wie Pufferüberläufe beliebigen Code auszuführen.

Legen Sie die ControlFlowGuard Eigenschaft im veröffentlichten Projekt fest, um "Control Flow Guard" in Ihrer systemeigenen AOT-App zu aktivieren.

<PropertyGroup>
  <!-- Enable control flow guard -->
  <ControlFlowGuard>Guard</ControlFlowGuard>
</PropertyGroup>

Steuerungsfluss-Erzwingungstechnologie-Schattenstapel (.NET 9+)

Control-Flow Enforcement Technology (CET) Shadow Stack ist eine Funktion eines Computerprozessors. Es bietet Funktionen zum Schutz vor Rücksprung-orientierten Programmierung (ROP) basierenden Angriffen durch Schadsoftware.

CET ist bei der Veröffentlichung für Windows standardmäßig aktiviert. Um CET zu deaktivieren, legen Sie die CetCompat Eigenschaft im veröffentlichten Projekt fest.

<PropertyGroup>
  <!-- Disable Control-flow Enforcement Technology -->
  <CetCompat>false</CetCompat>
</PropertyGroup>