BAB 1 1
Ke a m a n a n W EB
1 1 .1 Pe n da h u lu a n
Pem bahasan t ent ang web program m ing belum lengkap apabila belum m em pelaj ari t ent ang keam anan dalam aplik asi. Fasilit as yang m elim pah, fungsi yang sangat banyak t idak akan berart i apabila aplikasi kit a gagal dalam hal pengam anan dat a.
Pada bab ini, kit a akan m em pelaj ari bagaim ana m engam ankan kom unikasi ant ara server dan client m elalui SSL. Kit a j uga akan m em pelaj ar i t ent ang 10 celah keam anan pada aplikasi web dan m em pelaj ar i bagaim ana cara m enanggulanginya.
1 1 .2 SSL
SSL t elah m enj adi st andar de fact o pada kom unit as unt uk m engam ankan kom unikasi ant ara client dan server. Kepanj angan dari SSL adalah Secure Socket Layer; SSL adalah sebuah layer pr ot ocol yang berada ant ara layer TCP/ I P st andar dengan prot ocol di at asnya yait u applicat ion- level prot ocol sepert i HTTP. SSL m engij inkan server unt uk m elakukan aut ent ikasi dengan client dan selanj ut nya m engenkripsi kom unikasi.
Pem bahasan t ent ang operasi SSL pada bab ini bert uj uan agar kit a m enget ahui penggunaan t eknologi ini unt uk m engam ankan kom unikasi ant ara server dengan client .
1 1 .2 .1 M e n ga k t ifk a n SSL pa da a plik a si.
Unt uk m enget ahui keunt ungan SSL pada aplikasi, kit a perlu m elakukan konfigurasi server unt uk m enerim a koneksi SSL. Pada servlet cont ainer yang berbeda akan berbeda pula cara unt uk m elakukannya. Disini kit a akan belaj ar t ent ang m elakukan konfigurasi Sun Applicat ion Server 8.1
1 1 .2 .2 Ce r t ifica t e s
Salah sat u bagian yang perlu kit a konfigurasi unt uk m em bangun kom unikasi SSL pada server adalah sebuah securit y cert ificat e. Bisa kit a bayangkan sebuah cert ificat e dalam hal ini sepert i sebuah pasport : dim ana m em iliki inform asi- inform asi pent ing pem ilik yang bisa diket ahui oleh orang lain. Sert ifikat t ersebut biasanya disebarkan oleh Cert ificat ion Aut horit ies ( CA) . Sebuah CA m irip sepert i passport office : dim ana CA bert ugas unt uk m elakukan validasi sert ifikat pem ilik dan m enandai sert ifikat agar t idak dapat dipalsukan.
Apabila pada suat u kasus dit em ukan t idak adanya cert ificat e dari CA, sebuah cert ificat e t em porer ( sem ent ara) dapat dibuat m enggunakan t ools dari Java 1.4 SDK. Perlu Anda cat at bahw a client biasanya t idak m elanj ut kan t ransaksi yang m em erluk an t ingkat kem anan yang t inggi dan m enem ukan bahwa cert ificat e yang digunakan adalah cert ificat e yang kit a buat .
1 1 .2 .3 M e m bu a t ce r t ifica t e pr iva t e k e y
Unt uk m enyederhanakan perm asalahan ini, akan lebih m udah bila dengan m elakukan operasi dim ana cert ificat e disim pan. Hal ini dapat dit em ukan do direkt ori % APP_SERVER_HOME% / dom ains/ dom ain1/ config.
Buka direct ory m enggunakan com m and line. Selanj ut anya panggil com m and berikut ini:
keytool -genkey -alias keyAlias -keyalg RSA -keypass keypassword -storepass storepassword
-keystore keystore.jks
• keyAlias – adalah alias at au I D dim ana cert ificat e ini akan m enunj uk kepada siapa. • keypassword – adalah password unt uk privat e key yang digunakan dalam proses
enkripsi.
• st orepassword – adalah password yang digunakan unt uk keyst ore.
Dalam hal ini m ungkin sedikit m em bingungkan dim ana dibut uhkan dua passw ord unt uk m em buat sebuah cert ificat e. Unt uk m engat asinya, bisa kit a ingat bahw a key yang dim asukkan disebut j uga keyst ore. Keyst ore dapat m enyim pan sat u at au beberapa key. Keypassword m erupakan password dari privat e key yang akan digunakan pada cert ificat e, sedangkan st orepassword m erupakan password dari key yang ada di dalam keyst ore. Pada direkt ori yang sedang kit a operasikan sudah m em iliki sebuah keyst ore file dengan sebuah password, sehingga kit a perlu m enset nilai st orepass m enj adi : changeit .
Password ini dapat digant i m enggunakan keyt ool sepert i ini:
keytool -keystore keystore.jks -storepass newPassword
1 1 .2 .4 M e m bu a t ce r ifica t e
Set elah kit a selesai m em buat key yang akan digunakan oleh cerit ificat e sekarang kit a dapat m em buat file cert ificat e it u sendiri:
keytool -export -alias keyAlias -storepass storepassword -file certificateFileName -keystore keystore.jks
1 1 .2 .5 M e n ga t u r ce r t ifica t e
Agar aplik asi server dapat m engenali cert ificat e yang sudah kit a buat , kit a perlu m enam bahkannya pada daft ar dari t rust ed cert ificat es. Server m em ilik i file bernam a cacert s.j ks yang di dalam nya t erdapat cert ificat es. Kit a dapat m enam bahkan cert ificat e kit a dengan m enggunakan keyt ool berikut ini:
keytool -import -v -trustcacerts -alias keyAlias
-file certificateFileName -keystore cacerts.jks -keypass keypassword
1 1 .2 .6 M e m bu a t se cu r e H TTP list e n e r
Set elah kit a sudah berhasil m em buat cert ificat e dan m eregist ernya unt uk aplikasi server, sekarang kit a akan m em buat sebuah HTTP list ener yang dapat digunakan unt uk m em buat kom unikasi yang am an.
Pada screen diat as m erupakan hasil dari klik dari New but t on dengan disert ai cont oh nilai yang sudah t erisi.
Lakukan rest art pada server. Konfigurasi baru kit a dapat kit a coba dengan m engakases alam at :
ht t ps: / /serverAddress:list enerPort/ index.ht m l
Open Web Applicat ion Securit y Proj ect ( OWASP) adalah proj ect open source yang dibangun unt uk m enem ukan penyebab dari t idak am annya sebuah soft ware dan m enem ukan cara m enanganinya. Ada 10 celah kem anan aplikasi web yang dit em ukan dan rekom endasi m ereka t ent ang m enanganinya sebagai sebuah st andard keam anan m inim al dari aplik asi web.
Berikut ini adalah 10 celah t ersebut dan cara agar kit a dapat m engat asi m asalah t ersebut .
I . Unva lida t e d in pu t
Sem ua aplikasi web m enam pilkan dat a dari HTTP request yang dibuat oleh user dan m enggunakan dat a t ersebut unt uk m elakukan operasinya. Hacker dapat m em anipulasi bagian-bagian pada request ( query st ring, cookie inform at ion, header) unt uk m embypass m ekanism e keam anan.
Berikut ini t iga j enis penyerangan yang berhubungan dengan m asalah ini: • Cross sit e script ing
• Buffer overflows • I nj ect ion flaws
Ada beberapa hal yang dapat dicat at ket ika m enangani validasi pada aplikasi kit a. Pert am a, adalah t idak baik pada aplikasi web unt uk percaya pada client side script ing. Script t ersebut biasanya m enghent ikan form subm ission apabila t erdapat sebuah input yang salah. Akan t et api, script t ersebut t idak dapat m encegah hacker unt uk m em buat HTTP request nya sendiri yang t erbebas dari form . Menggunakan client side validat ion m asih bisa m em buat aplikasi w eb yang m udah diserang.
Kedua, beberapa aplikasi m enggunakan pendekat an " negat ive" ( negat ive approach) pada validasinya : Aplikasi m encoba m endet eksi j ika t erdapat elem en yang berbahaya pada request param et er. Masalah dari j enis pendekat an ini adalah hanya bisa m elindungi dari beberapa serangan yait u : hanya serangan yang dikenali oleh validat ion code yang dicegah. Ada banyak cara dim ana hacker dapat m embypass keam anan dari unvalidat ed input ; Masih ada kem ungkinan dim ana cara yang baru t idak dikenali oleh aplikasi dapat m embypass validasi dan m elakukan perusakan. Adalah cara yang lebih baik unt uk m enggunakan pendekat an " posit ive" ( posit ive approach) yait u : m em bat asi sebuah form at at au pola unt uk nilai yang diij inkan dan m em ast ikan input t ersebut sesuai dengan form at t ersebut .
I I . Br ok e n Acce ss Con t r ol
Banyak aplikasi yang m engkat egorikan user- usernya ke dalam role yang berbeda dan level yang berbeda unt uk berint eraksi dengan cont ent yang dibedakan dari kat egori- kat egori t ersebut . Salah sat u cont ohnya, banyak aplikasi y ang t erdapat user role dan adm in role : hanya adm in role yang diij inkan unt uk m engakses halam an khusus at au m elakukan act ion adm inist rat ion.
• I nsecure I ds – Beberapa sit e m enggunakan id at au kunci yang m enunj uk kepada user at au fungsi. I D dapat j uga dit ebak, dan j ika hacker dapat m udah m enebak I D dari user yang t eraut orisasi, m aka sit e akan m udah diserang.
• File perm issions – Kebanyakan w eb dan aplikasi server percaya kepada ext ernal file yang m enyim pan daft ar dari user yang t erot orisasi dan resources m ana saj a yang dapat dan/ at au t idak dapat diakses. Apabila file ini dapat dibaca dari luar, m aka hacker dapat m em odifikasi dengan m udah unt uk m enam bahkan dirinya pada daft ar user yang diij inkan.
Langkah- langkah apa saj a yang dapat dilakukan unt uk m engat asinya? Pada cont oh- cont oh t adi, kit a dapat m engem bangkan filt er at au kom ponen yang dapat dij alankan pada sensit ive resources. Filt er at au kom ponen t adi dapat m enj am in hanya user yang t erot orisasi dapat m engakases. Unt uk m elindungi dari insecure I ds, kit a harus m engem bangkan aplikasi kit a agar t idak percaya pada kerahasiaan dari I ds yang dapat m em beri access cont rol. Pada m asalah file perm ission, file- file t ersebut harus berada pada lokasi yang t idak dapat diak ses oleh w eb browser dan hanya role t ert ent u saj a yang dapat m engaksesnya.
I I I . Br ok e n Aut h e n t ica t ion da n Se ssion M a na ge m e n t
Aut hent icat ion dan session m anagem ent m enunj uk kepada sem ua aspek dari pengat uran user aut hent ikasi dan m anagem ent of act ive session. Berikut ini beberapa hal yang perlu diperhat ikan :
• Password st rengt h – Aplikasi kit a harus m em berikan level m inim al dari keam anan sebuah password, dim ana dapat dilihat dengan cara m elihat panj ang dari password dan kom pleksit asnya. Cont ohnya sebuah aplikasi dim ana t erdapat user baru yang akan m endaft ar : aplikasi t idak m engij inkan passw ord dengan panj ang 3- 4 karakt er at au kat a-kat a sim pel yang dapat m udah dit ebak oleh hacker.
• Password use – Aplikasi kit a harus m em bat asi user yang m engakses aplikasi m elakukan login kem bali ke sist em pada t enggang wakt u t ert ent u. Dengan cara ini aplikasi dapat dilindungi dari serangan brut e force dim ana hacker bisa m enyerang berulang kali unt uk berhasil login ke sist em . Selain it u, log in yang gagal sebaiknya dicat at sebagai inform asi kepada adm inist rat or unt uk m engindikasikan kem ungkinan serangan yang t erj adi.
• Password st orage – password t idak boleh disim pan di dalam aplikasi. Password harus disim pan dalam form at t erenkripsi dan disim pan di file lain sepert i file dat abase at au file passw ord. Hal ini dapat m em ast ikan bahw a inform asi yang sensit if sepert i passw ord t idak disebarkan ke dalam aplikasi.
I ssue lain yang berhubungan : password t idak boleh dalam bent uk hardcoded di dalam source code.
• Session I D Prot ect ion – server biasanya m enggunakan session I d unt uk m engident ifikasi user yang m asuk ke dalam session. Akan t et api j ika session I D ini dapat dilihat oleh seseorang pada j aringan yang sam a, orang t ersebut dapat m enj adi seorang client .
Cross sit e script ing t erj adi ket ika seseorang m em buat aplikasi w eb m elalui scr ipt ke user lain. Hal ini dilakukan oleh penyerang dengan m enam bahkan cont ent ( sepert i JavaScript , Act iveX, Flash) pada request yang dapat m em buat HTML out put yang dapat dilihat oleh user lain. Apabila ada user lain yang m engakses cont ent t ersebut , brow ser t idak m enget ahui bahwa halam an t ersebut t idak dapat dipercaya.
Cara yang bisa digunakan unt uk m encegah serangan cross sit e script ing adalah dengan m elakukan validasi dat a m asuk dari user request ( sepert i header, cookie, user param et er, ...) . Cara negat ive approach t idak digunakan : m encoba unt uk m em filt er act ive cont ent m erupakan cara yang t idak efekt if.
V . Bu ffe r ove r flow s
Penyerang dapat m enggunakan buffer overflow s unt uk m erusak aplikasi w eb. Hal ini dilakukan karena penyerang m engirim kan request yang m em buat server m enj alankan kode- kode yang dikirim kan oleh penyerang.
Kelem ahan buffer overflow biasanya sulit didet eksi dan sulit dilakukan oleh hacker. Akan t et api penyerang m asih bisa m encari kelem ahan ini dan m elakukan buffer overflow pada sebagian aplikasi w eb.
Terim a kasih at as desain dari Java environm ent , dim ana aplikasi yang berj alan pada J2EE server am an dari j enis serangan ini.
Unt uk m em ast ikan keam anan, cara yang paling baik adalah m elakukan pengawasan apabila t erdapat pat ch at au bug report dari produk server yang digunakan.
V I . I n j e ct ion fla w s
Salah sat u kelem ahan yang populer adalah inj ect ion flaw , dim ana hacker dapat m engirim kan at au m enginj ect request ke operat ing syst em at au ke ext ernal sum ber sepert i dat abase.
Salah sat u bent uknya adalah SQL inj ect ion. Berikut ini salah sat u cont oh dari SQL inj ect ion :
http://someServer/someApp/someAction?searchString=jedi
URL diat as akan m em proses pencarian dengan kat a kunci 'j edi'. I m plem ent asi dim ana t idak ada validasi input adalah sepert i SQL code berikut ini :
select * from someTable where someField='value'
dim ana value adalah nilai dar i param et er searchSt ring yang ada pada HTTP request .
Bagaim ana j ika, hacker m elakukan input dari URL sepert i ini :
http://someServer/someApp/someAction?searchString=jedi'%20AND%20true;
select * from someTable where someField='jedi' AND true; DROP DATABASE;''
St at em ent awal past i akan dit erim a dim ana t erdapat klausa AND TRUE. Dan st at em ent selanj ut nya yait u DROP DATABASE j uga akan diekseskusi yang akan m em berikan kerusakan pada aplikasi.
Serangan ini bisa m ungkin t erj adi karena input yang t idak divalidasi. Ada dua cara yang bisa dilakukan unt uk m encegah serangan ini yait u:
• Daripada m enggunakan st at em ent SELECT, I NSERT, UPDATE dan DELETE st at em ent , bisa dibuat fungsi yang m elakukan hal serupa. Dengan m enggunakan fungsi diharapkan ada pengam anan t erhadap param et er. Selain it u dengan adanya fungsi, param et er yang m asuk harus sam a dengan t ipe dat a dari param et er yang dideklarasikan.
• Hak akses dalam aplikasi j uga harus dibat asi. Cont ohnya, j ika aplikasi hanya bert uj uan unt uk m elihat dat a, t idak perlu diberikan hak akses unt uk m elakukan I NSERT, UPDATE at au DELETE. Jangan m enggunakan account adm in pada aplikasi w eb unt uk m engakases dat abase. Hal ini j uga dapat m em inim ailkan serangan dari hacker.
V I I I . I n se cu r e st or a ge
Aplikasi w eb biasanya perlu m enyim pan inform asi yang sensit if sepert i passw ord, inform asi kart u kredit , dan yang lain. Dikarenakan it em - it em t ersebut bersifat sensit if it em - it em t ersebut perlu dienkripsi unt uk m enghindari pengaksesan secara langsung. Akan t et api beberapa m et ode enkripsi m asih lem ah dan m asih bisa diserang.
Berikut ini beberapa kesalahan yang sering t erj adi :
• Kesalahan unt uk m engenkripsi dat a pent ing • Tidak am annya kunci, cert ificat e, dan passw ord • Kurang am annya lokasi penyim panan dat a • Kurangnya penghit ungan dari random isasi • Kesalahan pem ilihan algorit m a
• Mencoba unt uk m encipt akan algorit m a enkripsi yang baru
Berdasarkan skenario berikut ini : Terdapat sebuah aplikasi, dim ana t erdapat password pada user obj ect . Akan t et api, aplikasi m enyim pan user obj ect ke dalam session set elah user login. Perm asalahan yang akan m uncul pada skenario ini adalah passw ord dapat dilihat oleh seseorang yang dapat m elihat session dari user t ersebut .
Salah sat u cara yang dilakukan unt uk m enghindari kesalahan penyim panan inform asi yang sensit if adalah : t idak m em buat password sebagai at ribut dari kelas yang m ewakili inform asi user; Daripada m engenkripsi nom or kart u kredit dari user, akan lebih baik unt uk m enanyakannya set iap kali dibut uhkan.
Denial of Service m erupakan serangan yang dibuat oleh hacker yang m engirim kan request dalam j um lah yang sangat besar dan dalam wakt u yang bersam aan. Dikarenakan request - request t ersebut , server m enj adi kelebihan beban dan t idak bisa m elayani user lainnya.
Serangan DoS m am pu m enghabiskan bandw idt h yang ada pada server. Selain it u dapat j uga m enghabiskan m em ory, koneksi dat abase, dan sum ber yang lain.
Pada um um nya sangat sulit unt uk m elindungi aplikasi dari ser angan ini. Akan t et api m asih ada cara yang dapat dilak ukan sepert i m em bat asi resource yang dapat diakses user dalam j um lah yang m inim al. Merupakan ide / cara yang bagus unt uk m em buat load quot a yang m em bat asi j um lah load dat a yang akan diakses user dari sist em .
Salah sat u cont oh adalah pada im plem ent asi bullet in board : adanya pem bat asan user pada saat m elakukan search, dim ana operasi ini hanya dapat dilakukan set iap 20 det ik. Dengan cara ini dapat dipast ikan bahwa user t idak bisa m enghabiskan koneksi dari dat abase.
Solusi yang lain adalah m endesain aplikasi w eb dim ana user yang belum t erot orisasi hanya m em iliki akses yang sedikit at au t idak m em iliki akses ke cont ent w eb yang berhubungan dengan dat abase.
X . I n se cu r e Con figu r a t ion M a na ge m e n t
Biasanya kelom pok ( group) yang m engem bangkan aplikasi berbeda dengan kelom pok yang m engat ur host ing dari aplikasi. Hal ini bisa m enj adi berbahaya, dikarenakan keam anan yang diandalkan hanya dari segi aplikasi : sedangakan dari segi server j uga m em iliki aspek keam anan yang perlu diperhat ikan. Adanya kesalahan dari konfigurasi ser ver dapat m elew at i aspek keam anan dari segi aplikasi.
Berikut ini adalah kesalahan konfigurasi server yang bisa m enim bulkan m asalah :
• Celah keam anan yang belum dipat ch dari soft ware yang ada pada server – adm inist rat or t idak m elakukan pat ch soft ware yang ada pada server.
• Celah keam anan server dim ana bisa m enam pilkan list dari direkt ori at au j uga serangan berupa direct ory t raversal.
• File- file backup at au file cont oh ( sam ple file) , file- file script , file konfigurasi yang t ert inggal / t idak perlu.
• Hak akses direkt ori at au file yang salah.
• Adanya service yang sepert i rem ot e adm inist rat ion dan cont ent m anagem ent yang m asih akt if.
• Penggunaan default account dan default password.
• Fungsi adm inist rat ive at au fungsi debug yang bisa diakses. • Adanya pesan error yang inform at if dari segi t eknis.
• Kesalahan konfigurasi SSL cert ificat e dan set t ing enkripsi.
• Penggunaan self- signet cert ificat es unt uk m elakukan aut ent ikasi. • Penggunaan default cert ificat e.