Penolakan Layanan
Penolakan layanan terjadi ketika akses ke layanan tertentu seharusnya diberikan, tetapi pada kenyataannya ditolak secara tidak benar. Misalnya, operasi apa pun yang dapat dilakukan aplikasi yang tidak istimewa yang menyebabkan sistem menjadi tidak dapat digunakan secara efektif merupakan penolakan layanan. Ini akan mencakup operasi atau urutan operasi apa pun yang:
Merusak sistem.
Menyebabkan penghentian utas atau proses dini.
Membuat kondisi kebuntuan. Kebuntuan terjadi ketika dua utas atau lebih dihentikan menunggu dalam keadaan kebuntuan permanen. Setiap utas sedang menunggu sumber daya yang dipegang oleh salah satu utas lainnya.
Membuat kondisi kunci langsung. Kunci langsung dapat terjadi ketika dua prosesor atau lebih tidak dapat maju karena mereka menunggu untuk memperoleh sumber daya (biasanya kunci pada antrean) dan utas yang memiliki sumber daya tersebut berada dalam status tidak berjalan yang sama.
Masalah seperti itu sering muncul dalam driver karena mengandung bug laten yang dapat dieksploitasi oleh aplikasi normal. Eksploitasi jenis ini bisa sederhana dan sulit dilindungi. Penyebab umum masalah tersebut pada driver meliputi:
Validasi buffer pengguna yang tidak tepat.
Buffer luapan atau underflow.
Untuk sistem file dan driver filter sistem file, ada banyak kasus masalah tersebut. Misalnya, nilai MAX_PATH didefinisikan sebagai 260 karena alasan historis pada subsistem Win32. Banyak komponen driver mengasumsikan bahwa ini menunjukkan ukuran jalur terbesar. Sayangnya, ini tidak terjadi karena jalur maksimum pada sistem file NTFS adalah 32.767 karakter Unicode (65.534 byte). Jika driver filter mengodekan asumsi panjang MAX_PATH ke dalam basis kodenya, serangan penolakan layanan sederhana akan muncul dari aplikasi yang membuat jalur yang lebih besar dari ini dalam jalur yang dikelola oleh driver filter.
Masalah umum lainnya adalah bahwa aplikasi sering menyematkan penunjuk mode pengguna ke dalam permintaan FSCTL privat. Sistem file tunduk pada tiga kategori luas serangan penolakan layanan:
Mengkonsumsi semua ruang disk yang tersedia.
Menggunakan semua bandwidth disk yang tersedia.
Memblokir akses ke file tempat pengguna harus memiliki akses.
Biasanya, ada sedikit yang dapat dilakukan pengembang sistem file untuk mencegah jenis serangan ini. Namun, ada langkah-langkah yang dapat diambil oleh pengembang untuk memungkinkan administrator membatasi jenis serangan penolakan layanan ini.
Serangan penolakan layanan paling sederhana yang melibatkan sistem file adalah menggunakan semua ruang disk kosong. Sangat mudah untuk menulis aplikasi untuk melakukan ini dan konsekuensinya jauh mencapai. Banyak aplikasi dan layanan dalam sistem tidak akan berfungsi jika tidak dapat lagi menulis ke disk. Teknologi mitigasi adalah kuota disk, yang dapat membatasi berapa banyak ruang disk yang tersedia untuk file yang dimiliki oleh pengguna saat digunakan dengan benar oleh administrator. Oleh karena itu, masuk akal untuk menyertakan dukungan untuk kuota disk saat mengembangkan sistem file.
Aplikasi berbahaya atau ditulis dengan buruk juga dapat mencoba mengonsumsi semua bandwidth disk. Konsekuensi bagi pengguna reguler yang tunduk pada jenis serangan ini adalah sistem yang lamban atau tidak responsif. Saat ini, sistem operasi tidak memiliki mekanisme untuk membatasi bandwidth yang digunakan oleh aplikasi. Sistem file juga menggunakan memori kernel untuk setiap objek file terbuka dan handel file. Aplikasi berbahaya dapat mencoba terus membuka sejumlah besar file dan membuatnya tetap terbuka sampai memori habis. Teknik mitigasi utama untuk masalah ini adalah audit dan pengelogan sehingga administrator dapat memantau komputer untuk aplikasi yang melakukan sejumlah besar I/O atau menggunakan sejumlah besar sumber daya lain. Sekali lagi, akan menjadi peradilan bagi sistem file dan driver filter sistem file untuk menyertakan dukungan audit agar lebih mampu meminimalkan jenis penolakan layanan ini.
Aplikasi berbahaya dapat mencoba mencegah pengguna lain mengakses file yang diperlukan untuk penggunaan normal. Strategi penting untuk meminimalkan masalah ini adalah memastikan bahwa informasi keamanan yang terkait dengan objek file diimplementasikan dengan benar saat mengembangkan sistem file.
Akhirnya, semua driver perlu khawatir tentang mengonsumsi semua memori yang tersedia atau sumber daya lain sebagai respons terhadap permintaan dari aplikasi berbahaya atau menyimpang.