Fil-C Luncurkan Penjelajahan Stack Memory-Safe
Judul asli: Memory Safe Context Switching
Mengapa Ini Penting
Meningkatkan keamanan program C/C++ yang menggunakan exception handling dan coroutines dengan mencegah kerentanan eksploitasi stack corruption.
Fil-C merilis dukungan ucontext APIs dalam versi 0.680 untuk mengimplementasikan context switching yang sepenuhnya aman dari kerusakan memori. Fitur ini mencakup setjmp, longjmp, getcontext, setcontext, makecontext, dan swapcontext tanpa risiko akses stack yang sudah dibebaskan.
Fil-C, proyek kompatibilitas C/C++ yang berfokus pada keamanan memori, mengumumkan implementasi memory-safe untuk API context switching yang kompleks. Proyek ini mengatasi masalah keamanan kritis yang terjadi ketika API ini disalahgunakan dalam C tradisional.
Setjmp dan longjmp digunakan luas dalam program C untuk mengimplementasikan exception handling, khususnya dalam signal handlers. API ucontext (getcontext, setcontext, makecontext, swapcontext) digunakan untuk implementasi coroutine dan fiber, termasuk dalam Boost library.
Masalah keamanan utama adalah kemungkinan eksekusi pada stack yang sudah dibebaskan (dangling stack). Misalnya, menyimpan konteks dalam fungsi kemudian mengembalikan dari fungsi tersebut akan mencoba merestorasi stack frame yang tidak lagi ada. Dalam C tradisional, ini menghasilkan crash yang sulit di-debug atau bahkan dapat dieksploitasi.
Fil-C mengatasi ini dengan deteksi kesalahan pada saat misuse terjadi atau memastikan eksekusi tetap legal melalui manajemen stack yang cermat. API setjmp/longjmp dan ucontext diimplementasikan dengan cara yang berbeda untuk memastikan tidak ada cara untuk mengeksekusi kode pada dangling stack. Proyek ini menekankan bahwa dalam Yolo-C (C tradisional), eksekusi pada dangling stack menghasilkan crash yang membingungkan tanpa stack trace yang dapat di-debug.