Proteksi akses memori dalam perangkat keras menggunakan konsep capability‐based addressing Yudi S. Gondokaryono1 1 Sekolah Teknik Elektro dan Informatika ‐ ITB Contact Person: Yudi S. Gondokaryono Sekolah Teknik Elektro dan Informatika Jalan Ganesha 10 Bandung Phone: 22‐2500985 Email: [email protected] Abstrak ‐ Setiap komputer yang terhubung pada jaringan Internet akan menjadi sasaran serangan berbagai virus, worm dan "crackers." Berbagai metoda untuk melindungi komputer dari serangan‐serangan tersebut selalu berbentuk perangkat lunak. Pada prinsipnya komputer tidak mempunyai perlindungan pada tingkat perangkat kerasnya. Penulis mengajukan konsep capability‐based addressing untuk melindungi akses memori pada tingkat perangkat keras. Konsep capability ini telah ada sejak lama. Capability pada prinsipnya adalah suatu kunci yang memberikan pemegang kunci akses terhadap objek atau entitas dalam sistem komputer. Capability pada saat ini dimplementasikan hanya dalam bentuk perangkat lunak seperti sistem operasi EROS. Dalam tulisan ini akan dibahas implementasi konsep capability dalam perangkat keras. Keyword ‐Arsitektur Komputer, Perangkat Keras, Keamanan, Capability. 1. Pendahuluan Pada tanggal 7 Februari 2000, serangan Distributed Denial of Service (DDoS) dilakukan terhadap Yahoo!. Yahoo! Tidak dapat melakukan layanan selama beberapa jam, dan dampaknya dirasakan oleh para pengguna Internet dan komunitas e‐business [12]. Serangan semacam DDoS masih terus berlangsung dan meningkat dengan semkain banyaknya pengguna Internet. Beberapa situs penting untuk operasional Internet‐pun tidak dapat dihindari, seperti: 23 Oktober 2003 Serangan terhadap root server Domain Names System (DNS) yang merupakan inti dari infrastruktur Internet. 25 Januari 2003 “Slammer worm” menyerang situs‐situs yang menggunakan Microsoft SQL Server. Beberapa jaringan commercial enterprise (seperti Bank of America) dan seluruh jaringan nasional Korea Selatan secara efektif tidak berjalan. Beberapa lembaga keamanan Amerika seperti The Sans Institute, CERT dan CERIAS telah melakukan studi yang mengidentifikasikan beberapa kelemahan dalam perangkat keras dan perangkat lunak yang banyak dipergunakan di Internet [5]. Serangan‐serangan ini merupakan suatu tanda bahwa kita harus melakukan tindakan untuk mengurangi kelemahan‐kelemahan yang ada. Beberapa hal yang penting seperti yang dilaporkan oleh The Sans Institute adalah perlunya penelitian dalam mengamankan protokol IP, mengamankan Operating System (OS) dan mengamankan perangkat keras. 2. Latar Belakang Serangan DDoS mempergunakan banyak komputer sebagai “zombie” untuk menyerang sebuah komputer. Serangan seperti ini akan efektif bila komputer‐komputer “zombie” tersebar di Internet sehingga seluruh traffic menyatu ke komputer target dari pelbagai arah. Sebelum melakukan serangan DDoS, para penyerang mencari komputer‐komputer yang memiliki kelemahan yang telah diketahui sebelumnya pada perangkat lunaknya agar dapat dijadikan komputer “zombie”. Dengan adanya kelemahan pada perangkat lunak, para penyerang dapat memasang sebuah program yang dapat dikendalikan dari jarak jauh untuk melakukan serangan. Salah satu kelemahan yang sering dipergunakan untuk mendapat akses pada sebuah komputer adalah serangan pada memori buffer yang tidak terlindungi. Buffer memori sering dipergunakan untuk menyimpan masukkan yang digunakan seperti untuk menyimpan URL pada web‐browser. Buffer biasanya dialokasikan pada stack dalam area variabel lokal sebuah fungsi untuk menerima masukan dan mengolah masukkan tersebut. PARAMETERS PARAMETERS INJECTED CODE NEW RETURN ADDRESS PROCEDURE STACK FRAME NEW RETURN ADDRESS PROCEDURE STACK FRAME INJECTED CODE OVERFLOW STACK GROWTH BUFFER GROWTH RETURN ADDRESS PROCEDURE STACK FRAME Virtual page number BUFFER Offset Page Table PARAMETERS Page Frame number STACK ADDRESS SPACE STACK ADDRESS SPACE STACK ADDRESS SPACE Gambar 1 Serangan Buffer Overflow Jika kita mengetahui ukuran dan lokasi relatif dari return address dari sebuah fungsi maka kita dapat mengirim sejumlah data yang berisikan program dan mengganti harga return address dengan alamat program tersebut. Metoda penyerangan seperti ini disebut sebagai buffer overflow attack. Jika serangan buffer overflow ini tidak terdeteksi atau dihindari, maka penyerang dapat memasang program untuk melakukan DDoS. Dalam makalah ini penulis mengkonstrasikan penyelesaian masalah ini pada melinndungi memori akses agar serangan semacam buffer overflow dapat dihindarkan. 3. Memori Akses pada Komputer saat ini Memori akses pada komputer saat ini menggunakan konsep virtual memori dan penglamatan dengan segmen. Konsep virtual memori dipergunakan untuk menangani masalah fisikal memori yang jauh lebih kecil dibandingkan dengan kebutuhan memori (virtual memori). Sedangkan konsep pengalamatan dengan segmen dipergunakan untuk meningkatkan efisiensi penggunaan memori dan mempermudah program untuk sharing akses memori dengan program lainnya. Page Frame number Offset Gambar 2 Virtual Memori 3.2. Pengalamatan dengan Segmen Pada virtual memori dipecah menjadi pages yang telah didefinisikan oleh perangkat keras. Penggunaan memori dengan virtual memori sangat tidak efisien karena besar dari data dan program tidak selalu sama dengan besarnya page. Untuk membuat penggunaan memori yang lebih efisien dipergunakan metoda pengalamatan dengan segmen. Dengan ukuran segmen yang bervariasi bergantung pada besar data atau program maka penggunaan memori akan lebih efisien [11]. Implementasi pengalamatan dengan segmen pada komputer saat ini juga menyertakan kemampuan untuk memproteksi segmen. Proteksi diberikan dengan memberikan hak baca atau tulis pada setiap segmen (lihat Gambar 2). Virtual Segment number Offset Virtual Address 0 3.1 Virtual Memori Konsep virtual memori dipergunakan agar seolah‐ olah komputer memiliki memory‐space yang lebih besar dibandingkan dengan memori fisik yang ada. Memori virtual menggunakan alamat vitual juga (virtual address). Komputer yang menggunakan virtual memori biasanya memiliki rangkaian Memory Management Unit (MMU) yang melakukan manajemen virtual memori dan memetakan virtual memori kedalam fisikal memori. Metoda yang dipakai untuk manajemen virtual memori dinamakan paging. Alamat virtual dibagi‐bagi menjadi pages dan page yang dipetakan kedalam fisikal memori disebut sebagai page‐frame. Alamat virtual dibagi menjadi virtual page number (VPN) dan offset. VPN dipergunakan sebagai index untuk mencari page frame number (PPN) didalam page‐table (lihat Gambar 1). Segment Descriptors Rights Segment Length Segment Physical Address Memory Segment N Process Local Segment Table Gambar 3 Pengalamatan dengan Segmen Suatu proses dapat melakukan operasi baca atau tulis pada sebuah segmen dengan membaca atau menulis pada alamat virtual. Setiap alamat virtual dibagi menjadi alamat segmen virtual (VSN) dan offset. VSN dipergunakan sebagai index untuk mencari Segment Physical Address (SPA) di dalam tabel segmen. Setiap akses akan diperiksa validitasnya dan memiliki hak yang sesuai dengan operasi yang akan dilakukan. 4. Memori Akses menggunakan Capability Konsep capability diperkenalkan oleh Dennis dan Van Horn [10]. Capability pada dasarnya adalh sebuah kunci yang memberikan kemampuan pada pemiliknya untuk mendapatkan akses pada sebuah objek atau entitas dalam sebuah komputer. Setiap objek akan diberikan sebuah alamat (nama) yang tidak dapat ditirukan. Capability terdiri atas sebuah nama (alamat) dan satu set hak akses untuk sebuah objek. Capability tidak dibuat oleh pengguna (user) ataupun diubah oleh suatu program. Pembuatan, pengubahan dan pemindahan capability harus diketahui dan dilakukan oleh OS. 4.1 Nama (Alamat) dari Capability Seperti telah dinyatakan diatas setiap capability harus memiliki nama (alamat) yang unik dan juga unik selamanya. Jika nama capability dilihat sebagai alamat dalam komputer, pada saat ini lebar dari alamat dalam kebanyakan komputer hanya terbatas pada 32 atau 64 bit. Dengan lebar alamat 32 atau 64 bit terlalu kecil untuk dipergunakan sebagai capability yang mengharuskan setiap objek memiliki alamat yang unik [8]. Dari konsep ini terlihat bahwa konsep keamanan selama ini hanya terfokus pada pengamanan data sedangkan konsep capability tidak hanya sebatas mengamankan data tetapi juga mengamankan alamat. Pada penelitian ini jumlah lebar data yang dipakai adalah lebih besar dari 128 bit. Dengan asumsi bahwa alamat dibuat setiap 1 ns (1 G alamat per detik) dan lebar alamat adalah 64 bit, maka alamat akan habis dalam 584.94 tahun. Dengan data ini maka diambil kesimpulan bahwa tidak mungkin menggunakan alamat dibawah 64 bit. Dengan asumsi yang sama dan lebar alamat adalah 128 bit maka alamat akan habis dalam 1.07 x 1022 tahun. 4.2 Pengalamatan berbasis Capability Pengalamatan berbasis capability amat dekat konsep pengalamatan dengan segmen. Perbedaannya adalah alamat dalam capability adalah unik, capability memiliki jangkauan alamat global, proteksi yang diberikan bukan hanya terhadap data tetapi juga terhadap alamat. Beberapa penelitian sebelumnya sudah mencoba untuk membuat implementasi dari capability tetapi selalu terhalang dengan ketidak mampuan perangkat keras untuk mengimplementasi alata yang sangat lebar [18]. Konsep capability‐pun selama ini telah diperbaiki agar menjadi lebih aman dengan mengintegrasikan enkripsi dan bilangan acak pada capability seperti yang diungkapkan oleh Gong, et.al [13]. Prosesor terakhir yang memiliki capability adalah Intel iAPX 432. Prosesor ini tidak pernah menjadi komersial karena akses memorinya sangat lambat [6]. Intel dalam mengimplementasikan capability dalam prosessornya menggunakan terlalu banyak overhead. Penulis dalam penelitian ini mengungkapkan suatu arsitektur capability dengan mengintegrasikan berbagai hasil penelitian sebelumnya dan menambahkan: • Kemampuan untuk memiliki alamat yang sangant besar (> 128 bit) • Metoda Autentikasi capability • Menggunakan hak baca, tulis, dan execute • Memeriksa batas awal dan akhir seguan segmen capability Adapun arsitektur pengalamatan berbasis capability yang dihasilkan dalam penelitian ini dalpat dilihat dalam gambar 4. OpCode Local Object Name Offset Capability List Global Object Name Rights "TLB" Permission Check (Access Policy) Authentication Check Capability Valid Capability Physical Base Address Global Virtual Address Limit Limit Check Valid Access Alllowed Physical Address Gambar 4. Pengalamatan berbasis Capability 5. Kesimpulan Metoda pengalamatan berbasis capability memberikan suatu metoda pengalamatan yang bersifat global. Setiap objek yang akan diakses memliki alamat yang unik. Dengan menggunakan metoda pengalamatan berbasis capability, pemrograman yang menggunakan shared memory akan jauh lebih mudah. Penggunaan jumlah bit yang sangat besar sebagai alamat (>128 bit) memungkinkan implementasi capability. Dengan teknologi VLSI saat ini jumlah bit yang besar sudah dapat diimplementasikan dengan mudah. Komputer yang menggunakan metoda pengalamtan berbasis capability akan memiliki proteksi dalam mengakses memori. Sehingga akan mengurangi serangan‐serangan yang mengandalkan kelemahan pada perangkat lunak yang tidak didukung dengan perangkat keras yang aman. 6. Acknowledgement Penelitian ini tidak mungkin dilakukan tanpa dukungan Dr. Eric Johnson dari New Mexico State University. 7. Referensi [1] Abramson, D.A. and Rosenberg J. "The Micro‐Architecture of a Capability‐Based Computer". Proceeding of ACM 19th [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] International Conference on Microprogramming, New York, 1986 Abramson, D.A. and Rosenberg J. "MONADS‐PC‐‐‐a capability‐based workstation to support software engineering". Proceedings of the 18th Hawaii International Conference on System Sciences, volume 1, pages 222‐‐31. IEEE, 1985. Carter, Nicholas P., Dally, William J., and Keckler, Stephen W. "Hardware support for fast Capability addressing". Proceedings sixth international conference on Architectural support for programming languages and operating systems, 1994, Pages 319 ‐ 327. Chow, Randy, Kao, I‐Lung. "An Extended Capability Architecture to Enforce Dynamic Access Control Policies". Proceeding of the 12th Annual Computer Security Applications Conferences (ACSAC), 1996. CERT/CC, SANS Institute, and CERIAS. "Consensus roadmap for defeating distributed denial of service attacks", February 2000. A Project of the Partnership for Critical Infrastructure Security, http://www.sans.org/ddos roadmap.htm. Colwell, Robert P., Gehringer, Edward F., and Jensen, E. Douglas. "Performance Effects of Architectural Complexity of the Intel 432". ACM Transactions on Computer Systems, Vol. 6, No. 3., August 1988. Computer Emergency Response Team (CERT). "Denial of Service Attacks", http://www.cert.org/tech_tips/denial_of_service.html. Chase, Jeffrey S., Levy Henry M., Barker‐Harvey, Miche, and Lazowska, Edward D. How to use a 64‐bit virtual address space. Technical Report 92‐03‐02, Department of Computer Science and Engineering, University of Washington, March 1992. Denning, Perter J. "Fault Tolerant Operating Systems", Computing Surveys, Vol. 8, No. 4, December 1976. Dennis, Jack B. and Van Horn, Earl C. "Programming Semantics for Multiprogrammed Computations". Communication of the ACM 9. 3 (March 1966), 143‐155. Fabry, R. "Capability‐based addressing". Communications of the ACM 17, 7 (July 1974), 403‐412. Garber, Lee. "Denial of Service Attacks Rip the Internet". IEEE Computer, Volume 33, Number 4, April 2000, pages 12‐17. Gong, L., "A Secure Identity‐Based Capability System". IEEE Symposium on Security and Privacy, May 1989, pp. 56‐64. Johnson, Howard L., Koegel, John F., and Koegel, Rhonda M. "A Secure Distributed Capability Based System". Proceedings of the 1985 ACM annual conference on The range of computing : mid‐80's perspective: mid‐80's perspective,1985. Kain, Richard Y. and Landwehr, Carl E. "On Access Checking in Capability‐Based Systems". IEEE Transactions on Software Engineering, Vol. SE13, No.2, February, 1987. Karger, Paul A. and Herbert, Andrew J. "An Augmented Capability Architecture to Support Lattice Security and Traceability of Access", Proceeding of the 1984 Symposium on Security and Privacy. Pages 2‐12. Oakland, CA, April 1984. IEEE. Lampson, Butler W. and Sturgis, Howard E. "Reflections [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] on an Operating System Design". Communications of the ACM 5. 19 (May 1976), 251 ‐ 265. Levy, H. M. Capability‐Based Computer System. Digital Press, 1984. McClure, Stuart, Scambray, Joel, and Kurtz, George. Hacking Exposed Network Security Secrets and Solutions. Osborne/McGraw‐Hill, 1999. Mullender S., and Tanenbaum, A., "The Design of a Capability‐based Operating System". The Computer Journal, 1986. Myers, G. And Buckingham, B. "A Hardware Implementation of Capability‐Based Addressing". ACM Operating Systems Review, October 1980. Shapiro, Jonathan S., Smith, Jonathan M., and Farber, David J. "EROS: a fast capability system". Proceedings of the 17th ACM symposium on Operating systems principles, 1999, Pages 170 ‐ 185. Snyder L., "Formal Models of Capability‐Based Protection Systems", IEEE Transactions on Computer, Vol. C3, No. 3, March, 1981. Trajkovic, L., Lau, F., Rubin, H., and Smith, M.H. "Distributed Denial of Service Attacks". Proceeding of 2000 IEEE International Conference on Systems, Man, and Cybernetics, Nashville, USA, October 2000. Vochteloo, Jerry, Russel, Stephen, and Heiser, Gernot. "Capability‐based protection in a persistent global virtual memory system". Proceeding of the 3rd IWOOOS, pages 108‐115, December 1993. D. Moore, G. Voelker, and S. Savage. "Inferring Internet Denial‐of‐Service Activity". Proc. 10th USENIX Sec. Symp,. 2001. T. Tsai, A. Baratloo, and N. Singh. "Transparent Run‐Time Defense Against Stack Smashing Attacks". Proceedings of the {USENIX} Annual Technical Conference, 2000. Crispan Cowan and Calton Pu and Dave Maier and Jonathan Walpole and Peat Bakke and Steve Beattie and Aaron Grier and Perry Wagle and Qian Zhang and Heather Hinton. "{StackGuard}: Automatic Adaptive Detection and Prevention of Buffer‐Overflow Attacks". Proc. 7th USENIX Security Conference, pages 63‐78, 1998. Xianjun Geng and Andrew B. Whinston. "Defeating Distributed Denial of Service Attacks". IEEE IT Pro, July/August 2000. Matt Berger and Nancy Weil. "Net backbone withstands major attack". IDG News Service, October 23, 2002. INTEL CORPORATION. "iAPX 432 Architecture and System Concepts". Intel Corporation, Santa Clara, California, 1980.