Fitur keamanan

.NET menawarkan banyak fasilitas untuk membantu mengatasi masalah keamanan saat membangun aplikasi. Penyebaran AOT asli dibangun di atas fasilitas ini dan menyediakan beberapa yang dapat membantu memperkuat aplikasi Anda.

Tidak ada pembuatan kode runtime

Karena AOT asli menghasilkan semua kode pada saat menerbitkan aplikasi, tidak ada kode yang dapat dieksekusi baru yang perlu dihasilkan pada runtime. Ini memungkinkan menjalankan aplikasi Anda di lingkungan yang melarang pembuatan halaman kode baru yang dapat dieksekusi saat runtime. Semua kode yang dijalankan CPU dapat ditandatangani secara digital.

Permukaan pantulan terbatas

Saat aplikasi diterbitkan dengan AOT asli, pengkompilasi menganalisis penggunaan pantulan dalam aplikasi. Hanya elemen program yang dianggap sebagai target refleksi yang tersedia untuk refleksi pada waktu proses. Tempat dalam program yang mencoba melakukan refleksi yang tidak dibatasi ditandai menggunakan peringatan pemangkasan. Elemen program yang tidak dimaksudkan untuk menjadi target refleksi tidak dapat direfleksikan. Pembatasan ini dapat mencegah kelas masalah di mana aktor jahat memegang kendali atas apa yang dicerminkan program dan memanggil kode yang tidak diinginkan. Pembatasan ini mencakup pendekatan yang menggunakan Assembly.LoadFrom atau Reflection.Emit - tidak satu pun dari mereka yang berfungsi dengan AOT bawaan, dan penggunaannya akan ditandai dengan peringatan saat waktu build.

Control Flow Guard (Penjaga Alur Kontrol)

Control Flow Guard adalah fitur keamanan platform yang sangat dioptimalkan pada Windows yang dibuat untuk memerangi kerentanan kerusakan memori. Dengan menempatkan pembatasan ketat pada lokasi tempat aplikasi dapat mengeksekusi kode, ini membuatnya jauh lebih sulit bagi exploit untuk menjalankan kode sewenang-wenang melalui kerentanan seperti buffer overflow.

Untuk mengaktifkan Control Flow Guard pada aplikasi AOT asli Anda, tetapkan properti ControlFlowGuard dalam proyek yang sudah diterbitkan.

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

Teknologi Penegakan Aliran Kendali Shadow Stack (.NET 9+)

Control-flow Enforcement Technology (CET) Shadow Stack adalah fitur prosesor komputer. Ini menyediakan kemampuan untuk bertahan dari serangan malware berbasis pemrograman berorientasi kembali (ROP).

CET diaktifkan secara default saat menerbitkan untuk Windows. Untuk menonaktifkan CET, atur properti CetCompat dalam proyek yang diterbitkan.

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