Entry № 477
フォーク爆弾
フォーク爆弾 とは何ですか?
フォーク爆弾プロセスが自身を再帰的に fork し続けることでプロセステーブル・メモリ・CPU を枯渇させるサービス妨害手法。
フォーク爆弾は、子プロセスを再帰的に生成して各サイクルで倍増させ、カーネルの上限・メモリ・CPU を飽和させて、システムを応答不能に追い込む悪意あるあるいは事故的コードである。POSIX の典型例 :(){ :|:& };: は、関数が自身の二つのコピーを起動して切り離すパターンを示す。ワームのようにネットワークを介して拡散することはなく、影響は局所的だが、マルチユーザーホストや CI ランナーでは非常に効果が高い。対策としては、ユーザーごとのプロセス制限(ulimit -u、cgroups、PAM pam_limits)、cgroup の PIDs コントローラ、アカウント分離、信頼できないコード用のサンドボックス、プロセス生成システムコールのレート制限などが挙げられる。
● 例
- 01
DoS デモとして知られる Bash の一行コマンド `:(){ :|:& };:`。
- 02
無限ループ内で誤って fork する不具合のある CI スクリプト。
● よくある質問
フォーク爆弾 とは何ですか?
プロセスが自身を再帰的に fork し続けることでプロセステーブル・メモリ・CPU を枯渇させるサービス妨害手法。 サイバーセキュリティの マルウェア カテゴリに属します。
フォーク爆弾 とはどういう意味ですか?
プロセスが自身を再帰的に fork し続けることでプロセステーブル・メモリ・CPU を枯渇させるサービス妨害手法。
フォーク爆弾 からどのように防御しますか?
フォーク爆弾 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
フォーク爆弾 の別名は何ですか?
一般的な別名: ウサギ型(Wabbit), ラビットウイルス。