Fork Bomb

bağlantı=https://en.wikipedia.org/wiki/File:Fork_bomb.svg|sağ|küçükresim|300x300pik|Ç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 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. == Uygulama == Çatal bombaları hem çatallanma sürecinde CPU sürecini tüketerek hem de işletim sisteminin işlem tablosunu doldurarak çalışır. 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. Ç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 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; 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. PAM etkin sistemlerde, bu sınır `/etc/security/limits.conf`, de de ayarlanabilir ve FreeBSD'de sistem yöneticisi `/etc/login.conf` sınırlar koyabilir. Modern Linux sistemleri ayrıca cgruplar ve işlem numarası (PID) denetleyicisi aracılığıyla daha ince taneli çatal bombası önlemeye izin verir. == Ayrıca bakınız == * Kilitlenme * Mantık bombası * Saatli bomba (yazılım) == Kaynakça == == Dış bağlantılar == * Birçok dilde çatal bomba örnekleri Kategori:İşlem (bilgisayar)