Kod cangkerang

Dalam keselamatan komputer (computer security), kod cangkerang (shellcode) merupakan kod mesin boleh alih yang digunakan sebagai bebanan dalam mempergunakan pepijat perisian. Ia dikenali sebagai "kod cangkerang" kerana ia biasanya melaksanakan cangkerang perintah (command shell) yang membolehkan penyerang mengawal mesin yang terdedah. Disebabkan fungsi bebanan tidak terhad kepada sekadar menyalin dalam cangkerang, sesetengah pihak berpendapat bahawa nama kod cangkerang tidak tepat. Bagaimanapun, usaha menggantikan istilah ini tidak diterima ramai.

Kod cangkerang boleh disimpan dalam proses ruang ingatan dan kemudiannya dilaksanakan menyebabkan penyerang mendapat kawalan penghintung perisian (program counter) dengan menggunakan kelemahan seperti peruntukan ingatan berasaskan tindanan (stack-based memory allocation) dan Peruntukan ingatan dinamik (Dynamic memory allocation) -berasaskan limpahan penimbal, atau serangan format rentetan (format string attacks). Terdapat beberapa kaedah mengawal penghintung perisian yang berbeza antara sistem pengendalian dan seni bina pemproses termasuk tulis tindan (overwriting) alamat kembali yang tersimpan dalam cangkerang tindan (stack frame) dan menindan pengendalian pengecualian (exception handlers).

Strategi perlaksanaan kod cangkerang 

Sebahagian besar kod cangkerang ditulis tanpa penggunaan bait penamat null kerana ia bertujuan untuk dimasukkan ke dalam jujukan aksara (character arrays). 

Bait null yang terdapat dalam rentetan akan menamatkan perlaksanaan kod cangkerang sebelum tiba masanya. Untuk menghasilkan kod cangkerang sedemikian, seseorang boleh mengkompil aturcara bebanan dengan pengkompil (sering kali C) dan kemudiannya menggantikan perintah dengan yang mengandungi sifar dengan perintah lain yang mempunyai kesan yang sama tetapi tanpa bait sifar. Sebagai contoh, melalui perintah sistem 32-bit x86:
 mov eax, 1
mengandungi sifar sebagai sebahagian dari harafian (1 dikembangkan kepada 0x00000001), dengan itu menamatkan rentetan. Ini boleh ditulis sebagai dua perintah: 
 xor eax, eax
 inc eax
yang mana bebas-NUL (kerana mengambil xor apajua dengan dirinya sendiri sentiasa menghasilkan 0). Sebagai tambahan, baris pertama boleh digunakan bagi hasil yang sama.

Lihat juga 
 cangkerang (pengkomputeran)
 limpahan penimbal (Buffer overflow)
 limpahan Heap overflow
 limpahan Stack buffer overflow
 keselamatan komputer

Rujukan

Pautan luar 
 Pengenalan kepada limpahan bufer dan kod cangkerang 
 Asas kepada mengenkod cangkerang (Shellcoding) (PDF) An overview of x86 shellcoding by Angelo Rosiello
 Pengenalan kepada pembangunan kod cangkerang. 
 Contains x86 and non-x86 shellcode samples and an online interface for automatic shellcode generation and encoding, from the Metasploit Project 
 Contains x86 and non-x86 shellcode samples
 a shellcode archive, sorted by Operating system .
 Microsoft Windows and Linux shellcode design tutorial going from basic to advanced.
 Panduan kod cangkerang Windows dan Linux dengan contoh langkah demi langkah.
 Menghilangkan mitos mereka kod cangkerang 

Keselamatan komputer