İçeriğe atla

Fork Bomb

Çatal bombasının çalışma biçimini gösteren şekil. Süreçler sürekli olarak kendilerini kopyalayarak potansiyel olarak hizmet reddine neden olur

Bilgisayarlı programlamada, çatal bombası (İngilizce: Fork Bomb, tavşan virüsü veya wabbit[1] olarak da adlandırılır), bir işlemin mevcut sistem kaynaklarını tüketmek, kaynak yetersizliği nedeniyle sistemi yavaşlatmak ve sonunda tamamıyla çökertmek için sürekli olarak kendini kopyaladığı bir hizmet reddi saldırısıdır.

Tarihi

1978 civarında, wabbit adı verilen çatal bombasının erken bir varyantının bir System/360 üzerinde çalıştığı bildirildi. Washington Üniversitesi'ndeki bir Burroughs 5500'de 1969'da rapor edilen RABBITS adlı benzer bir saldırıdan gelmiş olabileceğini gösteriyor.[1]

Uygulama

Çatal bombaları hem çatallanma sürecinde CPU sürecini tüketerek hem de işletim sisteminin işlem tablosunu doldurarak çalışır.[2][3] Bir çatal bombasının temel bir uygulaması, kendisinin yeni kopyalarını tekrar tekrar başlatan sonsuz bir döngüdür.

Unix benzeri işletim sistemlerinde, çatal bombaları genellikle çatal sistem çağrısını kullanmak için yazılır.[3] Çatallanmış süreçler aynı zamanda ilk programın kopyaları olduğundan, çerçeve işaretçisindeki sonraki adresten yürütmeye devam ettiklerinde, aynı sonsuz döngünün kendi kopyaları içinde durmadan çatallanmaya devam ederler; bu, süreçlerde üstel bir büyümeye neden olma etkisine sahiptir. Modern Unix sistemleri, yeni süreçleri çatallanırken genellikle bir yazma üzerine kopyalama kaynak yönetimi tekniği kullandığından[4] bir çatal bombası genellikle böyle bir sistemin belleğini doyurmayacaktır.

Microsoft Windows işletim sistemleri, Unix fork sistem çağrısına eşdeğer bir işlevselliğe sahip değildir;[5] Böyle bir işletim sistemindeki çatal bombası, mevcut bir işletim sisteminden çatallanmak yerine yeni bir süreç yaratmalıdır.

Unix kabuğu için klasik çatallama bombası örneği :(){ :|:& };:, şu şekilde daha kolay anlaşılabilir:

fork() {
  fork | fork &
}
fork

İçinde, bir işlev (fork()) kendisini (fork) olarak adlandırır, daha sonra sonucunu (|) kendisinin bir arka plan işine (&) yönlendirir. Sistem çağrılarındaki sınırlamalar göz önüne alındığında, Windows eşdeğeri batch olarak şu şekilde yazılabilir:

:loop
start %~nx0
goto loop

Bunun daha da kısa bir versiyonu, anonim fonksiyonlar kullanılarak elde edilebilir:

%0|%0

Önleme

Bir çatal bombasının çalışma modu tamamen yeni süreçler oluşturarak kapsüle edildiğinden, bir çatal bombasının tüm sistemi ciddi şekilde etkilemesini önlemenin bir yolu, tek bir kullanıcının sahip olabileceği maksimum işlem sayısını sınırlamaktır. Linux'ta bu, ulimit yardımcı programı kullanılarak gerçekleştirilebilir; örneğin, ulimit -u 30 komutu, etkilenen kullanıcıyı sahip olunan maksimum otuz işlemle sınırlayacaktır.[6] PAM etkin sistemlerde, bu sınır /etc/security/limits.conf,[7] de de ayarlanabilir ve FreeBSD'de sistem yöneticisi /etc/login.conf sınırlar koyabilir.[8] Modern Linux sistemleri ayrıca cgruplar ve işlem numarası (PID) denetleyicisi aracılığıyla daha ince taneli çatal bombası önlemeye izin verir.[9]

Ayrıca bakınız

  • Kilitlenme
  • Mantık bombası
  • Saatli bomba (yazılım)

Kaynakça

  1. ^ a b "wabbit". The Jargon Lexicon. 1 Ekim 2004. 9 Haziran 2003 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ekim 2013. 
  2. ^ Secure Computer and Network Systems: Modeling, Analysis and Design. 2008. s. 16. ISBN 0470023244. 
  3. ^ a b Network Dictionary. 2007. s. 200. ISBN 1602670005. 
  4. ^ Operating Systems: A Concept-based Approach. 2006. s. 285. ISBN 0-07-061194-7. 
  5. ^ Python Programming On Win32: Help for Windows Programmers. 2000. s. 35. ISBN 1565926218. 
  6. ^ Advanced Bash Scripting Guide. 2005. ss. 305-306. ISBN 1430319305. 
  7. ^ Linux Administration: A Beginners Guide. 2012. ss. 364-365. ISBN 0071767592. 
  8. ^ Absolute FreeBSD: The Complete Guide to FreeBSD. 2007. ss. 198-199. ISBN 1593271514. 
  9. ^ "Process Number Controller in Documentation/ as appeared in Linux kernel 5.3". 8 Ekim 2019. 8 Ekim 2019 tarihinde kaynağından arşivlendi. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

<span class="mw-page-title-main">GNU</span> bilgisayar işletim sistemi

GNU; çekirdeği, sistem araçlarını, açıcılarını, kütüphanelerini ve son kullanıcı yazılımlarını içeren, GNU Tasarısı kapsamında geliştirilen bir işletim sistemidir. İsminin açılımı "GNU's Not Unix" dir. Bu ismi almasındaki sebep de tasarımının Unix'e benzerken kendisinin özgür yazılım olması ve herhangi bir UNIX kodunu içermemesidir.

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

<span class="mw-page-title-main">BSD</span>

BSD, Kaliforniya Üniversitesi, Berkeley'in kaynak kodu dağıtımı olan, AT&T'nin UNIX'i için bir eklentiler zinciridir. Birçok açık kaynak kodlu işletim sistemi projesi, 4.4 BSD-Lite olarak bilinen kaynak kodu dağıtımını temel kabul eder. Ek olarak bunlar, özellikle GNU projesi olmak üzere diğer birçok açık kod projesini de kapsar.

<span class="mw-page-title-main">POSIX</span>

POSIX, UNIX için "taşınabilir işletim sistemi arabirimi".

<span class="mw-page-title-main">Linux bilgisayar virüsleri ve kurtçukları listesi</span> Vikimedya liste maddesi

Linux, Unix ve Unix benzeri işletim sistemlerinin genelde bilgisayar virüslerine karşı güvenli olduğu söylenir. Yine de virüsler potasiyel olarak, korumasız Linux sistemlerine zarar verebilir, onların çalışmalarını engelleyebilir ve hatta diğer sistemlere de yayılabilirler.

<span class="mw-page-title-main">Sanal konsol</span>

Sanal konsol, bilgisayar işlemede ve Unixware, Linux ve BSD gibi bazı işletim sistemlerinde, klavye ve ekran arasında yaratılmış kavramsal bir bağ arayüzüdür. Sistem konsolu kullanıcının birbirinden bağımsız arayüzleri görebilmek için sanal konsolları değiştirmesine olanak sağlayan tek bir konsoldur. Sanal konsollar en az 1980'lerdeki Xenix'e kadar uzanır.

<span class="mw-page-title-main">Filesystem in Userspace</span>

FUSE, Unix türevi bilgisayarlar üzerinde çalışan yetkilendirilmemiş kullanıcıların, çekirdek kodunda değişiklik yapmadan kendi dosya sistemlerini oluşturmasını sağlayan, unix benzer işletim sistemleri için tasarlanmış yüklenebilir çekirdek modülüdür. Bunun gerçekleştirimi ise FUSE modülünün gerçek çekirdek arayüzlerine sadece bir köprü görevi görürken, dosya sistemi kodunun kullanıcı uzayında çalıştırılmasıyla sağlanır.

Bilgi işlem platformu, bir uygulama yazılımı çalıştırmak için donanım mimarisi ve bir yazılım çerçevesi, yazılım, çeşitli bazı kombinasyon veya sıralamalarını içermektedir. Tipik platformlarda bir bilgisayar mimari, işletim sistemi, programlama dilleri ve ilgili kullanıcı arabirimi içerir.

netstat

netstat ağ bağlantıları, yönlendirme tabloları ve ağ arayüzü istatistiklerini görüntüleyen bir komut satırı aracıdır. netstat komutu UNIX, Linux ve Windows NT tabanlı işletim sistemlerinde kullanılabilir.

<span class="mw-page-title-main">Squid (yazılım)</span>

Squid, HTTP ve FTP gibi web servisleri için proxy önbellekleme yapan aynı zamanda internet çıkışlarınızı filtreliyerek yönetmenizi sağlayan bir proxy server’dır. Öncelikli olarak HTTP ve FTP için kullanılsa da, TLS, SSL, Internet Gopher ve HTTPS gibi birkaç farklı protokole de sınırlı bir şekilde destek sağlayabilmektedir. Squid başta Unix türevi işletim sistemleri için bir daemon olarak tasarlanmıştır. 2.7 versiyonu ile windows port eklenmiştir. Yeni versiyonlar Cygwin ortamını kullanan windowslar için çalışabilmektedir. Squid GNU Genel Kamu Lisansı altında yayınlanan bir özgür yazılımdır.

Çatal ya da çatallama, bir yazılım projesinin mevcut kaynak kodları kopyalanarak başlatılan yeni projeye verilen addır. Özgür yazılım alanında yaygın bir şekilde görülmekle birlikte özel mülk yazılımlarda da örnekleri görülebilir.

uname

uname (veya unix name) - Unix ve Unix benzeri işletim sistemleri bir yazılım konsol programı olup, sistem hakkında bilgi verir. Geçerli makine ve üzerinde çalışdığı işletim sistemi hakkında isim, sürüm ve diğer ayrıntıları yazdırır. uname sistem çağrısı ve komut PWB / UNIX ile ilk kez ortaya çıktı. Her ikisi de POSIX tarafından belirtilir.

ps (Unix)

Çoğu Unix benzeri işletim sisteminde, ps programı o anda çalışan işlemleri görüntüler. "top" adındaki bir başka Unix yardımcı programı ise çalışan süreçlerin gerçek zamanlı bir görünümünü sağlar.

<span class="mw-page-title-main">XNU</span>

XNU, MacOS işletim sisteminde kullanılmak üzere Aralık 1996'dan beri Apple'da geliştirilen ve Darwin işletim sisteminin bir parçası olarak ücretsiz ve açık kaynaklı yazılım olarak piyasaya sürülen bilgisayar işletim sistemi çekirdeğidir. Ayrıca, iOS, tvOS ve watchOS işletim sistemlerinin çekirdeği olarak da kullanılır. XNU, "X Not Unix"'in bir kısaltmasıdır.

Yazılım mühendisliğinde, bir uyumluluk katmanı, bir ana sistem üzerinde, eski veya yabancı bir sistem için yazılmış ikili dosyaların çalıştırılmasını sağlayan bir arabirimdir. Bu, yabancı sistem çağrılarını, yerel sistem çağrılarına çevirir. Yabancı sisteme yönelik bazı kütüphaneler, ana sistem üzerinde yabancı ikili dosyaları çalıştırmak için yeterli olacaktır genellikle. Donanım uyumluluğu katmanıysa donanım emülasyonu sağlayan araçlardan oluşur.

<span class="mw-page-title-main">Bilgisayar terminali</span> Bir bilgisayara veya bir bilgi işlem sistemi güncelleme programına veri girmek ve buradan verileri görüntülemek için kullanılan bir elektronik veya elektromekanik donanım cihazı

Bilgisayar terminali, elektronik veya elektromekanik bir donanım cihazıdır. Bir bilgisayara veya bir bilgi işlem sistemine veri girmek ve bu verilerden kopyalamak için kullanılabilir. İlk terminaller ucuz cihazlardı ancak delikli kartlara veya giriş için delikli bantlara kıyasla çok yavaştı.

<span class="mw-page-title-main">Unix shell</span> Unix işletim sistemi için yorumlayıcı program

Unix shell, Unix benzeri işletim sistemleri için bir komut satırı kullanıcı arabirimi sağlayan bir komut satırı yorumlayıcısı veya kabuğudur. Kabuk, hem etkileşimli bir komut dili hem de bir komut dosyası dilidir ve işletim sistemi tarafından sistemin kabuk komut dosyalarını kullanarak yürütülmesini kontrol etmek için kullanılır.

<span class="mw-page-title-main">Kernel panic</span>

Bir kernel panic, bir işletim sisteminin çekirdeği tarafından, güvenli bir şekilde kurtarılamadığı veya sistemi çalıştırmaya devam etmenin büyük veri kaybı yaşanabilmesinin yüksek bir riske sahip olacağı dahili bir kritik hata tespit edildiğinde alınan bir güvenlik önlemidir. Terim büyük ölçüde Unix ve Unix benzeri sistemlere özgüdür. Microsoft Windows işletim sistemlerindeki eşdeğeri, genellikle "mavi ekran" olarak adlandırılan bir durdurma hatasıdır.

<span class="mw-page-title-main">DragonFly BSD</span> Ücretsiz ve açık kaynaklı Unix benzeri işletim sistemi

DragonFly BSD, FreeBSD 4.8'den çatallanmış özgür ve açık kaynaklı Unix benzeri bir işletim sistemidir. 1980'lerin sonunda ve 1990'ların başında bir Amiga geliştiricisi ve 1994 ile 2003 arasında FreeBSD geliştiricisi olan Matthew Dillon, Haziran 2003'te DragonFly BSD üzerinde çalışmaya başladı ve 16 Temmuz 2003'te FreeBSD posta listelerinde duyurdu.