:(){ :|:& };:
..:
という名前の関数を定義します 、それ自体をスポーンし (2 回、一方が他方にパイプします)、それ自体を背景にします。
改行あり:
:()
{
:|:&
};
:
:
の名前を変更する 関数を forkbomb
に :
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
ulimit
を使用することで、このような攻撃を防ぐことができます ユーザーごとのプロセス数を制限するには:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
より永続的に、 /etc/security/limits.conf
を使用できます (少なくとも Debian などでは)、例:
* hard nproc 50
もちろん、これは 50 個のプロセスしか実行できないことを意味します。マシンの動作に応じて、これを増やすこともできます!
:
という関数を定義しています 自分自身を 2 回呼び出します (コード:: | :
)。バックグラウンドでそれを行います (&
)。 ;
の後 関数定義が完了し、関数 :
始めます。
:のすべてのインスタンスが 2 つの新しい :を開始します... プロセスのバイナリ ツリーのように...
プレーン C で書かれている:
fork();
fork();