• Tidak ada hasil yang ditemukan

Keamanan Sistem Informasi Buatlah sebuah paper tentang

N/A
N/A
Protected

Academic year: 2018

Membagikan "Keamanan Sistem Informasi Buatlah sebuah paper tentang"

Copied!
11
0
0

Teks penuh

(1)

UJIAN AKHIR SEMESTER GANJIL 2017/2018 Nama : Azka Adzhani Luthfan

NPM : TI1401013

Mata kuliah : Keamanan Sistem Informasi

Kode/Nama Dosen : ESN/Elia Setiana, S.Kom,. MT

Prodi : Teknik Perangkat Lunak

Soal !

Buatlah sebuah paper tentang Keamanan Web (masukan 2 dari 10 OWASP) !

Keamanan Web atau Web Security adalah keamanan untuk sebuah web atau tata cara

mengamankan aplikasi web yang di kelola, biasa nya yang bertanggung jawab melakukan nya

adalah pengelola aplikasi web tersebut. Berbicara mengenai masalah yang berkaitan dengan

keamanan di dalam era digital tidak lepas dari 3 prinsip utama yaitu : Confidentiality, Integrity,

dan Availability atau lebih dikenal dengan nama CIA. Sama halnya ketika bergelut dengan

keamanan (security) sebuah website, princip CIA sudah selayaknya dijadikan pedoman yang

(2)

Buffer Overflows

- Pengertian Buffer Overflows

Buffer adalah area penyimpanan data yang mempunyai kapasitas/ukuran

tertentu. Buffer Overflows terjadi jika suatu program berusaha menyimpan data ke

buffer dimana ukuran data lebih besar dari ukuran buffer. Buffer Overflows terjadi

karena programmer menulis kode tanpa mengecek ukuran dari buffer yang dituju untuk

mengetahui apakah cukup untuk menerima data baru.

Saat jumlah data melebihi ukuran buffer, kelebihan data dapat melimpah ke

lokasi memory terdekat, merusak data dan bisa merubah path dan perintah eksekusi.

Diantara informasi yang rusak, mungkin terdapat informasi yang berisi subroutine

dari suatu program, sehingga program tidak dapat menemukan subroutine dan tidak

dapat menyelesaikan programnya.

Kemampuan eksploitasi Buffer Overflows memungkinkan seseorang untuk

memasukkan kode sembarang ke path eksekusi. Kode ini memungkinkan akses jarak

jauh yang terlarang. Seorang hacker bisa mengirimkan data yang lebih besar dari

ukuran buffer dan berisi kode yang dirancang untuk melakukan aksi tertentu, untuk

merusak atau mengubah data dan membuka informasi rahasia.

- Proses Terjadinya Buffer Overflows

Dalam program yang menggunakan bahasa C, buffer dialokasikan dengan array

atau pointer. C atau C++ tidak mempunyai pengecekan otomatis (automatic bounds

checking) batasan suatu buffer, sehingga pengguna dapat menulis kode untuk

(3)

int main() {

int buffer[10];

buffer[20] = 10;

}

Program diatas adalah program yang valid dan compiler dapat meng-compile

tanpa error. Tetapi program tersebut berusaha untuk memberikan data melebihi alokasi

memory untuk buffer. Hal ini dapat mengakibatkan kejadian yang tidak diinginkan.

Konsep ini digunakan para hacker untuk mengacau industri komputer.

Program yang dapat dieksekusi berisi sekumpulan instruksi biner yang harus

dieksekusi oleh processor. Instruksi ini dapat berupa read-only data, (seperti print format

strings), data global dan data statis yang tetap ada selama proses eksekusi, dan break

pointer yang selalu mengikuti malloced memory. Function local variable adalah variabel

otomatis yang ada di stack selama suatu fungsi bekerja dan dibuang setelah fungsi

selesai bekerja.

Gambar dibawah ini memperlihatkan memory layout dari suatu proses di Linux.

Proses dimulai dengan kode program dan data. Kode dan data berisi intruksi program

serta data global dan data static yang terinisialisasi maupun yang tidak. Setelah itu

adalah run-time heap (dibuat dengan malloc/calloc), dan paling di atas adalah user stack.

(4)

Stack adalah blok memory yang berisi data. Stack Pointer (SP) menunjukkan

puncak dari stack. Jika ada function call, parameter fungsi dimasukkan ke stack dari

kanan ke kiri. Kemudian return address (alamat yang dieksekusi setelah fungsi selesai)

dan frame pointer (FP) juga dimasukkan ke stack. Frame point (FP) digunakan sebagai

referensi dari local variable dan parameter fungsi, karena keduanya berada pada jarak

yang konstan dari frame point (FP). Local automatic variabel dimasukkan ke stack

setelah fram point (FP). Dalam implementasinya, stack terpenuhi dari alamat memory

yang besar ke yang kecil.

.

Ilustrasi di atas adalah bagian-bagian dari stack ketika sebuah fungsi dieksekusi.

Perhatikan FP berada di antar local dan return addresses. Sebuah contoh dalam bahasa

(5)

void function (int a, int b, int c) {

Function stack seperti dibawah ini :

Gambar di atas menunjukkan bahwa buffer1 berisi 8 bytes dan buffer2 berisi 12 bytes.

Sedangkan memory hanya dapat digunakan untuk beberapa word size (4 byte). Sebagai

tambahan, FP diperlukan untuk mengkases a, b, c, buffer1, dan buffer2. Semua variabel

ini akan dibuang dari stack jika fungsi selesai bekerja.

- Serangan Buffer Overfllow

Pada serangan BO, penyusup akan membuat buffer menjadi overflow dengan

script yang ditulis sedemikian rupa sehingga program melakukan apa yang diinginkan

oleh penyusup, bukan apa yang diinginkan pemrogram. Akibatnya, penyusup menjadi

pemrogram karena instruksinya yang dieksekusi. Penyusup sering memprogram ulang

suatu aplikasi untuk membuat program lain bekerja. Sebagai contoh pemrogram dapat

memulai program baru yang dapat mengirimkan data rahasia seperti rekening bank,

password, atau surat rahasia melalui email.

Tujuan dari serangan BO adalah untuk melemahkan fungsi dari suatu program

(6)

selanjutnya adalah mengendalikan host dari jarak jauh. Untuk mencapai hal tersebut,

penyusup harus dapat mengatur kode yang sesuai supaya tersedia di alamat program dan

membuat program untuk jump ke kode tersebut, dengan parameter yang dimasukkan ke

dalam register dan memory.

Serangan BO yang paling sederhana adalah stack smashing, yaitu memberi data

baru pada stack suatu buffer untuk mengganti return address. Saat suatu fungsi selesai,

control akan melompat (jump) ke alamat yang ditulis di stack oleh penyusup, sehingga

penyusup akan mempunyai kemampuan untuk mengeksekusi kode yang diinginkan.

- Solusi Untuk Mencegah Buffer Overflow

Tidak ada satupun metode yang dijelaskan di bawah yang benar-benar bisa

mencegah kemungkinan serangan, namanya juga manusia tempatnya salah dan lupa.

Tetapi metode di bawah ini, dapat meminimalisir dari kegiatan buffer overflows yang

mengakibatkan kerusakan stack.

1. Menulis kode yang aman : Buffer overflow adalah hasil dari input yang berlebihan ke dalam buffer. C library seperti strcpy(), strcat(), sprintf() dan vsprintf() beroperasi

pada null terminated strings dan tidak mengecek batasan input. gets() juga

fungsi lainnya yang memasukkan input ke dalam buffer dari stdin. Pada scanf() juga

bisa mengakibatkan buffer overflows.

2. Stack execute invalidation : Karena koding jahat (contoh, instruksi assembly untuk mengambil alih root shell) merupakan input argument ke dalam program, ini

tersimpan ke dalam stack dan bukan dalam code segment. Oleh karena itu, solusi

mudahnya adalah tidak mempebolehkan stack mengeksekusi instruksi apapun. Kode

apapun yang dieksekusi dengan kode lainnya di dalam stack dapat mengakibatkan

(7)

3. Compiler tools : Beberapa tahun terakhir, compiler mempunyai kemampuan lebih. Beberapa compiler dilengkapi peringatan dalam penggunakan konstruk yang tidak

aman seperti gets(), strcpy() dan sejenisnya, sebagai contoh :

int main () {

char *str = (char *)malloc(10);// mengalokasikan 10 bytes untuk str gets (str); // membaca input dari stdin dan disimpan ke str

}

setelah di kompile, makan muncul warning:

/tmp/cc203ViF.o: In function “main”:

/tmp/cc203ViF.o(.text+0x1f): the “gets” function is dangerous and should not

be used.

Modern compilers tool mempunyai fitur untuk bounds checking, jadi meng-generate

kode yang built-in tanpa mengubah struktur kode yang dapat menghindarkan

penggunaan ilegal addressess. Kode apapun yang dicoba untuk mengakses illegal

(8)

Insecure Storage

Aplikasi web biasanya perlu menyimpan informasi yang sensitif seperti password,

informasi kartu kredit, dan yang lain. Dikarenakan item tersebut bersifat sensitif

item-item tersebut perlu dienkripsi untuk menghindari pengaksesan secara langsung. Akan tetapi

beberapa metode enkripsi yang lemah dan masih bisa diserang.

Berikut ini beberapa kesalahan yang sering terjadi :

a) Kesalahan untuk mengenkripsi data penting.

b) Tidak amannya kunci, certificate, dan password

c) Kurang amannya tempat penyimpanan data

d) Kurangnya perhitungan dari rekomendasi

e) Kesalahan pemilihan algoritma

f) Mencoba untuk menciptakan algoritma enkripsi yang baru.

Berdasarkan skenario diatas, terdapat sebuah aplikasi dimana terdapat password pada user

object. Akan tetapi, aplikasi menyimpan user objek ke dalam session setelah user login.

Permasalahan yang akan muncul pada skenario ini adalah password dapat dilihat oleh

seseorang yang dapat melihat session user tersebut.

- Lingkungan yang terkena dampak serangan

Sebagian besar lingkungan aplikasi web mencakup beberapa bentuk dukungan

kriptografi. Dalam kasus yang jarang terjadi, dukungan semacam itu belum tersedia,

ada beragam produk pihak ketiga yang dapat ditambahkan. Hanya situs web yang

menggunakan enkripsi untuk melindungi informasi dalam penyimpanan atau transit

yang rentan terhadap serangan tersebut. Perhatikan bahwa bagian ini tidak mencakup

penggunaan SSL, yang tercakup dalam Insecure Configuration Management. Bagian

(9)

- Pendekatan

Menemukan kekurangan kriptografi tanpa akses ke kode sumber bisa sangat

memakan waktu. Namun, mungkin untuk memeriksa token, ID sesi, cookies dan

kredensial lainnya untuk melihat apakah mereka jelas tidak acak. Semua pendekatan

kriptanalisis tradisional dapat digunakan untuk mencoba menemukan bagaimana

sebuah situs web menggunakan fungsi kriptografi.

Sejauh ini pendekatan yang paling mudah adalah meninjau ulang kode untuk

melihat bagaimana fungsi kriptografi diimplementasikan. Pemeriksaan struktur,

kualitas, dan penerapan modul kriptografi harus dilakukan dengan hati-hati. Peninjau

harus memiliki latar belakang yang kuat dalam penggunaan kriptografi dan kelemahan

umum. Peninjauan juga harus mencakup bagaimana kunci, kata kunci, dan rahasia

lainnya disimpan, dilindungi, dimuat, diproses, dan dihapus dari memori.

- Solusi

Cara termudah untuk melindungi dari kekurangan kriptografi adalah

meminimalkan penggunaan enkripsi dan hanya menyimpan informasi yang

benar-benar diperlukan. Misalnya, alih-alih mengenkripsi nomor kartu kredit dan

menyimpannya, cukup meminta pengguna memasukkan kembali nomor-nomornya.

Selain itu, alih-alih menyimpan kata sandi terenkripsi, gunakan fungsi hash satu arah

baru-baru ini (seperti SHA-256) untuk hash kata kunci.

Jika kriptografi harus digunakan, pilihlah perpustakaan yang telah terpapar

pengawasan publik dan pastikan tidak ada kerentanan terbuka. Enkapsulasi fungsi

kriptografi yang digunakan dan mengkaji ulang kode dengan saksama. Pastikan rahasia,

seperti kunci, sertifikat, dan kata sandi, disimpan dengan aman. Untuk menyulitkan

(10)

runtime. Lokasi seperti itu mungkin termasuk file konfigurasi, server eksternal, atau

kode itu sendiri.

- Kesimpulan

Keamanan Web memang tidak selalu aman, pasti ada celah yang dapat

dibobol/diretas oleh para hacker. Bahkan dalam media penyimpanan (storage)

sekalipun. Salah satu cara yang dilakukan untuk menghindari kesalahan penyimpanan

informasi yang sensitif adalah tidak membuat password sebagai atribut dari kelas yang

mewakili informasi user. Daripada mengenkripsi nomor kartu kredit dari user, akan

lebih baik untuk menanyakannya setiap kali dibutuhkan.

Selain itu, menggunakan algoritma enkripsi yang sudah ada akan lebih baik

daripada membuat algoritma sendiri. Anda cukup memastikan algoritma yang akan

(11)

Daftar Pustaka

https://www.owasp.org/index.php/Buffer_Overflow/

https://www.usd.ac.id/lembaga/lppm/f1l3/.../02-Damaredited3.pdf

https://logsmylife.wordpress.com/2009/03/31/konsep-buffer-overflow-vurnabilities-dan-pencegahannya/

https://blog.estuwebdesign.com/2015/11/pengertian-web-security/

https://www.owasp.org/index.php/OWASP_Guide_Project/

Gambar

Gambar di atas menunjukkan bahwa buffer1 berisi 8 bytes dan buffer2 berisi 12 bytes.

Referensi

Dokumen terkait

untuk Memenuhi Salah Satu Persyaratan Guna Memperoleh Gelar Strata Satu Sarjana Pendidikan

Akibat tidak adanya pengetahuan detail terkait energi, sumber daya manusia di dalam bank sangat terbatas untuk bisa meninjau studi-studi teknis, seperti

Ketiga, Pengaruh antara kualitas pelayanan (reliability, responsiveness, assurance, empathy dan tangibles) dan lokasi terhadap keputusan nasabah untuk menabung di BMT Sumber

pertayaan oleh peneliti untuk angket minat belajar.. tentang angket minat belajar anak yang digunakan dalam penelitian. dapat dilihat dalam tabel berikut:

Berdasarkan hasil pembahasan yang telah dipaparkan pada bab sebelumnya mengenai pembentukan model estimasi inflasi dengan menggunakan empat variabel input (nilai tukar,

Rangkaian switch sumber arus listrik berfungsi untuk menyalurkan tegangan listrik dari sumbernya yaitu solar cell / power supply / generator ( motor stepper ) ke rangkaian

km Kilometer panjang m Meter panjang cm centimeter panjang mm millimeter panjang nm nanometer panjang mg milligram massa/bobot. g gram massa/bobot s sekon (detik)

Pengendalian risiko (mitigasi) dari risiko tersebut yaitu legalitas pendirian perusahaan nasabah harus mendapatkan pengesahan dari Departemen Koperasi, Pengusaha Kecil dan Menengah