Integrasi Security pada Sistem Perangkat Lunak

Dikirim Software Engineer pada Juli 20, 2008 oleh cupubanget

Dulu gw sama temen2 pernah ngadain seminar di kampus. Gak tau kenapa kok gw pas itu pengen banget liat forum hacking and deface di forum students dikampus gw. Biasalah di forum itu setiap user memperlihatkan hasil kerjanya dengan ngedeface atau ngeHack website orang dengan seenaknya. Kenapa gw bilang seenaknya karena menurut gw, Hacker yang benar-benar sudah ahlipun tau Etikanya klo ngeHack situs orang. Pas di akhir page ada orang yang nunjukin kerjanya, pas gw liat dan gw amati hasilnya kok dia NgeHack situs dengan nampilin Acara seminar gw itu dengan biaya gratis tanpa dipungut bayaran. Terus gw langsung aja tanyain ke panitia dan mereka bilang kagak pernah nyimpan informasi di situs apapun. Gw baru nyadar ternyata situs itu telah kena Hack dan Gw jadi Korbannya…. Hiks..Hiks..

Kadang para pengembang perangkat lunak terlalu fokus pada fungsionalitas dari sistem yang dibuat, sementara untuk hal keamanan sistem sering diabaikan dan menganggap hal itu tidak terlalu penting untuk diperhatikan. Namun setelah terjadi hal-hal yang tidak di inginkan seperti terjadi hacking atau apalah yang menyebabkan sistem rusak, baru keamanan menjadi hal yang perlu untuk diperhatikan padahal mengubah suatu sistem yang udah ada (udah pernah dibuat) membutuhkan biaya yang banyak dan waktu yang lama.

Gw searching-searching di google bagaimana caranya membuat suatu sistem yang lumayan secure (karena susah banget bwt sistem yang benar2 secure) , gw dapatin website Security Pattern, security pattern ini merupakan sebuah pattern (pola) bagaimana mengintegrasikan aspek keamanan dengan sistem agar didapatkan sebuah program yang reusable sehinggga memudahkan pengembang perangkat lunak dalam memaintenance perangkat lunak.

Frente - Horrible

Dikirim West pada Juli 17, 2008 oleh cupubanget

Horrible

/* lagu ini nih yang tiap hari mengiringi pekerjaan gw dalam membuat TA.. Lagu ini mesti aja ada di server music..*/

I can’t exist anymore
till I destroy you
I hate everyone
Don’t know what to do
Ingesting flesh and bone
makes me a cannibal
Or am I criminal?
I feel so horrible

Horrible
Now everything’s horrible
Horrible

Sucking on colorforms
Becoming see through
Still hating everyone
as I detest you
I do not feel wrong
this makes me durable
or am I criminal
I’m so damn horrible

Horrible
Now everything’s horrible
Horrible

Fade into yesterday
Searching for my youth
Trying to digest it all
Searching for the truth
Self centered devil spawn
This makes me durable
Or am I criminal
I’m fucking horrible

Horrible
Now everything’s horrible
Horrible

Horrible
Now everything’s horrible
Horrible
Horrible

malam sabtu ngapain ya…

Dikirim activity pada Juni 20, 2008 oleh cupubanget

Wedew.. gw ampe dongkol nungguin temen yang mau ngejelasin aplikasi yang dia buat untuk di periksa ama gw… ampe jam 09.30 malam kagak nyampe-nyampe juga…akhirnya dari pada gw buang-buang waktu gak jelas mending gw baca-baca referensi buat TA gw (cieee… ceritanya TA nehh…) yahh dikit-dikit lah meskipun gw kagak ngerti apa yang gw baca soalnya bahannya bahasa inggris gitu dech… haha =))

2 Minggu kebelakang ini gw fokus dulu ke UAS kagak mikirin TA dl.. soalnya daripada gw bingung mikirin TA kagak ada hasilnya mending gw fokus dl ke UAS. Sebenernya sih yang gw kagak tau tuh dari TA gw (yg Judulnya: Analisys & Implementasi Design Pattern Security) gimana cara membuat suatu software yang secure dengan menggunakan metode Design Pattern security. Gw kagak ngerti apa parameter suatu software dikatakan secure..?!?! ada yang ngerti gak ya…?? setau gw sih susah banget kita ngukur2 security suatu software. Setelah gw baca-baca sih dengan menggunakan metode yang namanya Security metric. Gw juga belom ngerti apa yang didapatkan dari metric ini cuman setidaknya mudah-mudahan dari metric ini didapatkan parameter-parameter dan nilai untuk mengukur keamanan sebuah aplikasi.

akhinya ampe jam 10.32 pm ini gw baru aja selese download buku design pattern security (judulnya : Security Patterns Integrating Security and Systems Engineering ) sama buku security metric (judulnya: Security Metrics Replacing fear, Uncertainty and doubt) dari Flazx biar gratis soalnya kan gw kagak punya duit kalau harus beli dari amazon.

Moga aja deh buku ini ada manfaatnya… Amieen..

Kok Bisa..Situs Metasploit di deface….????

Dikirim Security pada Juni 17, 2008 oleh cupubanget

Gw baru baca news di tempat nongkrong gw, ternyata situs pemilik sebuah framework untuk mengexploitasi vulnerability bisa di deface juga…(keren juga yahh yang ngedeface..).Berita nya begini :

Tepatnya kemarin (02 Juni 2008), HD Moore mengumumkan permasalahan yang mengakibatkan beberapa individu menganggap bahwa situs resmi milik metasploit (salah satu framework untuk melakukan ekploitasi terhadap berbagai vulnerabillities) telah di deface di mailing list full disclosure. HD Moore menyebutkan bahwa attacker telah berhasil masuk ke jaringan dimana server metasploit berada dan berhasil melakukan ARP Spoofing.

Pagi kemarin (senin, 2 juni) network dimana server metasploit berada telah di hijack dan dengan menggunakan teknik ARP spoofing maka attacker berhasil mengalihkan setiap pengguna yang akan mengakses situs metasploit kesebuah halaman bertuliskan “hacked by sunwear ! just for fun” lalu pengguna juga di arahkan ke sebuah forum diskusi berbahasa cina yang berisi gambar situs metasploit yang di hijack. (see image)

Metasploit sebagai salah satu aplikasi yang berhasil menyita perhatian khususnya dikalangan permerhati keamanan komputer, serta pembuka jalan bagi para pendatang baru tersebut sangatlah besar kemungkinan di jadikan incaran para attacker, HD Moore juga mengumumkan bahwa server yang menyimpan aplikasi framework tersebut tidak tersentuh sama sekali, serta menyarankan para pengguna dan developer untuk menggunakan jalur ssl saat mengakses source code Metasploit Framework ke alamat https://metasploit.com/svn/framework3/trunk/ , dan Moore sendiri secara cepat merubah melakukan hardcoded ARP sesungguhnya untuk router dan hal itu berhasil mengatasi serangan MITM tersebut, tetapi hal ini tidak akan melindungi 250 server lainnya yang tergabung di situ.

Cara yang digunakan oleh attacker ini cukup unik meskipun relatif tidak sulit, disamping beberapa isu DNS redirection yang sudah lebih dulu popular untuk menipu user tanpa harus menyentuh server suatu situs :), persoalan ini (ARP/DNS Spoofing) juga berlaku di local area network anda yang meskipun tidak akan berdampak global tetapi cukup berbahaya (phishing) .

Sumber : http://e-rdc.org/

Adu Bandwidth Account VPN

Dikirim iseng pada Mei 6, 2008 oleh cupubanget

Suatu ketika temen gw dengan nada songongnya ngajak ngliatin besar bandwidth yang dipake sama dya selagi Ngenet pake speedtest … Okeh gw layanin deh, kali ini gw mengalah untuk melihat bandwidth gak penting punya dya itu… Pas gw liat wahhhhh bandwith 1,2 Mbps meeeennnn… gw sempet kaget tadinya, kok bisa2nya orang secupu dya punya bandwidth segitu… secara account dya kan mahasiswa gitu loh… sampe pada akhirnya dya juga ngajak adu kekuatan bandwidth sama guwa…. gw agak deg2an juga sih takutnya account punya gw servernya lagi down, bisa diejek abis2an gw sama dya. Tapi gak apa-apalah, gw buka aja webnya speedtest itu… dan hasil akhir…treeettttttt… Liat nih mang account gw….

bandwidth gw

Lumayan juga akhirnya gw bisa melebihi bandwidthnya dya… padahal sih bagi gw dah biasa dapat segini mah… Hehehe :)

Implementasi Design Pattern pada AOP

Dikirim Software Engineer pada Mei 4, 2008 oleh cupubanget

Kalau kemarin-kemarin gw udah ngebahasa sedikit tentang konsep AOP . sekarang gw akan nyoba untuk menjelaskan implementasi Deisgn Pattern dengan menggunakan paradigma AOP. Biasanya design pattern di terapkan dengan menggunakan paradigma OOP. Dimana segala sesuatu dalam Real world dipandang sebagai objek. Dalam metode OOP kadang kita temui kode program (methode) yang sebenarnya bukan merupakan karakteristik dari objek tersebut tetapi penting untuk diterapkan di objek tersebut. Dan methode ini digunakan juga sama objek yang lain sehingga terjadi crosscutting concern. Nah dalam AOP crosscutting concern tersebut di enkapsulasi menjadi sebuah aspect. Contohnya : untuk membuat sebuah instance kita diharuskan untuk melakukan proses logging atau verifikasi dll, sementara proses logging tersbut tidak hanya digunakan oleh sebuah objek.. Maka dalam AOP proses logging tersebut dijadikan aspect. Kali ini gw mencoba menuliskan code program AOP dengan Jboss AOP, cuman sory bro karena code program ditulis do word (gak sempat pake editor java) maka jangan langsung di compile (harus di edit dulu)

Pada karya ilmiah karangan Gregor Kiczales menyebutkan bahwa penerapan design pattern pada AOP memiliki beberapa keuntungan diantaranya :

  • Locality : code functionalitas sedikit mengandung aspect, tidak hanya mengandung class dan hasilnya yang didapat meningkatkan modularitas.
  • Reusability : Refactoring dari code kedalam aspect menjadikan tingkat abstraksi yang tinggi dan reusable yang lebih baik.
  • Composition transparency : sebuah objek dapat mengimplementasikan beberapa pattern tanpa harus mengimplementasikan seluruhnya yang akan mengakibatkan kerancuan.

  • (Un)pluggability : keseluruhan aplikasi kurang mengandalkan implemenasi design pattern. Dengan AOP, dapat mengaktifkan atau tidak mengaktifkan design pattern , seperti pada pembuatan class singleton.

Dari keuntungan diatas tidak semuanya dimiliki oleh desagin pattern. Dari 23 design pattern dalam GoF, hanya 17 yang menampilkan peningkatan dengan menggunakan AOP.

The Singleton Design Pattern

Gambaran tentang design pattern singleton

1. Problem dan Context : beberapa class seharusnya hanya satu instance selama exekusi program. Hal ini penting karena 2 alasan : salah satu model dari class ialah mempunyai object yang unik , seperti menset variable global untuk aplikasi dan mempunyai 2 instance untuk menjalankan run time error; atau alternative, karena satu instance cukup untuk menghandle beberapa service yang diperlukan, dan menjamin tidak lebih dari satu instance yang akan di create, untuk mengekonomiskan memori dan resource computer.

2. Solusi dari masalah : class harus mempunyai atribut yang static yang disebut dengan instance, dan bersifat unik instance, dengan menggunakan methode yang disebut dengan methode getInstance, yang akan mengembalikan nilai dari instance. Jika instance masih null maka akan di create kalau tidak maka getInstace akan membuat instance baru dan menyimpan reference kedalam atribut instance dan mengembalikannya ke pemanggil.

Implentasi Design Pattern dengan AspectJ

Dengan AspectJ membuat kita menyelesaikan masalah menjadi lebih simple dan efektif dengan mendefinisakan aspek untuk memodifikasi behaviour dari constructor, yang mana akan diinvoke oleh operator baru yang akan membuat instance baru dari class. Ketika constructor di invoke, aspek intercept akan mensubstitusi metode baru dengan kode yang dibutuhkan untuk memanage singleton.

Berikut dengan JBoss AOP, kita dapat mendefinisikan interceptor yang diperlihatkan pada listing 8-2.

Package aop.pattern.singleton;

Import org.jboss.advice.interceptor;

Import org.jboss.joinpoint.Invocation;

Public class SingletonInterceptor implements Interceptor {

Private Object singleton;

Public String getName(){

Return “Singleton Interceptor”;

}

Public Object invoke(Invocation invocation) throws Throwable{

If(singleton==null)

{

Singleton = invocation.invokeNext();

}

Return singleton;

}

}

Code interceptor diatas sama dengan object oriented implementasi dari singleton: hal ini termasuk atribut, yang digunakan untuk menyimpan instance singleton yang unik, dan methode invoke yang digunakan untuk mengecek existenci dari instance ketika menyimpan constructor dipanggil. Jika instance belum exis , invoke akan memanggil constructor dan menyimpan instance yang degenerate dalam atribut singleton.

Pengujian class singleton

package aop.patterns.singleton;

public class Stats{

private int orders = 0;

private float totalAmount = 0;

Private String status = “OK”;

Public int getOrders(){

Return orders;

}

Public void incOrders(){

Orders++;

}

Public float getTotalAmount(){

Return totalAmount;

}

Public float addAmount(){

Return totalAmount++;

}

Public String getStatus(){

Return status;

}

Public void setStatus(String p){

Status = p;

}

}

Binding Singleton Design Pattern untuk kelas stat

<bind pointcut=”execution(aop.patterns.singleton.Stats->new())”>

<interceptor class= “aop.patterns.singletonInterceptor”>

</bind>

Main class untuk mengetes class singleton pattern

package aop.patterns.singleton;

public class singletonExample(String[] args)

{

Stats stats1 = new Stats();

Stats stats2 = new Stats();

If(stats1==stats2)

{

System.out.print(“These instanve are the same”);

}

else

{

System.out.print(“The instance are not same”);

}

}

Jika di eksekusi maka akan menghasilkan

“These instance are the same”

Kayanya segitu dulu deh… Selamat Belajar !!!!

Konsep Aspect Oriented Programming (part 1)

Dikirim Software Engineer pada Mei 2, 2008 oleh cupubanget

Baru-baru ini gw lagi asyiknya mempelajari Aspect Oriented Programming.. Sekalian mempelajari TA gw.. Sebenarnya klo gw liat-liat AOP bukan merupakan pengganti dari OOP. AOP hanya sebagai penambah dari kekurangan terdapat dalam OOP. Okeh biar kita mulai aja pembicaraan tentang AOP..

Ketika program ditulis dengan menggunakan pendekatan procedural, aplikasi di modularisasi menurut action atau procedure. Dengan menggunakan pendekatan object oriented modularisasi berdasarkan data yang dienkapsulasi kedalam class-class. Dari kedua pendekatan tersebut, beberapa fungsi lebih sulit untuk dimodularisasi daripada yang lain. Hal ini yang dimaksud dengan code scattering.

Code scattering

Menurut para team analis tomcat server, meraka menyadari bahwa beberapa fungsi seperti URL pattern matching dan XML parsing telah bersih dari modularisasi dalam satu atau dua kelas. Akan tetapi ada hal lain seperti logging fungsionality dan managemen session user, sangat berpencar dalam aplikasi.

Analysis code scattering

Alas an utama code scattering terjadi adalah perbedaan dalam pembuatan layanan dan bagaimana cara pengguanaan dari layanan tersebut. Class memberikan akses untuk satu atau lebih layanan melalui methode. Hal ini relative mudah untuk mengelompokan layanan yang tersedia bersama-sama kedalam satu tempat (dengan kata lain kedalam satu class). Akan tetapi, apabila service tersebut digunakan dari beberapa class, hal ini akan menyulitkan untuk mendesign ulang aplikasi untuk mengelompokan memanggil methode tersebut secara bersama-sama.

Code scattering jelas berpengaruh jika program yang ditulis sangat complex. Akan tetapi sebenarnya tergantung juga dari aplikasi, model concern, library yang digunakan, dan frameworks yang digunakan. Karena tergantung dari problem concreat, maka code scattering sulit untuk dihapus.

Code scattering dalam aplikasi melambatkan dalam pengembangan, maintenance, dan evolusi program. Ketika beberapa fungsi di scatter, keadaan menjadi memburuk karena kode mulai berisi banyak pemanggilan untuk multiple concern hal ini menyebabkan loosly couple oleh karena itu membutuhkan integrasi bersama-sama. Keadaan seperti ini sering terjadi dibanyak aplikasi.

Dimensi Baru dalam Modularity

Kontribusi utama dari AOP ialah memberikan jalan untuk mengintegrasikan bersama-sama, — dalam sebuah aspect– . Aspect sering digambarkan sebagai crosscutting concern. Seperti dikatakan oleh Gregor kiczales dalam penelitiannya bahwa “AOP is about capturing crosscutting structure”.

Definisi dari aspect hampir umum dengan class. Ketika kita memodelkan suatu masalah, kita sering merepresentasikannya dengan menggunakan object dan setiap object berisi data(attribut) dan proses (methode). Hal itu juga terjadi pada aspect, aspect digunakan untuk mengimplementasikan (security, persistence, logging, dll) pada aplikasi, fungsi ini sama dengan kebutuhan dan pemrosesan.

Dengan menggukan AOP, applikasi berisi class dan aspect. Suatu aspect berbeda dengan class dalam implentasi menggunakan crosscutting functionality. Crosscutting functionality termasuk procedure atau object – oriented paradigma. Memasukan class dan aspect kedalam sebuah aplikasi berarti modularity dapat terjadi dalam 2 dimensi. Fungsi dasar diimplementasikan oleh class (dimensi ini dapat disebut kedalam dimensi struktural), dan crosscutting functionality di implementasikan oleh aspect (dimensi ini disebut dengan dimensi operational)

Integrasi Crosscutting Functionality

Aspect sendiri dibagi menjadi 2 bagian : poincut dan advice code (yang akan diterangkan nanti). Code advice berisi code yang dieksekusi, sementara poincut mendefinisikan point dalam program dimana code seharusnya diimplementasikan. Jika kita ingin memastikan data persistence, kita membutuhkan code untuk menyimpan data dalam database. Meskipun kita dapat membuat code fungsi ini dari prinsip pertama langsung termasuk aspect, kita akan jarang melakukan hal tersebut. Ini mempertimbangkan good practice dengan menggunakan dedicated API, seperti Hibernate. Dengan type dari framework ini, code dalam aspect akan simple untuk memanggil API. Hal ini membuat aspect tidak perlu mengetahui bagaimana service diimplementasikan.

Nonfunction Service dan Aspects

Aplikasi terdiri dari 2 type concern : business dan nonfunctionality. Business concerns, disebut juga fungsi yang dibutuhkan. Sama halnya pada real world behaviour yang ingin dimodelkan. Nonfunction concern atau nonfunctional requirement tambahan dari layanan aplikasi yang penting untuk diimplementasikan , essensinya, teknis atau system level –concern. Contoh , dalam aplikasi management human resource, fungsi untuk menambah dan menghapus employee adalah bisnis concern, sementara applikasi security dan privileges merupakan nonfuntionality concern.

Nonfunctionality service merupakan dasar bagi crosscutting. Akibatnya, nonfunctionality service diimplementasikan sebagai aspect dalam AOP. Dan bisnis concern diimplementasikan sebagai class.

Joinpoint

Definisi dari joinpoint adalah point dalam mengatur alur program dimana beberapa aspect dimplementasikan. Joinpoint dikelompokan menurut type beberapa bagian yang memungkinkan joinpoint diimplementasikan dalam AOP.

Segitu dulu ahh penjelasan tentang AOP dari gw… lain kali ntar gw terusin yang bagian 2 nya…

Google Magic

Dikirim iseng pada April 10, 2008 oleh cupubanget

Sorry bgt bro….gw masih cupu neh, baru belajar bikin Blog.. Di tulisan awal ini gw mau berbagi mainan buat iseng2 aja di internet kali aja temen kita yang mau dikibulin. Sambil nunggu Loading saat akses internet gw iseng2 baca di forum tentang Google magic. gw baru tau ternyata selain ada google hacking juga ada google magic.. trus gw cobain deh ntu permainan.. tahap-tahap nya gini

1. Buka http://www.darkartsmedia.com/Google.html

bakalan ada tampilan google boongan yang udah dimanipulasi

2. Suruh orang lain untuk menutup kedua hurup ‘O’ pada kata ‘Google’, dengan syarat jangan sampai ketauan seadikitpun hurup ‘O; nya..

3. Trus lu klik deh mouse di Body Web dimana aja, kemudian tunggu 6 detik dan setelah itu suruh temen te lu lepaskan tangannnya.. maka klo lu benar ngekliknya hurup ‘O’ pada ‘Google’ bakalan ilang..

4. Sekarang klo temen lu dah puas liat huruf ‘O’ nya ilang tinggal disuruh nunjuk ke layar monitor untuk nampilin hurup ‘O’ nya`lagi, saat temen lu lagi nunjuk trus Lu klik mouse di web ntu.. tunggu 5 detik lagi maka huruf ‘O’ nya bakalan muncul lagi

5. Klo Lu klik lagi mousenya maka akan redirect (apa lagi ni bahasa…kan gw masih cupu :) ) ke www.google.com

Okeh… Segitu aja dulu ah postingan blog pertama gw… sory ya klo gak berbobot isinya.. kan gw masih CUPU BANGET…