Keamanan dan penyimpanan di dunia nyata

Hanya membaca halaman blog di Dibangun di Akademi, saya ingin menjawab. John selalu menempatkan konten yang besar di C / C ++ keanehan bahasa dan sering konten keamanan tidak berhubungan dengan keselamatan orang dalam beberapa cara. Mail yang tercantum di atas, pendek dengan beberapa link ke beberapa proyek penelitian yang menyelidiki mendapatkan penyimpanan memori bahasa keamanan inheren berbahaya, seperti C / C ++. Daripada meninggalkan komentar di blog saya, seperti orang normal, saya menulis blog ini sebagai respon membingungkan.

Saya melihat dua pendekatan yang masuk akal untuk mengurangi risiko kerentanan keamanan diperkenalkan oleh memori dalam waktu dekat. Perhatikan Aku tidak mengatakan “berhenti kerentanan keamanan memori.” Untuk menghentikan mereka sama sekali, kemungkinan memerlukan sejumlah besar beban yang tidak dapat diterima atau untuk secara radikal mengubah atau memperluas bahasa didasarkan. Tapi kita bisa mengurangi risiko keamanan nyata teknik bug memori yang sudah ada dan digunakan dalam praktek.

Yang pertama sudah ada, dan kau tahu itu sebagai ASLR, DEP, SEHOP, kenari stack dan berbagai jenis lain dari pengacakan dan ketegangan ditambahkan ke pelaksanaan program (lihat PAX atau MSDN dokumentasi untuk informasi lebih lanjut tentang beberapa mereka). Sebagian besar perlindungan ini ditambahkan ke proses kompilasi atau tertanam dalam sistem operasi Anda. Mereka dirancang untuk menjadi sesederhana mungkin dan masalah kompatibilitas hadir dengan sedikit atau tidak ada. Ini berarti bahwa tidak ada konfigurasi tambahan atau pengaturan bagi pengguna, mereka nyaris tak terlihat menunjukkan bahwa lingkungan kerja keamanan yang nyata. Bahkan ada solusi untuk aplikasi warisan dibangun dengan compiler warisan. Meskipun kekurangan, alat Microsoft EMET sangat bagus untuk apa ini sarana modern untuk melindungi aplikasi yang lebih tua bahwa Anda tidak dapat melakukan bisnis tanpa itu. Perlindungan ini menambahkan overhead yang sangat kecil dan melakukan pekerjaan dengan baik di semua aplikasi, besar dan kecil. Tapi seperti kompleksitas program untuk meningkatkan efektivitasnya menurun. Contoh terbaik adalah web browser dengan starter yang kaya seperti JavaScript. Mungkin penyerang mengalahkan mereka mengeksploitasi kerentanan? Ya. Mereka masih layak disimpan di sekitar, meskipun demikian, dan kerugian kinerja kecil? Benar-benar. Jadi di sini adalah pendekatan pertama untuk mengurangi risiko kerentanan keamanan di memori. Dia sudah di tempat dan efektivitas mereka.

Pendekatan kedua, yang saya tidak setuju dengan John dan penelitian lebih akademis. Saya tidak melihat tindakan perlindungan umum yang menangkap segala sesuatu sebagai kesempatan, atau di mana kita harus memfokuskan upaya kami pada penelitian. Hal ini terutama untuk alasan yang sama bahwa pelonggaran jatuhnya up dalam menghadapi lingkungan runtime yang kompleks. Sebaliknya, saya melihat sebuah program khusus untuk menggunakan keadaan mitigasi solusi yang cukup baik untuk menghentikan serangan dunia nyata yang mempengaruhi kita hari ini. Ini adalah tren yang tidak sama sekali baru, tetapi tidak cukup mencapai mainstream belum, dan saya pikir saya tahu mengapa. Sebelum pergi lebih jauh, kita perlu membahas cerita sedikit. Sepuluh tahun yang lalu itu mungkin untuk menulis mengeksploitasi dengan metode umum seperti merusak metadata tumpukan disimpan alamat pengirim pada catatan. Teknik ini terutama portabel untuk kerentanan dalam aplikasi lain dari semua ukuran dan kompleksitas. Namun seiring waktu, sistem operasi dan pengembang perpustakaan menjadi bijaksana untuk ini dan disampaikan kode untuk membuat teknik ini tidak bisa universal. Hal ini dilakukan dengan berbagai metode, seperti memeriksa daftar ganda terkait dari pointer, XORing pointer fungsi virtual meja sensitif dengan nilai-nilai sihir, dan sebagainya. Mereka sebenarnya obat umum yang saya bahas di atas. Mereka bekerja di semua program dengan overhead minimal dan membunuh banyak teknik Generic Exploit dalam satu tembakan. Dari tahun 2000-an pertengahan akhir, pengembang telah mengandalkan pada eksploitasi aplikasi data tertentu untuk mencapai apa yang dulu mungkin melalui pointer menulis ulang. Mengeksploitasi pengembang untuk melakukan hal ini dengan mempelajari spesifik Program struktur data yang dapat dengan aman diganti atau kebocoran adalah untuk mengalahkan semua hambatan umum ini. Fakta ini tampaknya akan hilang di akademisi, setidaknya, sebagian besar studi saya telah menemukan. Tentu saja, langkah evolusi berikutnya dalam perlindungan kami harus aplikasi tertentu. Langkah pertama untuk mengurangi desain untuk menggunakannya, yang merupakan program khusus adalah studi tentang kerentanan individu yang mempengaruhi mereka. Pengembang sudah melakukan hal ini, tetapi biasanya hasil hanya dalam patch yang memperbaiki masalah ini. Langkah selanjutnya adalah menentukan bila ada model yang mendasari atau kelas dari kesalahan untuk kerentanan ini dan akhirnya memahami persis bagaimana menggunakan penulis menggunakan standar ini.

Sebuah contoh yang bagus dari program khusus untuk mengeksplorasi mitigasi adalah keracunan Firefox. Pengembang Mozilla telah melihat kecenderungan umum untuk menggunakan Firefox dan memperkenalkan mitigasi, untuk membuatnya lebih kuat. Ini adalah langkah ke arah yang benar. Jika semua orang menyalahgunakan mengeksplorasi struktur data tertentu dalam aplikasi, mungkin masuk akal untuk membatasi akses ke struktur ini dan mengurangi kemampuan untuk mencari penyerang atau andal merusak. Pelaksanaan mitigasi dapat sepele, dan memaksa penyerang untuk menemukan pendekatan baru. Setelah menaikkan bar cukup tinggi, kita harus beralih ke target lain. Kadang-kadang desain komponen perangkat lunak yang asli adalah konsekuensi yang tidak diinginkan dari kekecewaan mengeksploitasi pengembang, seperti halnya dengan RenderArena di WebKit (membaca seluruh thread). Intinya adalah untuk belajar bagaimana menggunakan dan memanipulasi para penulis inner eksklusif untuk aplikasi Anda, dan kemudian membuat hidup Anda lebih sulit.

Jadi mengapa tidak tertangkap dalam perangkat lunak utama belum? Nah, para pengembang hampir tidak pernah belajar bakat, ditujukan untuk aplikasi yang mendukung. Ini banyak waktu dan kerja keras untuk orang-orang yang tidak terkait dengan keamanan yang tidak menyadari hal tersebut. Akademisi cenderung melihat masalah keamanan memori sebagai salah satu yang membutuhkan solusi yang komprehensif. Tapi saya pikir program ini adalah mitigasi spesifik harus menjadi langkah penting dalam setiap program SDL sebagai perluasan dari studi dan koreksi kerentanan individu. Jangan memperhatikan detail sistem seperti penyerang mengorbankan menggunakan kode merupakan limbah informasi berharga. Kemungkinan, Anda dapat membuat mitigasi, yang membuat operasi kelas kesalahan dalam program yang sangat sulit ini. Ini adalah biaya awal saya, tetapi dapat membantu mengurangi keparahan kerentanan masa depan.

sandbox langkah lain dalam evolusi ini, tetapi pada dasarnya berbeda dalam pendekatan mereka untuk mengurangi risiko kerentanan keamanan di memori. Serta program mitigasi tertentu, kita memiliki biaya awal untuk mengembangkan dan sulit untuk bepergian pengembang tidak berhubungan dengan keamanan, untuk mendapatkan hak pertama kalinya.

Tentu saja, perawatan ini gejala dari masalah yang sebenarnya, yang merupakan kerentanan berbahaya dalam bahasa memori. Pendekatan pengajaran sering memperkenalkan ekstensi bahasa atau mekanisme penegakan hukum, yang sedang mencoba untuk menyelesaikan semua masalah dengan harga biaya overhead yang tinggi. Pendekatan umum mempengaruhi kinerja terlalu banyak, atau tidak menerima aplikasi yang kompleks yang ada dalam rekening. Tes dunia nyata untuk ini adalah, sebagai suatu peraturan, “dapat membuat Chrome atau Firefox?”. Jika jawabannya tidak, maka tidak cukup siap. Pendekatan terbaik untuk mengurangi risiko kesalahan ini hadir untuk berhenti berjuang untuk program penuh dalam ruang memori dari bahasa berbahaya. Masalah ini hampir tidak mungkin untuk memecahkan dalam dunia tenggat waktu, anggaran dan 30 tahun dari keputusan desain bahasa rusak. Sebaliknya, penelitian kami harus fokus pada bagaimana kita bisa menghentikan serangan yang mempengaruhi kita hari ini.


Leave a Reply

Name *
Email *
Website