Abstract— GHOST vulnerability merupakan pendekatan pertahanannya, model ancaman, perilaku, dan
kerentanan pada program atau aplikasi tingkat server di memahami mengenai bug dan vulnerabilities. Tiga konsep
sistem operasi linux yang dapat memicu serangan Buffer tersebut merupakan hal yang harus dijamin sebagai
Overflow berbasis heap. Kerentanan ini memungkinkan keamanan sistem dan perangkat lunak untuk menghindari
penyerang mengambil kendali penuh terhadap sistem. adanya serangan atau ancaman yang dapat merugikan. Setiap
Kerentanan tersebut dapat ditemukan pada fungsi serangan atau ancaman dapat melakukan eksploitasi dengan
__nss_hostname_digits_dots() yang digunakan oleh sempurna jika terdapat kerentanan pada sistem dan perangkat
fungsi gethostbyname() dan gethostbyname2() pada lunak tersebut.
fungsi pemanggil glibc (GNU C Library). GHOST
Kerentanan atau vulnerability merupakan kelemahan
vulnerability terdefinisikan pada CVE 2015-0235.
software yang memungkinkan penyerang melakukan
Kelemahan yang berkaitan dengan kerentanan tersebut
eksploitasi bug perangkat lunak. Sebuah vulnerability
terdapat pada CWE 119. Klasifikasi serangan dapat
membutuhkan tiga komponen utama yaitu sistem yang
dilihat pada CAPEC-47 mengenai dilakukannya
rentan, penyerang memiliki akses, dan penyerang memiliki
eksploitasi buffer overflow melalui ekspansi parameter
kemampuan untuk melakukan eksploitasi. Sebuah perangkat
dan CVSS v.02 dapat menentukan berapa tinggi skor
lunak membutuhkan ruang memori dalam penyimpanan data
yang dimiliki. Pada paper ini akan dilakukan proof of
dan dalam melakukan berbagai proses didalamnya. Memori
concept dan mitigasi terkait serangan buffer overflow
merupakan kebijakan inti dari keamanan mengenai
pada heap memori yang mengeksploitasi kerentanan
keamanan sistem dan perangkat lunak yang berfokus pada
pada CVE 2015-0235 mengenai fungsi gethostbyname()
testing, evaluating, improving, enforcing, dan proving the
(GHOST) pada glibc suatu program.
security of software. Ketika sebuah program atau perangkat
lunak berjalan, membutuhkan ruang untuk menyimpan data,
Keywords— Buffer overflow, GHOST Vulnerability, pada program C, memori dibagi menjadi lima segmen yang
glibc (GNU C Library), CVE 2015-0235, CWE, CAPEC, memiliki tujuan berbeda-beda. Berikut merupakan
CVSS, gethostbyname(). pembagian lima segmen tersebut :
3. BSS Menyimpan variabel statis / global yang tidak mempunyai pengecekan otomatis (automatic Buffer
diinisialisasi. Segmen ini akan diisi Overflowunds checking) batasan suatu buffer, sehingga
dengan nol oleh sistem operasi, sehingga pengguna dapat menulis kode untuk memberikan data
semua variabel yang tidak diinisialisasi melebihi ukuran buffer [ ]. Program yang dapat dieksekusi
diinisialisasi dengan nol. berisi sekumpulan instruksi biner yang harus dieksekusi oleh
4. Heap Menyedikan ruang untuk alokasi memori processor. Instruksi ini dapat berupa read-only data, (seperti
dinamis, Daerah ini dikelola oleh fungsi print format strings), data global dan data statis yang tetap
malloc, calloc, realloc, free, dll. ada selama proses eksekusi, dan break pointer yang selalu
5. Stack Menyimpan variabel lokal yang didefinisikan mengikuti malloced memory. Function local variable adalah
di dalam fungsi dan menyimpan data terkait variabel otomatis yang ada di stack selama suatu fungsi
pemanggilan fungsi, seperti alamat pengirim, bekerja dan dibuang setelah fungsi selesai bekerja.
argumen, dll.
Tabel 1.Segmen pada memori
II. PENJELASAN ANALISIS SERANGAN Berikut merupakan dampak yang di timbulkan oleh
Kerentanan Ghost PADA cve 2015-0235 ini merupakan Berikut merupakan dampak yang akan terjadi terhadap
jenis kerentanan yang dilakukan dengan menjalankan layanan keamanan dari kelemahan pada CWE 119 ini :
CodeOverflow dengan ID pada CWE 119 mengenai
Cakupan Dampak Dampak Teknis
kesalahan dalam pengoperasian pada batasan buffer overflow
Integrity, Jika penyerang dapat Execute
dari suatu memori buffer.
Confidentiality, menimpa nilai memori Unauthorized
Availibility pointer atau Return Code or
Address (biasanya 32 Commands;
atau 64 bit), mereka Modify Memory Telusuri bagian dari program dimana data yang
C. CAPEC-47: Buffer Overflow melalui Ekspansi Dalam melakukan eksploitasi tersebut dibutuhkan
Parameter keahlian yang tinggi, dimana penyerang membutuhkan
banyak pengetahuan terkait serangan buffer overflow
Serangan Buffer Overflow melalui ekspansi parameter dan mencari kerentanannya. Terlebih jika penyerang
yaitu suatu program diberikan input yang diketahui akan ingin melakukan eksekusi kode arbitrer. Penyerang
dimodifikasi dan berlebih ukurannya. Serangan tersebut harus membuat shellcode dan menemukan cara untuk
sangat bergantung pada program yang gagal untuk melakukan eksekusi program agar dapat mengarah
mengantisipasi pembesaran atau perluasan data dapat kepada shell code yang dibuat.
melebihi batas internal, sehingga buffer overflow dapat
terjadi. Pada CAPEC-47 tertera bahwa kemungkinan
D. STR31-C : Guarantee that storage for strings has
serangan terjadi adalah Medium , dan tingkat kerusakan
sufficient space for character data and the null
adalah tinggi. Berikut merupakan alur dalam melakukan
terminator
eksekusi program berdasarkan CAPEC-47.
1) Pencarian
Argumen yang dibaca dari baris perintah dinsimpan digunakan untuk menyalin data ke atau dari memori yang
dalam memori program. Fungsi main() dipanggil saat dialokasikan secara dinamis / array yang dialokasikan secara
program dijalankan, berikut ketika program menerima statis. Jika ruang yang tersedia tidak mencukupi, strcpy_s()
argumen baris perintah : mengembalikan kesalahan.
Gambar 6. Program yang memiliki fungsi (Proof Of Concept) melalui debugger aplikasi untuk
mendapatkan hasil yang dapat diterima berdasarkan running
program. Berikut adalah kondisi awal program saat pertama
gethostbyname_r() buffer overflow yang terjadi terletak
kali dijalankan.
pada heap. Berikut adalah kesalahan program yang
mengakibatkan buffer overflow pada aplikasi glibc pada
kode diatas kita dapat mengetahui bahwa kita
memungkinkan untuk memberi input yang banyak pada
variabel hostname. Sehingga apabila diproses pada fungsi
strcpy yang tidak melakukan sanitasi, maka variabel name
akan menerima input yang banyak dari variabel hostname.
Berikut akan dijelaskan bagaimana serangan ini dapat terjadi
melalui sebuah POC (Proof of Concept) sederhana.
IV. MITIGASI
dan nilai dari cannary sudah “0” akibat dari buffer yang glibc versi 2.2 -2.17 untuk menghapus kerentanan
terjadi overflow sehingga menimpa variable cannary yang akan menimbulkan buffer overflow.
III. REFERENCES