【翻訳】Understanding Back fork() Bomb ~ :(){ :|:& };: – フォーク爆弾を理解する

11月 1, 2017

あなたは下記のBashコード,別名fork bomb(フォーク爆弾)を説明できますか?

fork bombはLinuxベースのシステムに対するDoS(denial-of-service)アタック
の1つの形である.

:(){ :|:& };: はBashの関数以外のなにものでもない.
この関数は再帰的に実行される.しばしば,システム管理者がユーザプロセスの制限をテストするのに使われる.Linuxにおけるプロセスの制限は/etc/security/limits.confやPAMから設定できる.

ひとたびシステム内でfork bombが有効になると, fork bombに対する唯一の解決策はfork bombのすべてのインスタンスを破壊することであるけれども, 再起動なしに普通の命令を開始することができなくなるかもしれない.

WARNING! これらの例を不用意に実行するとあなたのコンピュータを壊す恐れがあります.

fork bombのコード :(){ :|:& };: を理解する

:(): という名前の定義された関数である. この関数は引数をとらない. Bashの関数の文法は次のとおりになっている.

fork bombは次のように定義されている.

:|: は再帰と呼ばれるプログラミングテクニックを使って自分自身を呼び出し, 出力をもう一つの : 関数の呼び出しにパイプしている. 最悪なのはシステムを爆撃するのに2回呼び出されている関数だ.

& は関数呼び出しをバックグラウンドに追いやってしまうので, 子プロセスは死なずにシステムの資源を食い始める.

; は関数定義の終わりを示す.

: はfork bomb関数を呼び出す.

より私達に読みやすいコードはこちらになる.

適切にシステムの設定がなされていれば, fork bombが実行されてもLinux/UNIXシステムはダウンしないはずだ.

記事元: Understanding Bash fork() Bomb ~ :(){ :|:& };: