os211

Top 10 List of Week 04

  1. Difference Between Logical and Physical Address in Operating System
    Website ini memberikan penjelasan mengenai perbedaan manajemen memori yang ada yaitu logical dan physical. Bisa dibilang, logical adalah alamat yang bukan alamat sebenarnya yang ada di disk, tapi komputer mengaturnya sedemikian rupa sehingga bisa saja alamatnya itu-itu saja padahal punya alamat yang berbeda secara fisik.

  2. What do ‘statically linked’ and ‘dynamically linked’ mean?
    Kalau kita melakukan pemrograman C, biasanya kita tidak lagi memanggil syscall dari program kita sehingga kita dapat menggunakan shared object yang sudah ada di sistem operasi. Jika kita terus menggunakan shared object tersebut, maka kita dapat sebut itu dynamically-linked. Bisa saja kita butuh untuk menggunakan fungsi yang sama saja setiap kali program dijalankan, sehingga tidak bergantung lagi pada shared object yang disediakan, sehingga kita bisa sebut itu statically linked. Jawaban di forum ini menjelaskan dengan bagus konsep tersebut.

  3. Global Offset Table (GOT) and Procedure Linkage Table (PLT)
    Program C jika dicompile biasa akan melakukan dynamic linking ke libc. Implementasi dari dynamic linking tersebut disimpan di dalam program setelah proses kompilasi dengan segmen PLT dan GOT. Video ini menjelaskan bagaimana PLT menjadi seperti sebuah trampolin untuk memanggil fungsi yang ada di libc sehingga kita bisa menggunakan fungsi-fungsi tersebut.

  4. Hardening ELF binaries using Relocation Read-Only (RELRO)
    Jika Anda sudah menonton video di nomor sebelumnya, mungkin akan muncul pertanyaan: “apakah hal seperti ini bisa dieksploitasi?”. Jawabannya adala bisa! Beberapa bug yang muncul pada program (seperti format string, heap double free, heap overflow, etc.) yang dapat melakukan overwriting pada GOT akan membuat pemanggilan fungsi tersebut memanggil fungsi lain (pada kasus terburuk, memanggil shell). Full RELRO adalah proteksi untuk mencegah overwriting tersebut. Penjelasan lengkapnya silakan baca di website di atas.

  5. What Is ASLR, and How Does It Keep Your Computer Secure?
    Proteksi lain agar attacker kesulitan untuk memanfaatkan alamat dari program dalam eksploitasinya adalah Address Space Layout Randomization (ASLR). Dengan adanya ASLR, alamat memori akan berubah setiap kali program di-run. Selengkapnya ada di link tersebut.

  6. ELF, PIE ASLR and everything in between, specifically within Linux
    Selain ASLR, ada mitigasi yang mirip yaitu PIE. Tetapi hanya untuk sebagian memory region. Selengkapnya bisa dibaca di website di atas.

  7. ASLR / PIE Intro
    Jika masih bingung mengenai konsep ASLR dan PIE, link ini bisa membantu. Singkatnya, address akan berubah setiap kali program dijalankan dan itu menjadi proteksi dari serangan yang memanfaatkan alamat di dalam program.

  8. Understanding Program Memories — from exploitation point of view
    Mungkin masih ada yang tidak tahu bagaimana bentuk dari segmen-segmen binary file ketika dikompilasi dan dijalankan. Artikel ini sangat bagus dalam menjelaskan seperti apa bentuknya.

  9. Pointers in C Explained – They’re Not as Difficult as You Think
    Pointer sering dianggap menyeramkan oleh sebagian programmer yang jarang menggunakannya. Tetapi sebenarnya ini hanyalah alamat. Selengkapnya dijelaskan di artikel ini.

  10. Run a program with a newer libc
    Jika program di-compile dengan libc yang berbeda dan tidak statically-linked, maka kita perlu me-run dengan libc lain yang mungkin tidak ada di sistem kita. Link ini berisi jawaban pada forum yang menjelaskan cara melakukannya.