0Pricing
Cyber Security Academy · Pelajaran

Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap

Pahami internal malloc glibc, kondisi use-after-free, dan teknik penyemprotan heap.

Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Memori Dinamis

Memori dinamis adalah memori yang dialokasikan saat runtime melalui malloc()/free()/new/delete. Berbeda dari tumpukan, tata letak memori dinamis ditentukan oleh pola alokasi dan dealokasi, bukan oleh tumpukan pemanggilan. Kerentanan memori dinamis umum ditemukan pada peramban, pengurai, dan layanan latar jaringan.

Penggunaan Setelah Pembebasan (UAF)

Kerentanan Penggunaan Setelah Pembebasan terjadi ketika program terus menggunakan wilayah memori setelah membebaskannya. Jika wilayah yang telah dibebaskan dialokasikan kembali dengan data yang dikendalikan penyerang, program kini beroperasi pada data penyerang menggunakan penunjuk usang.

Contoh UAF

Pola UAF:

// Vulnerable C code:
struct Object *obj = malloc(sizeof(*obj));
free(obj);
// Later, attacker causes a new malloc to fill the freed region
// with their data...
obj->method();  // now calls attacker's function pointer!

Feng Shui Memori Dinamis

Feng shui memori dinamis (atau penataan memori dinamis) adalah teknik memanipulasi pengalokasi memori dinamis untuk menempatkan objek pada posisi tertentu, sehingga memungkinkan penggunaan kembali memori yang telah dibebaskan secara terkendali. Penyerang membentuk tata letak memori dinamis dengan memicu alokasi dan pembebasan dalam urutan yang tepat.

Penyemprotan Memori Dinamis

Penyemprotan memori dinamis mengalokasikan data dalam jumlah besar yang dikendalikan penyerang (kode shell + lintasan NOP) di seluruh memori dinamis. Karena sebagian besar memori dinamis telah terisi, penunjuk yang salah kemungkinan besar akan mengarah ke data penyerang. Teknik ini sering digunakan bersama UAF atau kesalahan kebingungan tipe.

// JavaScript heap spray:
var spray = [];
for(var i = 0; i < 100000; i++) {
  spray[i] = unescape("%90%90...shellcode...");
}

Pembebasan Ganda

Pembebasan ganda terjadi ketika memori dibebaskan dua kali. Pembebasan kedua merusak metadata pengalokasi memori dinamis (penunjuk daftar bebas), yang berpotensi memungkinkan penyerang mengendalikan lokasi alokasi berikutnya — sehingga dapat menulis ke alamat sembarang.

Luapan Penyangga Memori Dinamis

Seperti luapan tumpukan, luapan penyangga memori dinamis menulis melewati akhir alokasi memori dinamis. Berbeda dari luapan tumpukan, targetnya biasanya adalah metadata memori dinamis (ukuran, penunjuk maju/mundur) atau alokasi berdekatan yang berisi penunjuk fungsi atau penunjuk tabel fungsi virtual.

Kebingungan Tipe

Kebingungan tipe terjadi ketika bagian memori yang dialokasikan sebagai satu tipe digunakan sebagai tipe lain. Hal ini umum terjadi dalam mesin JavaScript dan kode C++. Jika penyerang dapat mengendalikan urutan alokasi, mereka dapat membuat mesin memperlakukan data penyerang sebagai objek tepercaya.

Internal ptmalloc dan tcmalloc

Memahami pengalokasi memori dinamis membantu pengembangan eksploitasi. ptmalloc milik glibc menggunakan bin (tidak terurut, kecil, besar) dan bin cepat. tcache (tembolok per utas) adalah sumber alokasi pertama. Eksploitasi sering menargetkan korupsi bin untuk mengendalikan alamat alokasi berikutnya.

Mitigasi

Mitigasi eksploitasi memori dinamis:

  • Pengacakan memori dinamis (bagian dari ASLR) — mengacak basis memori dinamis
  • Pelepasan aman — memverifikasi penunjuk maju/mundur sebelum melepaskan tautan
  • Deteksi keracunan tcache — ditambahkan dalam glibc 2.32
  • Penyandian penunjuk — mengenkripsi penunjuk yang tersimpan dalam tcache
  • Bahasa yang aman terhadap memori — Rust menghilangkan UAF saat kompilasi

Eksploitasi Memori Dinamis pada Peramban

Sebagian besar kerentanan zero-day pada peramban melibatkan kerentanan memori dinamis dalam mesin JavaScript (V8, SpiderMonkey). Peramban modern menyusun rantai pelolosan sandbox: kesalahan memori dinamis dalam perender → pelolosan ke proses peramban → peningkatan hak istimewa OS. Setiap langkah memerlukan tekniknya sendiri.

Pemeriksaan Singkat: Eksploitasi Memori Dinamis

Kerentanan apa yang memungkinkan penyerang mengendalikan eksekusi program dengan menggunakan penunjuk usang ke memori yang telah dibebaskan dan dialokasikan kembali dengan data penyerang?

Rangkuman Pelajaran

Kerentanan memori dinamis — UAF, pembebasan ganda, luapan memori dinamis, dan kebingungan tipe — mengeksploitasi kesalahan pengelolaan memori dinamis. Penggunaan setelah pembebasan merupakan kelas eksploitasi modern yang paling umum. Penyemprotan memori dinamis memaksimalkan kemungkinan mengarah ke data penyerang. Mitigasi: ASLR, pelepasan aman, dan penyandian penunjuk. Bahasa yang aman terhadap memori seperti Rust menghilangkan kelas kerentanan ini sepenuhnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap” gratis?

Ya — teks lengkap “Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap”?

Pahami internal malloc glibc, kondisi use-after-free, dan teknik penyemprotan heap. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?

Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Luapan Buffer Tumpukan
  2. Pemrograman Berorientasi Pengembalian (ROP)
  3. Kerentanan String Format
  4. Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap
← Kembali ke Cyber Security Academy