Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
.NET offre molte funzionalità utili per risolvere problemi di sicurezza durante la creazione di app. La distribuzione AOT nativa si basa su queste funzionalità e offre diversi strumenti utili per applicare la protezione avanzata delle app.
Nessuna generazione di codice di runtime
Poiché AOT nativo genera tutto il codice al momento della pubblicazione dell'app, non è necessario generare alcun nuovo codice eseguibile in fase di esecuzione. In questo modo è possibile eseguire le app in ambienti che non consentono la creazione di nuove tabelle codici eseguibili in fase di esecuzione. Tutto il codice eseguito dalla CPU può essere firmato digitalmente.
Superficie di riflessione restrittiva
Quando le app vengono pubblicate con AOT nativo, il compilatore analizza l'uso della reflection all'interno dell'app. Solo gli elementi del programma ritenuti destinati alla riflessione sono disponibili per la riflessione a runtime. I punti all'interno del programma che tentano di eseguire una reflection non vincolata vengono contrassegnati con avvisi di riduzione. Non è possibile eseguire la reflection su elementi di programma che non erano destinati alla reflection. Questa restrizione può impedire una serie di problemi in cui un soggetto malintenzionato ottiene il controllo di ciò su cui il programma esegue la reflection e richiama codice non previsto. Questa restrizione include approcci che usano Assembly.LoadFrom o Reflection.Emit; nessuno di questi funziona con AOT nativo e il loro utilizzo viene contrassegnato con un avviso in fase di compilazione.
Protezione del flusso di controllo
La Protezione del flusso di controllo è una funzionalità di protezione della piattaforma altamente ottimizzata su Windows che è stata creata per contrastare le vulnerabilità legate al danneggiamento della memoria. Inserendo restrizioni rigorose sulla posizione da cui un'applicazione può eseguire il codice, rende molto più difficile per gli exploit eseguire codice arbitrario tramite vulnerabilità quali gli overflow del buffer.
Per abilitare la protezione del flusso di controllo in un'app AOT nativa, impostare la proprietà ControlFlowGuard nel progetto pubblicato.
<PropertyGroup>
<!-- Enable control flow guard -->
<ControlFlowGuard>Guard</ControlFlowGuard>
</PropertyGroup>
Shadow Stack della tecnologia di imposizione del flusso di controllo (.NET 9+)
La Shadow Stack della Control-flow Enforcement Technology (CET) è una funzionalità del processore informatico. Offre funzionalità per difendersi da attacchi malware basati su ROP (Return-Oriented Programming, Programmazione orientata alla restituzione).
La CET è abilitata per impostazione predefinita durante la pubblicazione per Windows. Per disabilitare la CET, impostare la proprietà CetCompat nel progetto pubblicato.
<PropertyGroup>
<!-- Disable Control-flow Enforcement Technology -->
<CetCompat>false</CetCompat>
</PropertyGroup>