BAB 11 Keamanan WEB - JENI Web Programming Bab 11 Keamanan WEB

  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.

  Sam pai saat ini sudah banyak Cert ificat ion Aut horit ies yang cukup t erkenal, salah sat unya adalah Verisign. Menent ukan pem ilihan CA adalah t anggung j awab at au wewenang dari seorang adm in unt uk m em berikan sebuah sert ifikat keam anan yang berlaku pada server.

  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: keyAlias keytool -export -alias

  • storepass storepassword certificateFileName
  • file
  • keystore keystore.jks Pada baris diat as dij elaskan bahw a keyt ool digunakan unt uk m em buat cert ificat e file m enggunakan privat e key yang disebut j uga keyAlias yang berada pada keyst ore.

  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 certificateFileName
  • file
  • keystore cacerts.jks keypassword
  • keypass

  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. Unt uk m elakukannya, langkah pert am a login ke adm inist rat ion console. Selanj ut nya klik t ab Configurat ion dan buka HTTP Service :

  Selanj ut nya, klik pada HTTP List ener, dan pada kolom kanan klik t om bol New.

  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 Unt uk dapat m enggunakan kom unikasi yang am an ant ara client dan server, lakukan redirect pada user ke secure list ener port ket ika m engakses aplikasi Anda.

  1 1 .3 1 0 Ce la h k e a m a n a n pa da a plik a si w e b

  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 em bypass 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 em bypass keam anan dari unvalidat ed input ; Masih ada kem ungkinan dim ana cara yang baru t idak dikenali oleh aplikasi dapat m em bypass 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.

  Masalahnya adalah beberapa aplikasi t idak efekt if unt uk m em aksa agar ot orisasi ini bekerj a. Cont ohnya, beberapa program hanya m enggunakan sebuah checkpoint dim ana hanya user yang t erpilih yang dapat m engakses : unt uk proses lebih lanj ut , user harus m em bukt ikan dirinya t erot orisasi dengan m enggunakan user nam e dan passw ord. Akan t et api, Mereka t idak m enj alankan pengecekan dari checkpoint sebelum nya : dim ana apabila user berhasil m elewat i halam an login, m ereka dapat bebas m enj alankan operasi.

  Masalah lain yang berhubungan dengan access cont rol adalah:

  • 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 . Salah sat u cara yang dapat digunakan unt uk m encegah t erlihat nya session I D oleh seseorang pada suat u j aringan yang sam a adalah m enghubungkan kom unikasi ant ara sever dan client pada sebuah SSL- prot ect ed channel.

  I V . Cr oss sit e scr ipt ing

  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 , browser 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 :

  ABASE;' SQL query yang t erbent uk adalah sepert i ini : 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.

  Selain it u, m enggunakan algorit m a enkripsi y ang sudah ada akan lebih baik daripada m em buat algor it m a sendiri. Anda cukup m em ast ikan algorit m a yang akan digunakan t elah diakui oleh public dan benar- benar dapat diandalkan.

  I X . D e n ia l of Se r vice

  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 pe
  • 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 diak
  • 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.
  • Kesalahan aut ent ikasi dengan sist em ekst ernal.