Control-flow Enforcement (CET)
Juga disebut CET
CET, Control-flow Enforcement Technology, menambahkan mekanisme perangkat keras untuk melindungi alur kendali, terutama shadow stack dan pelacakan percabangan tidak langsung (indirect branch tracking). Dukungan perangkat keras dan perlindungan aktif dalam proses tertentu merupakan status yang berbeda.
Yang perlu Anda ketahui
CET, Control-flow Enforcement Technology, menambahkan mekanisme perangkat keras untuk melindungi alur kendali, terutama shadow stack dan pelacakan percabangan tidak langsung (indirect branch tracking). Dukungan perangkat keras dan perlindungan aktif dalam proses tertentu merupakan status yang berbeda.
Cara kerjanya
Shadow stack mempertahankan status alamat kembali (return-address) yang terlindungi, sementara pelacakan percabangan tidak langsung membatasi tujuan dari percabangan tidak langsung yang dilacak. Keduanya menangani transfer alur kendali yang berbeda serta memiliki enumerasi dan pengaktifan terpisah. OS, loader, biner aplikasi, dan pustaka berpartisipasi dalam membuat lingkungan eksekusi yang terlindungi berfungsi.
Manfaat penggunaan
Aplikasi yang dibangun dengan sesuai dapat berjalan dengan shadow stack yang dikelola OS sehingga alamat kembali yang tidak cocok memicu eksepsi yang telah ditentukan, alih-alih mengalihkan eksekusi secara diam-diam. Kebijakan kompatibilitas mungkin berbeda untuk modul lawas dan perlindungan mode pengguna vs mode supervisor.
Cara memeriksa dukungan dan pengaktifan
Periksa CPUID.07H.00H:ECX bit 7 untuk kemampuan shadow-stack dan EDX bit 20 untuk pelacakan percabangan tidak langsung, lalu periksa status perlindungan proses yang terdokumentasi pada OS. Ketersediaan bit CPU saja tidak dapat memastikan penegakan aturan untuk program yang sedang berjalan.
Kemampuan, pengaktifan, dan penegakan harus diperiksa secara terpisah. Sebuah prosesor dapat mendukung suatu perlindungan sementara OS, aplikasi, atau kebijakan mesin virtual tidak mengaktifkannya. Kolom dukungan pada basis data bukanlah atestasi dari sistem yang sedang berjalan.
Hal yang tidak dipastikan oleh fitur ini
Kolom CET tidak membuktikan bahwa kedua subfitur hadir atau diaktifkan. CET tidak membuat biner dapat dipercaya, mencegah setiap bug kerusakan memori, atau menggantikan pembaruan. Menonaktifkan perlindungan secara global bukanlah perbaikan rutin untuk crash aplikasi.
Kompatibilitas dan performa dalam praktik
Pastikan OS, firmware, dan runtime yang terpengaruh selalu mutakhir. Jika suatu perlindungan menimbulkan masalah kompatibilitas, gunakan diagnostik vendor dan pembaruan yang didukung terlebih dahulu. Tombol perlindungan menyeluruh dapat memengaruhi aplikasi yang tidak terkait dan harus mengikuti kebijakan penerapan serta pemulihan yang eksplisit.
Daftar periksa verifikasi praktis
- Catat model prosesor atau platform yang tepat serta versi aplikasi, OS, dan runtime yang terlibat. Pertahankan kata-kata dari kesalahan atau persyaratan sebenarnya.
- Periksa referensi produsen untuk model persis tersebut, lalu periksa kemampuan efektif dan status aktif di lingkungan tempat program berjalan.
- Bandingkan setiap persyaratan dari biner atau backend yang dipilih. Fitur dengan nama serupa, alias, atau label teknologi umum tidaklah cukup.
- Pastikan aplikasi memilih implementasi yang dimaksudkan. Gunakan diagnostik terdokumentasi miliknya dan alternatif cadangan yang didukung ketika persyaratan tidak terpenuhi.
- Lakukan satu perubahan yang didukung pada satu waktu dan ulangi beban kerja yang sama. Pertahankan konfigurasi asli dan jalur pemulihan tetap tersedia.
Jika fitur terdaftar tetapi perangkat lunak tidak dapat menggunakannya
Mulailah dari komponen persis yang mengalami kegagalan. Basis data perangkat keras menjelaskan kemampuan yang tercatat; sistem operasi atau hipervisor dapat mengekspos lingkungan efektif yang berbeda. Kesalahan instruksi ilegal juga memerlukan penyelidikan terhadap instruksi bermasalah yang sebenarnya dan build biner, karena korupsi data atau instruksi tidak didukung yang tidak terkait dapat menghasilkan gejala serupa.
Pasang versi aplikasi, driver, atau runtime yang didukung untuk platform persis tersebut, dan gunakan build standar atau cadangan yang terdokumentasi dari vendor jika diperlukan. Pembaruan perangkat lunak tidak dapat menciptakan instruksi yang tidak dimiliki prosesor. Perubahan firmware dan kebijakan keamanan harus mengikuti prosedur produsen sistem serta rencana pemulihan, bukan resep optimasi umum.
Sumber dan cakupan penjelasan ini
Intel 64 and IA-32 Architectures Software Developer's Manual · Kernel Linux: Control-flow Enforcement Technology shadow stack
Referensi ini menetapkan perilaku arsitektur dan persyaratan perangkat lunak. Referensi tersebut tidak memverifikasi secara independen setiap nilai fitur pada halaman model perangkat keras yang ditautkan. Untuk dukungan model, gunakan bukti produsen pada halaman tersebut dan periksa konfigurasi sistem efektif. Artikel ini tidak menyediakan tolok ukur, sertifikasi, atau tanggal tinjauan independen.
Sumber dan verifikasi
Kepemilikan editorial: Feex. Tidak ada tanggal peninjauan independen yang dicatat. Cara kami meneliti.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Volume 1 dan 2 menjelaskan keluarga instruksi yang disebutkan serta CPUID; Volume 3 menjelaskan status, paging, VMX, dan kontrol proteksi. Dokumentasi arsitektur tidak menetapkan dukungan untuk model tertentu.
- Kernel Linux: Control-flow Enforcement Technology shadow stack · Membedakan dukungan perangkat keras, penanda biner, pengaktifan loader, dan perlindungan aktif per-thread. Menjelaskan IBT dan shadow stack sebagai fasilitas yang terpisah.
Apakah artikel ini bermanfaat?
Cukup jawab ya atau tidak. Pilih alasan jika Anda mau, atau tambahkan catatan singkat.
Terima kasih. Ini membantu kami menyempurnakan halaman ini.