Anda di halaman 1dari 10

Proof of Concept Ghost Vulnerability terhadap Serangan

Buffer Overflow berbasis Heap


Aulia Tri Rahmawati1, Fitri Hana Dini2 , Mauli Bayu Segoro3 , Rafif Masrur Rauf4
Rekayasa Perangkat Lunak Kripto
Sekolah Tinggi Sandi Negara
Bogor, Indonesia

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 :

I. LATAR BELAKANG No Segmen Tujuan


1. Teks Menyimpan kode program yang dapat
Keamanan sistem dan perangkat lunak merupakan hal
dieksekusi. Blok memori ini biasanya hanya
yang sangat berpengaruh pada kehidupan manusia.
dapat dibaca.
Keamanan merupakan pengaplikasian mekanisme
2. Data Menyimpan variabel statis/global yang
pertahanan data dan resources. Keamanan memiliki prinsip
diinialisasi oleh programmer. Contoh :
meliputi confidientility, integrity, dan availibity untuk
variabel a yang didefinisikan dalam static int
mendefinisikan apa yang perlu dilindungi, memahami
a = 3 akan disimpan dalam Data Dalam program yang menggunakan bahasa C, buffer

segmen. dialokasikan dengan array atau pointer. C atau C++ tidak

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

Kerentanan yang ditimbulkan dari kode sumber pada


suatu program biasanya berpengaruh terhadap serangan
seperti buffer overflow, use-after-free, time-of-checkto-time-
of-use flaw, format string bug, type confusion, atau missing
sanitization). Serangan-serangan tersebut juga merupakan
serangan yang berkaitan dengan penggunaan memori pada
program. Terlebih pada serangan Buffer Overflow yang
masih ditemukan terjadi sampai tahun 2019 ini dan terus
Gambar 1. Memory Layout
ditemukan berbagai kerentanan baru yang dapat
menyebabkan serangan Buffer Overflow tersebut.
Gambar diatas memperlihatkan memory layout dari suatu
Morris worm pada tahun 1988, Code Red worm pada
proses Linux. Proses dimulai dengan kode program dan data.
2001, SQL Slammer pada 2003, Stagefright telah menyerang
Kode dan data berisi instruksi program serta data global dan
ponsel Android pada 2015, serangan buffer overflow
data static yang terinisialisasi maupun tak terinisialisasi.
memiliki peran yang sangat tinggi dalam hal tersebut.
Setelah itu adalah run-time heap (dibuat dengan
Serangan Buffer Overflow merupakan serangan klasik yang
malloc/calloc), dan di paling atas adalah users stack. Stack
masih efektif terjadi menyerang sistem komputer dan
digunakan jika ada function call.
aplikasi.
Program yang ditulis dalam bahasa C sangat rentan
Ada beberapa jenis Buffer Overflow berdasarkan
terhadap serangan Buffer Overflow. Besarnya memory dan
kemudahan eksploitasi dan teknik yang digunakan. Tetapi
performansi merupakan pertimbangan yang lebih penting
secara konsensus, Buffer Overflow dibagi dalam tiga
dari bahasa C dibandingkan keamanan. Library standar
generasi. Generasi pertama adalah overwriting stack
dalam bahasa C menjadi sangat tidak aman jika digunakan
memory. Generasi kedua adalah heap, function pointer dan
secara tidak hati-hati. Bahasa C menyediakan akses langsung
eksploitasi off-by-one. Generasi ketiga adalah format string
ke low-level memory dan pointer arithmetic tanpa Buffer
attack dan vulnerabilities in heap memory management.
Overflowunds checking, sehingga fungsi-fungsi dari library Pada CVE-2015-0235 atau sering disebut dengan
standar C, seperti gets dan strcpy , dapat menuliskan jumlah GHOST Vulnerability, menjelaskan bahwa adanya
yang tak terbatas dari user input ke buffer dengan ukuran kerawanan pada glibc atau GNU C Library yang terbuka.
yang tetap. Untuk mengeksploitasi ancaman ini, penyerang Kerawanan tersebut dapat mengundang serangan yang
hanya memasukkan input yang lebih besar dari ukuran buffer melakukan execute code pada sebuah aplikasi yang memiliki
dan memberikan kode untuk menyusup menggunakan kerawanan pada versi glibc yang dimiliki. Hal ini
shellcode. mengakibatkan serangan buffer overflow terjadi pada saat
fungsi gethostbyname() atau GHOST yang dipanggil ketika
Pada paper ini akan dilakukan serangkaian proof of
dilakukan pemecahan sebuah host name kesebuah IP
concept serangan dan mitigasi terhadap serangan buffer
address.
overflow berbasis heap yang dilakukan dengan eksploitasi
kerentanan pada CVE 2015-0235 tentang GHOST Heap Buffer Overflow terjadi pada fungsi
vulnerability yang ditemukan oleh para pakar di Qualys. __nss_hostname_digits_dots yang digunakan oleh fungsi
Menurut Red Hat Bugzilla buffer overflow berbasis heap gethostbyname() dan gethstbyname2() pada glibc versi 2.02
dapat ditemukan pada fungsi __nss_hostname_digits_dots() hingga sebelum versi 2.18. Ketika sebuah aplikasi
yang digunakan oleh fungsi gethostbyname() dan menggunakan fungsi gethostbyname() atau
gethostbyname2() pada pemanggil fungsi glibc library. gethostbyname2() dan berjalan pada sistem operasi
Kerentanan tersebut dijuluki GHOST karena hubungannya menggunakan glibc dibawah versi 2.18 maka aplikasi
dengan fungsi gethostbyname() dan dapat terjadi pada tersebut akan melakukan pemanggilan terhadap fungsi
aplikasi yang menggunakan glibc library pada sistem operasi __nss_hostname_digits_dots() yang merupakan fungsi
yang memiliki versi mulai 2.2 yang dirilis pada 10 vulnerable untuk mendapatkan name dari host.
November 2000 hingga dibawah 2.18 yang dirilis pada 12 Menggunakan input yang besar pada name host client maka
Agustus 2013. Vulnerability ini memungkinkan terjadi pada akan terjadi buffer overflow yang membuat sistem menjadi
semua versi Red Hat Enterprise Linux dan varian (CentOS crash.
dll.) Serta sistem Ubuntu / Debian dan varian. Serangan
Jumlah byte yang dapat dieksekusi oleh penyerang
Ghost buffer overflow ini membuat penyerang mendapatkan
dibatasi hingga 4 byte pada sistem 32-bit dan 8 byte pada
kontrol penuh atas sistem.
sistem 64-bit. Ancaman yang ditimbulkan sangat nyata
Berbagai aplikasi web juga dapat dipengaruhi oleh karena kerawanan ini dapat menyebabkan dilakukannya
kerentanan tersebut. Sebagai contoh pada aplikasi PHP eksekusi kode lain yang dapat mengungkapkan informasi
termasuk WordPress yang merujuk fungsi gethostbyname() dan menyebabkan kerusan. Meskipun tidak semua program
karena WordPress menggunakan fungsi bernama yang menggunakan glibs library yang memanggil fungsi
wp_http_validate_url() untuk memvalidasi setiap pingback gethousebyname() itu terdapat kerawanan. Tetapi bukti
dari URL post sehingga dapat dilakukan eksploitasi. Selain konsep menunjukan eksploitasi banyak dilakukan.
WordPress terdapat aplikasi lain yang terindikasi memiliki
Pada kerawanan ini didapati beberapa dampak yang
kerentanan Ghost di antaranya yaitu, clockdiff, procmail,
diukur dalam CVSS versi 2.0 yaitu memiliki skor atau rating
pppd, dan Exim mail server.
tinggi sebanyak 10, begitu pula dengan subscore dampak dan
subskala eksploitasinya.

II. PENJELASAN ANALISIS SERANGAN Berikut merupakan dampak yang di timbulkan oleh

A. CVE-2015-0235 kerentanan ghost :


B. CWE-119 : Improper Restriction of Operations within

Dampak Tingkat Penjelasan the Buffer Overflow Bounds of Memory Buffer

Confidentiality Complete Seluruh informasi dan semua


file sistem yang ada dapat Kerawanan ini terjadi ketika perangkat lunak melakukan

terungkap. operasi pada memori buffer , tetapi dapat membaca dan


Integrity Complete Terdapat kompromisasi menulis ke lokasi memori berada di luar area buffer tersebut.
terhadap integritas sistem. Pengalamatan yang dilakukan tidak secara otomatis
Hilangnya perlindungan sistem memastikan lokasi tersebut valid untuk memori buffer,
dapat mengakibatkan seluruh sehingga dapat menyebabkan operasi baca tulis dilakukan
sistem dikompromikan. pada lokasi variabel lain, struktur data, dan data program
Availability Complete Hilangnya seluruh internal. Akibat dari itu penyerang dapat mengeksekusi kode
ketersediaan yang ada. erbitrer, membaca informasi sensitif, dan menyebabkan
Tabel 2. Dampak yang di timbulkan oleh kerentanan sistem crash.
ghost
Kemungkinan dilakukannya eksploitasi pada kerawanan
ini adalah tinggi. Berikut merupakan contoh program yang
Berikut merupakan kebutuhan dalam melakukan
memiliki kerawanan tersebut:
eksploitasi :
Gambar 2. Contoh program yang memiliki kerawanan
Kebutuhan Tingkat Penjelasan
Access Low Kodisi akses khusus tidak ada.
Complecity Sangat sedikit pengetahuan atau
keterampilan yang diperlukan
untuk melakukan eksploitasi.
Authentication Not Tidak diperlukan otentikasi
required untuk melakukan eksploitasi.
Gained Access None Tidak ada
Tabel 3. Kebutuhan dalam melakukan eksploitasi
Program diatas mengambil IP dari pengguna,
Sistem penilaian CVSS versi 0.2 dapat ditemukan di memverfikasinya dan mencari hostname lalu menyalinnya ke
panduan lengkap yang ditulis oleh Peter Mell dan Sasha dalam buffer. Fungsi pada program diatas mengalokasikan
Romanosky pada bulan Juni tahun 2007. CVSS memiliki buffer 64 byte untuk menyimpan hostname, namun
sistem penilaian dengan menggunakan metrik yang kemungkinan hostname bisa lebih besar dari 64 byte lalu
menghasilkan nilai dari 0 sampai 10. data sensitif bisa tertimpa dan dapat terbaca.

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

dapat mengarahkan diberikan pengguna dapat diperbesar oleh program.

pointer fungsi ke kode Dengan menggunakan disassembler dan tools yang

berbahaya mereka dapat memandu pencarian vulnerability.

sendiri. Modifikasi pun 2) Percobaan


dapat dilakukan dan Menemukan tempat dimana buffer overflow dapat
penyerang dapat terjadi karena ukuran string yang diperbesar tidak
melakukan eksekusi diperhitungkan dengan baik dan benar oleh program.
kode arbitrer. Mungkin dapat terjadi ketika string disalin ke buffer
Availibility Akses memori Read Memory; yang lain yang cukup besar. Hal tersebut dapat
kemungkinan besar DoS: Crash, menciptakan peluang terjadinya serangan buffer
akan mengakibatkan Exit, or Restart; overflow.
rusaknya memori yang DoS: Resource
3) Eksploitasi
relevan, dan beberapa Consumption
Melakukan serangan dengan memastikan tumpukan
intruksi khusus yang (CPU); DoS:
mencukupi untuk menghasilkan inputan yang melebihi
dapat menyebabkan Resource
batas, tanpa menyebabkan tumpukan yang merusak
kerusakan Consumption
program sebelum shellcode dapat dijalankan.
(Memory)
Eksploitasi dapat dilakukan jika program menyediakan
Confidentiality Penyerang mungkin Read Memory
salah satu parameter yang diperbesar dan diteruskan
memiliki akses ke
pada fungsi yang dapat dilakukan input oleh pengguna.
informasi sensitif. Jika
Parameter tersebut digunakan dalam konteks dimana
informasi sensitif
buffer overflow mungkin terjadi karena pemahaman
berisi detail sistem
Tabel 4. Dampak dari kelemahan pada CWE 119 dan penggunaan ukuran parameter yang salah yaitu
berfikir ukuran lebih kecil dari yang sebenarnya.

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 3. Potongan source code fungsi main()

Kerentanan dapat terjadi ketika ruang yang tidak


memadai dialokasikan untuk menyalin argumen baris
perintah atau input program lainnya. Dalam contoh kodeini,
penyerang dapat memanipulasi isi argv[0] untuk
menyebabkan buffer overflow.

Gambar 5. Program solusi yang memiliki fungsi


strcpy_s

III. PEMBAHASAN POC GHOST VULNERABILITY


Gambar 4. Program yang memiliki kerawanan pada
fungsi strcpy
Pada bab ini akan dijabarkan bagaimana GHOST atau
kerawanan pada fungsi gethostbyname() berjalan. Serangan
Argumen baris perintah dilewatkan ke fungsi main()
GHOST adalah serangan yang terjadi pada fungsi
sebagai pointer lalu ke string array argv [0] melalui
__nss_hostname_digits_dots pada aplikasi glibc sebelum
argv[argc-1]. Jika nilai argc lebih besar dari 0, string yang
versi 2.18. serangan ini mampu menyebabkan heap Buffer
ditunjukkan oleh argv[0] merupakan nama program. Jika
Overflow yang dapat mengizinkan penyerang untuk
nilai argc lebih besar dari 1 , string yang ditunjukkan oleh
mengeksekusi arbritary code melalui beberapa vektor seperti
argv[1] melalui argv[argc-1] merupakan argumen program.
gethostbyname.(NVD, NIST). Menurut CVE-2015-0235
Kerentanan terjadi saat ruang yang tidak memadai
serangan ini termasuk kedalam CVSS V2.0 Severity and
dialokasikan untuk menyalin argumen baris perintah atau
Metrics dengan base score, Impact Score dan Exploitability
input program lainnya. Dalam contoh kode berikut yaitu
Score tinggi yaitu 10.
penyerang dapat memanipulasi konten argv[0] untuk
menyebabkan buffer overflow. Buffer overflow ditemukan pada fungsi
__nss_hostname_digits_dots dan dapat diakses secara baik
Solusi yang ditawarkan fungsi strcpy_s() memberikan
melalui lokal dan jarak jauh pada fungsi call
perlindungan tambahan , termasuk menerima ukuran buffer
gethostbyname_r(). gethostbyname_r() sebenarnya
sebagai argumen tambahan. Fungsi strcpy_s() dapat
merupakan fungsi yang digunakan untuk menerima Gambar 7. Source code program yang vulnerable
informasi tentang host. Melalui pemanggilan fungsi
Pada kode diatas merupakan kode yang menggunakan
fungsi gethostbyname untuk melakukan overflow pada struct
temp buffer. Setelah program tersebut dijalankan pada os
dengan menggunakan glibc yang vulnerable maka
didapatkan output sebagai berikut.

Gambar 8. Hasil eksploitasi

Pada output diatas kita dapat melihat bahwa program


masuk pada percabangan dimana membandingkan variabel
canary dengan temp.canary. Ternyata variabel canary
mengalami perubahan akibat overflow pada buffer dari
pemanggilan fungsi gethostbyname().

Dari hasil diatas kita akan coba untuk melakukan poc

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.

Gambar 9. Langkah pertama dalam eksploit

Gambar 10. Alamat variable canary


__nss_hostname_digits_dots dari library glibc dibawah versi
2.18. pada fungsi __nss_hostname_digits_dots dari aplikasi
Pada debugger diatas merupakan kondisi awal program
glibc kita dapat menemukan kerawanan dimana adanya
yang belum dijalankan. Alamat yang dicetak pada debug
operasi strcpy yang memungkinkan parameter sumber
diatas merupakan alamat dari variabel Cannary yang berisi
memiliki input yang dapat melebihi parameter tujuan
“in_the_coal_mine”. Kemudian apabila kita lihat dalam
sehingga terjadi buffer overflow.
program maka fungsi memset akan membuat string “0” yang
disimpan pada name. Name digunakan sebagai masukan dari Dalam contoh penerapan POC (Proof of Concept)
fungsi gethostbyname_r(). sehingga setelah program tersebut program sederhana diatas kita dapat mengubah nilai dari
dijalankan melewati pemanggilan fungsi maka buf akan variable cannary dengan mempengaruhi variabel buffer pada
terisi oleh banyak string “0” melewati variable buf itu send struct yang terdefinisi keduanya sebagai variabel global
[1]iri sebagai berikut. sehingga dengan membandingkan perubahan yang terjadi
maka sistem akan menandai dengan menampilkan string
Gambar 11. Menampilkan variable temp
“vulnerable”

IV. MITIGASI

Terdapat berbagai cara untuk memitigasi serangan yang


diakibatkan oleh kerentanan fungsi gethostbyname() pada
glibc. Berikut merupakan mitigasi yang dapat dilakukan :

1. Melakukan pengecekan versi glibc dengan command


ldd—version pada terminal di linux.
Gambar 12. Perubahan nilai canary
Pada debugger diatas nilai pada variable buffer sudah “0” 2. Melakukan patch terhadap program yang memiliki

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.

diatasnya menurut urutan stack. Hal ini dapat dibuktikan


dimana nilai cannary berubah menjadi temp+1028. Atau
dapat kita lihat dengan mencetak nilai dari alamat cannary
yang berubah sehingga berisi string “0” sebagai berikut.

Gambar 13. Variabel canary berubah menjadi 4 bit overflow

Variabel cannary berubah menjadi 4 bit overflow dari


Gambar 14. Patch pada program digits_dots.c
variabel buffer. Yaitu 3 string “0” dan nilai null-terminated /
“0/”.
3. Update glibc mulai ddengan cara menuliskan
Dari pembuktian tersebut kita dapat menyimpulkan
command “apt-get update && sudo apt-get install-
bahwa program sederhana tersebut mampu untuk melakukan
only-upgrade libc6-y pada ubuntu dan pada Centos
buffer overflow dengan memanfaatkan pemanggilan fungsi
“yum update glibc”.
call gethostbyname_r() untuk memanggil fungsi
V. KESIMPULAN [10] K. S. S. R. Peter Mell, "CVSS A Complete Guide to
the Common Vulnerability Scoring System Version
Berdasarkan penelitian yang telah dilakukan ,maka 2.0," CVSS, Juni, 2007.
penulis dapat menyimpulkan bahwa serangan GHOST
vulnerability pada CVE-2015-0235 memang memiliki
dampak yang sangat berbahaya. Hal ini didasarkan dengan
attack vector yang dapat digunakan pada serangan tersebut
baik secara lokal maupun terkoneksi dengan jaringan. Hal
lain yang menjadi pertimbangan adalah bahwa serangan
yang dilakukan tidak membutuhkan otentikasi khusus karena
serangan dapat dilakukan oleh siapapun tanpa harus
memiliki permission khusus. Dampak yang ditimbulkan dari
serangan ini terbilang sangat berbahaya karena dapat
menyebabkan sebuah sistem pada server menjadi crash
apabila menerima input nama client yang besar dan
penyerang memungkinkan untuk melakukan injeksi
shellcode untuk melakukan remote server. Pada penelitian
diatas telah dibuktikan PoC (Proof of Concept) sederhana
yang membuktikan penelitian diatas tentang bahaya GHOST
Vulnerability. w

III. REFERENCES

[1] V. O. N. B. N. H. James C.Foster, Buffer Overflow


Attacks, 2005.
[2] M. Payer, Sofware Security Principles, Policies, and
Protection, 2019.
[3] S. Grover, "Buffer Overflow Attacks and Their
Countermeasure," Linux Journal, Oktober 2004.
[4] W. Du, "Buffer Overflow Attack," in Computer
Security : A Hands-on Approach.
[5] "Qualys Security Advisory CVE-2015-0235-
GHOST:glibc gethostbyname buffer overflow,"
Seclists.org, 2015. [Online]. Available:
https://seclists.org/oss-sec/2015/q1/274.
[6] "CAPEC-47:Buffer Overflow via Parameter
Expansion," Mitre, 2018. [Online]. Available:
https://capec.mitre.org/data/definitions/47.html.
[7] NVD, "CVE-2015-0235 Detail," 28 01 2015. [Online].
Available: https://nvd.nist.gov/vuln/detail/CVE-2015-
0235#vulnCurrentDescriptionTitle. [Accessed 15 07
2019].
[8] CWE, "CWE-119: Improper Restriction of Operations
within the Bounds of a Memory Buffer," [Online].
Available:
https://cwe.mitre.org/data/definitions/119.html.
[9] CVE, "CVE-2015-0235 Detail," Mitre, 2019. [Online].
Available: https://nvd.nist.gov/vuln/detail/CVE-2015-
0235.

Anda mungkin juga menyukai