フォークは、Unix および Linux オペレーティング システムにおけるシステム コールで、既存のプロセス (親プロセス) を複製して、新しいプロセス (子プロセス) を作成します。この機能により、親プロセスと子プロセスの両方が別々のタスクを同時に実行できます。子プロセスは、固有のプロセス ID とその他のいくつかの属性を除いて、親プロセスの正確なコピーです。フォークは、これらのオペレーティング システムにおける基本的な概念であり、異なるプログラムを実行するための新しいプロセスの作成やマルチタスクの管理など、さまざまな目的で使用されます。
フォーク爆弾は「ラビットウイルス」とも呼ばれ、フォークシステムコールを悪用するサービス拒否 (DoS) 攻撃の一種です。この攻撃では、悪意のあるプロセスがフォークコールを繰り返し使用して新しいプロセスを作成し、それがさらにプロセスを作成し、プロセス数が急激に指数関数的に増加します。この再帰プロセスは、システムのメモリやプロセススロットなどのリソースがなくなるまで継続され、システムが過負荷になり応答しなくなります。
フォーク爆弾の主な目的は、システムのリソースを使い果たし、システムが本来の機能を実行できないようにしたり、ユーザー入力に応答できないようにすることです。この攻撃はシステムを事実上ダウンさせ、再起動するか悪意のあるプロセスが終了するまで使用不能にします。フォーク爆弾は実装が比較的簡単で、大きな混乱を引き起こす可能性があるため、サービス拒否を狙う攻撃者にとって強力なツールとなります。
フォーク爆弾のリスクを軽減するために、システム管理者はユーザーとプロセスにリソース制限を実装し、単一のユーザーまたは特定の時間枠内で作成できるプロセスの数を制限できます。システム リソースとアクティブなプロセスを定期的に監視すると、潜在的なフォーク爆弾攻撃を検出して対応するのにも役立ちます。