Lindawani Siregar1
1
Politeknik Negeri Batam, Jurusan Teknik Elektro, Batam
E-mail: lindawani@polibatam.ac.id
Abstrak
Pengujian keamanan perangkat lunak merupakan sarana penting untuk memastikan keamanan perangkat
lunak. Tujuan utama pengujian keamanan adalah untuk memeriksa sejauh mana kelemahan mekanisme
keamanan yang diimplementasikan. Hal ini dilakukan untuk menemukan kerentanan (vulnerabilities) suatu sistem
dan memastikan apakah sistem terlindungi. Perangkat lunak yang keamanannya tidak baik akan berakibat
hilangnya informasi dan dimanfaatkan oleh pihak lain yang tidak bertangung jawab. Cara yang lebih baik untuk
meningkatkan keamanan perangkat lunak adalah dengan memasukkan pengujian keamanan (security testing)
dalam proses SDLC (Software Development Life Cycle). Tulisan ini mereview pendekatan pengujian keamanan
perangkat lunak dan teknik yang diusulkan pada keamanan perangkat lunak beberapa tahun terakhir. Tulisan ini
meninjau dan menyimpulkan teknik atau pendekatan yang digunakan pada pengujian keamanan perangkat lunak
dalam beberapa penelitian.
Abstract
Software security testing is an essential means to ensure software security. The main purpose of security
testing is to check the weaknesses of implemented security mechanisms. Software security is done for searching
the vulnerabilities of a system and ensuring the system is protected. Lack of proper software security will impact
to the information losing by a threat source. The better way to improve software security is to include security
testing in the SDLC (Software Development Life Cycle) process. The review paper is presented and related to
software security testing approaches and techniques proposed in software security in recent years. This paper
reviews and concludes the techniques and approaches which used in software security testing in several studies.
1
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
Tahapan SDLC Deskripsi Proses keluaran tanpa mengetahui seputar struktur in-
Tahapan SDLC Deskripsi Proses ternal dalam sistem [9]. Pengujian black box,
dapat dikatakan hanya mengevaluasi tampilan
Code Ini adalah tahap dimana pengembang
mengimplementasikan kode pada
luar secara fungsional tanpa mengetahui apa
perangkat lunak [7]. Berdasarkan desain sesungguhnya yang terjadi dalam proses secara
yang dibuat pada tahap sebelumnya kode detailnya. Pengujian ini untuk mengetahui
program akan diimplementasikan. Pada apakah fungsi-fungsi, inputan, dan keluaran dari
tahap ini, kerentanan seperti buffer over-
flow cenderung masuk ke dalam sistem
perangkat lunak sesuai dengan spesifikasi yang
perangkat lunak. Sehingga disarankan dibutuhkan. Pengujian black box merupakan pal-
agar saat kode selesai, cek secara manu- ing sederhana dibandingkan white box.
al sehingga kesalahan kecil atau bug
terdeteksi pada tahap ini.
Testing Pengujian perangkat lunak adalah tahap Tabel 2. Deskripsi jenis dari teknik pengujian white box dan
dimana jumlah kesalahan dan bug black box
maksimum harus diidentifikasi. Secara Teknik Jenis Deskripsi
umum security testing berfungsi dalam Pengujian
proses validasi, verifikasi dan error detec-
tion. Tujuannya yaitu: (a) untuk memerik-
sa apakah perangkat lunak berperilaku Equivalent Disebut kelas kesetaraan.
sebagaimana mestinya, (b) mengidentifi- partitioning Teknik ini membagi domain
kasi bug, (c) mengautentikasi sistem yang input dari sebuah program
diinginkan dengan kebutuhan asli ke kelas-kelas sehingga test
pengguna [7] case dapat diperoleh. Pen-
gujian ini merupakan test
case yang ideal
mengungkapkan kelas
1. Pengujian Kemanan Perangkat Lunak kesalahan, karena pada
teknik ini berusaha
Perangkat lunak dapat diuji dengan pengujian mengungkapkan kelas-kelas
dinamis. Teknik pengujian yaitu black box testing kesalahan.
dan white box testing [8] . Teknik pengujian yang Boundary BVA merupakan desain
utama ditunjukkan seperti pada gambar 2. Pen- Value Anal- teknik test case yang
ysis melengkapi equivalent parti-
gujian white box secara signifikan efektif karena tioning. Dari pada mem-
metode pengujian ini tidak hanya menguji fokuskan hanya pada kondi-
fungsionalitas dari perangkat lunak tapi juga si input, BVA juga
menguji struktur internal perangkat lunak. Pen- menghasilkan test case dari
domain output. Boundary
gujian ini menggunakan stuktur kontrol desain value fokus pada suatu
posedural untuk memperoleh test case. Saat batasan nilai dimana
merancang test case untuk melakukan pengujian kemungkinan yang terjadi
white box, keah- lian pemrograman sangat diper- yaitu terdapat cacat
tersembunyi.
lukan. Pengujian
black box Cause- Teknik ini ketika seseorang
[8] Effect Gra- ingin menerjemahkan se-
phing Tech- buah prosedur yang diten-
niques tukan ke dalam bahasa
perangkat lunak. Setiap
kondisi input dialokasikan
dalam bentuk grafik hingga
terbentuk grafik sebab-
akibat. Grafik ini akan dijadi-
kan dalam bentuk tabel
keputusan untuk digunakan
dalam test case.
Comparison Para pengembang
Testing perangkat lunak
menghasilkan versi inde-
Gambar 2. Klasifikasi umum teknik pengujian [8] penden dari sebuah aplikasi.
Masing-masing versi diuji
dengan data uji yang sama
Pengujian ini dapat diterapkan ke semua ting- untuk memastikan bahwa
katan termasuk pengujian unit, integrasi atau sis- seluruhnya menyediakan
tem. Jenis pengujian ini juga digunakan sebagai output yang sama. Test
pengujian keamanan untuk menentukan apakah case yang dirancang untuk
satu versi perangkat lunak
sistem terlindungi [9]. Namun, pengujian white dijadikan masukan pada
box menjadi proses pengujian yang kompleks pengujian versi perangkat
karena mengharuskan keterampilan pem- lunak lainnya, dan diharap-
rograman. Pengujian black box adalah pengujian kan hasil kedua versi
perangkat lunak harus sa-
yang dilakukan hanya berdasarkan requirement
3
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
ma.
Fuzz Testing Disebut random input, teknik
ini memberi masukan acak
(inputan yang tidak diharap-
kan) ke dalam aplikasi.
Karakteristik utama pen-
gujian fuzz testing adalah: Gambar. 3 Software Testing Life Cycle [9]
(a) inputnya acak; (b) jika
aplikasi hang, pengujiannya
gagal. Tahap pertama dalam STLC adalah require-
ment analysis. Dalam langkah ini Quality Assur-
Model- Teknik ini menggu nakan
based test- pendekatan model ber- ance (QA) memahami persyaratan yang akan
ing dasarkan requirement sys- diuji. Test planning merupakan fase terpenting
tem dan fungsi yang telah dalam STLC karena karena ini adalah tahap di-
ditentukan. Test case di-
turunkan dari model yang mana semua strategi pengujian didefinisikan [9].
menggambarkan aspek Tahap ini berkaitan dengan persiapan rencana
yang diuji. Biasanya disebut uji. Test case development merupakan fase di-
sebagai uji abstrak.
mana tim QA menuliskan test case. Yang ter-
Basis Path Teknik ini meng evalua- penting pada fase ini adalah test case dan test
Testing si kompleksi tas kode pro-
gram dan pendefinisian alur
script. Test execution adalah fase dimana penguji
yang akan dieksekusi. Test akan menjalankan test case yang telah diper-
case mendapatkan ukuran siapkan sebelumnya. Jika ditemukan bug atau
yang kompleks dari
perancangan prosedural.
error, penguji akan membuat dalam bentuk
Selanjutnya digunakan uku- laporan [9]. Test result reporting merupakan
ran ini untuk mendefinisikan pelaporan hasil yang dihasilkan setelah pen-
basis dari jalur pengerjaan. gujian dimana laporan bug tadi diteruskan ke tim
Loop Test- Teknik ini melakukan pen- developer untuk diperbaiki [9]. Defect retesting
ing gujian beberapa kali di merupakan tahapan dimana penguji melakukan
bawah kontrol program.
Pengujian Aspek yang paling penting pengujian ulang terhadap kode yang telah diubah
white box dari pengujian ini adalah yang diberikan pengembang untuk memeriksa
[8] memastikan bahwa loop apakah defect (cacat) tersebut diperbaiki atau
kontrol dijalankan berkali-
kali dan berhasil keluar saat tidak. Test closure adalah tahapan akhir dari
kondisi tertentu terpenuhi. STLC. Penguji akan menganalisa hasil laporan
Control Terdapat dua komponen serta menentukan strategi yang tepat untuk per-
Structure utama dalam pengujian ini baikan aplikasi berikutnya.
Testing yaitu condition testing dan
data flow testing. Condition C. Software Release Life Cycle
testing, setiap kondisi logis
dalam suatu program diuji. Software Release Life Cycle adalah tahapan-
Data flow testing, pengujian
ini berdasarkan penggunaan tahapan dalam pengembangan perangkat lunak
variabel yang telah diten- sampai perangkat lunak tersebut dapat dirilis,
tukan. software yang telah dilakukan perbaikan bug
atau error atau berupa pengembangan software.
Tahapan ini muncul setelah tahapan STLC dan
mencakup tahapan pengujian lebih lanjut yaitu
B. Software Testing Life Cycle
alpha testing dan beta testing. Alpha testing ada-
Software Testing Life Cycle mendefinisikan lah jenis pengujian dilakukan untuk mengidentifi-
langkah-langkah atau tahap dalam pengujian kasi semua kemungkinan masalah atau bug
perangkat lunak. Gambar 3 membahas langkah- sebelum produk diluncurkan ke user [10]. Alpha
langkah STLC yang dilakukan perangkat lunak testing bisa dilakukan menggunakan teknik white
selama proses pengujian. box atau black box [9]. Alpha testing dilakukan di
lingkungan laboratorium dan biasanya penguji
adalah yang memang ahli di bidangnya [11].
Beta testing dilakukan setelah pengujian al-
pha, dan dapat dianggap sebagai user ac-
ceptance testing. Beta testing sepenuhnya
berhubungan dengan end-user tanpa ada hub-
ungannya dengan developer [9]. Ini adalah pen-
gujian terakhir sebelum mengirimkan produk ke
4
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
Review Penelitian
Beberapa penelitian direview terkait dengan
pengujian keamanan perangkat lunak. Sesuai
dengan tahapan SDLC, penulis mereview securi-
ty testing dalam dua tahapan yaitu secara teknik
maupun metodologi yang digunakan peneliti.
Tabel 3. Review pengujian kemanan perangkat lunak
Gambar 4. Contoh teknik pengujian non-fungsional [2]
No. Tahun Penulis Judul
Gambar 4 menunjukkan beberapa contoh 1. 2010 Zhanwei Hui, Software Security Test-
teknik pengujian non-fungsional seperti berikut: Song Huang, ing Based on Typical
Bin Hu, dan SSD:A Case Study
a. Performance testing Yi Yao
Teknik ini menilai seluruh kinerja sistem. Ini 2. 2015 DONG Binary-oriented Hybrid
Fangquan, Fuzz Testing
digunakan untuk mengevaluasi kinerja sis- DONG
tem di bawah beban kerja tertentu [2]. Chaoqun,
ZHANG Yao,
b. Load testing dan LIN
Teng
Uji beban dilakukan untuk memastikan kapa-
sitas pengambilan beban pada sistem. Pen- 3. 2016 Pan Ping, Research on Ssecurity
Zhu Xuan, Test for Application
gujian beban dilakukan untuk mengetahui dan Mao Software Based on
perilaku sistem pada kondisi beban normal Xinyue SPN
maupun beban puncak [2].
4. 2016 Aziz Ahmad Interface-based Soft-
c. Endurance testing Rais ware Testing
Gambar. 5 Model integrasi pengujian keamanan perangkat lunak berbasis SSD [12]
Model integrasi ini dibagi menjadi dua yang ritma simpul pohon untuk SSD. Berikut algorit-
kompatibel dengan SSD. Di bagian kiri adalah manya [13]:
proses pengujian fungsi keamanan tradisional,
yang menguji mekanisme keamanan perangkat
lunak, dan menghasilkan test case. Pengujian
keamanan perangkat lunak tradisional lebih
memperhatikan mekanisme keamanan Software a. Pilih security defects sebagai akar permasa-
under Test (SUT), namun tidak mempertim- lahan
bangkan SSD secara spesifik yang mungkin b. Security defects adalah objek yang diuji dan
mempengaruhi fungsi keamanan SUT [13]. merupakan ancaman yang sedang dianalisis.
c. Menganalisis security defects
Di bagian kanan adalah proses pengujian d. Menganalisis secara langsung pengujian se-
berbasis SSD, yang disebut juga adverse testing. curity defects. Tandai yang cacat sebagai
Pada akhir model, proses integrasi ini akan node utama, dan tandai keseluruhan sebagai
menghasilkan jenis test case yang tidak hanya sub-nodenya. Tandai tipe node utama
memvalidasi kebijakan keamanan perangkat lu- menggunakan logika (AND / OR) sebagai
nak, namun juga memberi kepercayaan pada hubungan logika dengan sub-node.
pengguna bahwa Software under Test (SUT) e. Dekomposisi setiap sub-node
dapat melawan bentuk serangan pada security
[12]. Saat pengujian, penguji menggunakan algo-
6
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
f. Jika bisa terdekomposisi, tandai sebagai tion sebagai back-end mulai bekerja. Symbolic
node utama dari sub-node tadi, dan lakukan execution memecahkan kendala dari path dan
seperti langkah kedua. menghasilkan masukan tes baru dengan path
g. Ulangi langkah (1) ke langkah (3) sampai baru yang berbeda. Kemudian menjalankan front
semua sub-node tidak bisa didekomposisi end dan ulangi proses ini. Algortitma pengujian
atau tidak perlu didekomposisi. binary-oriented hybrid fuzz ditunjukkan pada al-
goritma 1.
Hasil yang peneliti temukan yaitu adanya indi-
kasi bahwa model pengujian keamanan berbasis
SSD yang terintegrasi memang bisa menjadi
proses yang efektif. Dengan menjalankan be-
berapa tes, peneliti berhasil menemukan bebera- Algoritma 1 binary-oriented hybrid fuzz test-
pa bug (terkait dengan SSD). Model ini ing
menghasilkan urutan tes secara otomatis [12]. 1 Input: program P, testing goals Goals
2 while Goals is NOT attained DO
A. Binary-oriented Hybrid Fuzz Testing 3 coverage_flag=TRUE
Tahun 2015 DONG Fangquan [14] membuat 4 while coverage_flag==TRUE DO
model pengujian hybrid fuzz. Model ini meng- 5 Fuzzing_test() //fuzz testing
gabungkan pengujian fuzz dan symbolic execu- 6 coverage_monitor() //monitor the code
tion. Pengujian fuzz menemukan bug program coverage ratio //the number of covered
dengan menjalankan program dengan input acak basic blocks increases
yang dihasilkan, sehingga ditemukan keadaan 7 if BasicBlock_Num has increased then
crash. Meskipun pengujian fuzz mampu mengek- 8 DONothing
splorasi jauh ke dalam program secara efisien, 9 else
namun tidak dapat menjamin code coverage ratio 10 coverage_flag=FALSE
dalam beberapa situasi. Sebaliknya, symbolic 11 endwhile
execution dapat sekaligus mengeksplorasi ban- 12 //the code coverage ratio does not in-
yak jalur (path) yang bisa diambil oleh sebuah crease
program di bawah masukan yang berbeda [15]. 13 Symbolic_Execute()
Perbedaan keduanya dapat dilihat pada graph 14 generate New Cases
berikut ini: 15 goto 2
16 endwhile
7
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
nak dengan baik, namun juga menyajikan proses perangkat lunak (software design stage). Beri-
kerja perangkat lunak. Secara sederhana digam- kutnya akan diterapkan analisis keandalan dan
barkan dalam sebuah diagram pohon dan model keamanan perangkat ke software design stage
SPN ditunjukkan pada gambar 7. dan software testing, serta desain test case [16].
Pengujian keamanan pada perangkat lunak
pada aplikasi biasanya mencakup user authenti-
cation atau pengujian otentikasi pengguna,pe
ngujian sistem jaringan dan pengujian database.
Peneliti [16] juga menggambarkan operasi logika
sederhana keamanan user authentication.
Kontrol akses pengguna yang sederhana dalam
perangkat lunak dijadikan sebagai gambaran
metode pengujian keamanan perangkat lunak
aplikasi berdasarkan SPN.
Gambar 8 menunjukkan diagram alir operasi
logika user security authentication. Dari contoh
operasi logika ini lah yang nantinya akan dikem-
bangkan model SPN yaitu digambarkan pada
petri nets. Gambar 8 merupakan diagram alur
operasi logika sederhana dari user security au-
Gambar 7. Model sederhana diagram pohon dan SPN [16] thentication.
Pemetaan SPN didasari oleh proses Markov. Proses spesifiknya adalah sebagai berikut:
Places merepresentasikan keadaan dalam se- Input berupa user name dan password untuk log-
buah koponen atau sistem dan dapat berhub- in authentication saat menggunakan aplikasi.
ungan di dalam satu fase. Transition digunakan Jika autentikasi berhasil, sistem akan
untuk menggambarkan peristiwa yang terjadi da- mengekstrak user ID dan mengaktifkan user dan
lam sistem. Biasanya akan menghasilkan modu- kemudian memberikan izin kepada user. Setelah
lasi ke status sistem tersebut. Token adalah mendapatkan izin untuk masuk dalam aplikasi,
penanda atau identitas yang berada di places. pengguna dapat melakukan operasi yang di-
Kehadiran token di suatu tempat menunjukkan inginkan. Sistem akan menghapus user authenti-
bahwa kondisi telah sesuai dengan fungsi yang cation saat log out, dan akhirnya kembali ke
diberikan [17]. keadaan awal. Jika digambarkan dalam model
SPN maka akan dimodelkan seperti gambar 9.
Tujuan penggunaan SPN dalam analisis kea-
manan perangkat lunak adalah untuk mengetahui Gambar 9 menunjukkan model SPN dari
keadaan yang menyebabkan perangkat lunak operasi logika user security authentication. State
menjadi failed. Berikut adalah langkah-langkah mewakili setiap keadaan parsial sistem
SPN untuk pengujian dan analisa perangkat lu- perangkat lunak. Transition akan ditriger untuk
nak [16]: sistem perangkat lunak dari satu state ke state
lain. Pada saat proses running keseluruhan sis-
Pertama kita perlu menganalisis risiko tem perangkat lunak, token atau petri nets terse-
perangkat lunak untuk mengkonfirmasi per- but terus-menerus akan melakukan transfer.
mintaan keamanan dari software development. Transfer dikatakan sebagai fungsi perangkat lu-
Kemudian menentukan keadaan perangkat lunak nak akan melakukan berbagai operasi saat pros-
yang tidak aman. Pada tahap ini, perancang es dijalankan. P1-P10 merepresentasikan
perangkat lunak perlu memiliki pemahaman ten- keadaan dari operasi yang diinginkan. Transition
tang proses perancangan perangkat lunak. t2-t4 digunakan untuk memverifikasi nama
Selain itu menentukan keadaan berbahaya yang pengguna dan password login. Transition t5 -t11
tidak sesuai dengan tujuan perancangan adalah operasi untuk menetapkan peran dan
perangkat lunak serta menetukan persyaratan kontrol akses izin kepada pengguna [16].
keamanan dan spesifikasi desain [16].
Selanjutnya menetapkan model SPN dari
perangkat lunak, sehingga dapat dibangun grafik
SPN. Buatlah daftar kumpulan tanda yang dapat
dicapai. Lakukan analisis terhadap tanda yang
dapat dicapai dengan mudah agar diperoleh
mengapa sistem dikatakan gagal. Sesuai dengan
analisis kegagalan perangkat lunak tadi , maka
penguji dapat kembali ke tahap perancangan
8
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
Gambar. 9 Model SPN dari operasi logika user security authentication [16]
10
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11
Review Pengujian Keamanan Perangkat Lunak dalam Software Development Life Cycle (SDLC) (Lindawani Siregar)
[13] S. Huang, Z. Hui, L. Wang, and X. M. Liu, [16] P. Ping, Z. Xuan, and M. Xinyue, “Re-
“A Case Study of Software Security Test search on security test for application soft-
Based On Defects Threat Tree Modeling,” ware based on SPN,” in 13th Global
in International Conference on Multimedia Congress on Manufacturing and
Information Networking and Security, 2010. Management, GCMM, 2016, pp. 1140 –
[14] D. Fangquan, D. Chaoqun, Z. Yao, and L. 1147.
Teng, “ Binary-oriented hybrid fuzz testing,” [17] School of Informatic University of Ei-
in IEEE, 2015, pp. 4799-8355. denburgh Scotland, “Stochastic Petri Nets,”
[15] R. Baldoni, E. Coppa, D. Cono D'Elia, C. 2017. [Online]. Available:
Demetrescu, and I. Finocchi, “A survey of http://www.inf.ed.ac.uk/teaching/courses/p
symbolic execution techniques,” in Cyber m/Note7. [Accessed: 10 Dec 2019].
Grand Challenge highlights from DEF CON [18] A. A. Rais, “Interface-based software test-
24, Aug. 2016. ing,” in Journal Of Systems Integration,
2016.
11
Jurnal ASEECT Vol. 1, No. 3, Tahun 2020, hal. 1-11