要約
フォーク爆弾とは、サービス拒否(DoS)攻撃の一種です。ごく小さなコードによってプロセスが無限に複製され、サーバーがクラッシュするまでシステムリソースを使い果たします。この脅威は1969年にまで遡りますが、今日でもなお存在しています。Linux環境では、ユーザーあたりの最大プロセス数を制限し、プロセスあたりのメモリ使用量に上限を設けることが、主要な防御策となります。攻撃を受けた場合、復旧するにはサーバーを完全にリセットし、悪意のあるコードのインスタンスをすべて削除する必要があります。
フォーク爆弾はどのように機能しますか?
コンピューター上でプロセスのインスタンスを何百、何千も開くことを想像してみてください。ファンの音が大きくなり、パフォーマンスが低下し、最終的にはデバイスがクラッシュするでしょう。フォーク爆弾は、これとほぼ同じように機能します。
フォーク爆弾のコードはどのように複製されますか?
フォーク爆弾のコードは、プログラムのコピーを作成します。新しいインスタンスが実行されると、再びフォークが発生します。このプロセスは、無期限に、または利用可能なすべてのメモリを使い果たすまで続く可能性があります。このようなDoS攻撃は、壊滅的な被害をもたらす可能性があります。
経験豊富なハッカーにとって、フォーク爆弾の実装は比較的簡単です。ここでは詳細を省きますが(誤解を招くことのないように)、多くの場合、必要となるコードはごくわずかです。
フォーク爆弾を防ぐことはできますか?
すべての開発者の肩越しに座って、危害を加える可能性のあるコードを含めないようにすることはできません。しかし、フォーク爆弾がシステムをダウンさせる可能性を低くするために、2つの重要なことを行うことができます。
- ユーザーあたりの最大プロセス数を制限する:Linuxでは、1人のユーザーが所有できるプロセス数を制限することで、攻撃の勢いが増すのを防ぎます。
- プロセスごとのメモリ使用量の上限設定:プロセスごとにメモリ使用量の上限を設定することで、サーバーの容量を使い果たす前に、不審な重複を検知して拒否できます。
プロセスごとのメモリ使用量を制限することもできます。設定した上限を超えるプロセスがある場合、それは重複している可能性が高いため、ただちに実行を拒否できます。この簡単な手順によって、フォーク爆弾によるサーバー容量の枯渇も防ぐことができます。
システムがフォーク爆弾の攻撃を受けた場合、どうすればよいでしょうか?
攻撃者がフォーク爆弾で攻撃してきた場合、サーバーをリセットする必要があります。残念ながら、攻撃を止めるためには、コードのすべてのインスタンスを削除する必要があります。
- サーバーをリセットします。
- フォーク爆弾のコードをすべて特定し、削除してください。
Linux環境で身を守るための方法をさらに探している場合は、Linuxサーバーの最小特権アクセスを強制するに関するホワイトペーパーをご検討ください。ご不明な点がございましたら、お気軽にOktaまでお問い合わせください。
よくある質問(FAQ)
フォーク爆弾攻撃では、具体的に何が起こるのでしょうか。
フォーク爆弾は、自身をコピーする小さなコードを実行することで機能します。新しく作成されたコピーも同じ動作を繰り返し、指数関数的な連鎖反応を引き起こします。これにより、利用可能なすべてのシステムメモリと処理リソースが急速に消費され、最終的にサーバーがクラッシュします。
フォーク爆弾攻撃はどのくらい前からありますか?
フォーク爆弾は最近発明されたものではありません。この種の攻撃で知られている最も古い例の1つは1969年にまで遡り、数十年前の技術であっても、準備ができていないシステムに対しては依然として有効であることを示しています。
Linuxサーバーでフォーク爆弾のリスクを軽減するにはどうすればよいですか?
実用的な防御策は2つあります。1つ目は、1人のユーザーが所有できるプロセスの最大数を制限することです。これにより、複製チェーンのスケーリングを防ぎます。2つ目は、プロセスごとにメモリ使用量の上限を設定することです。これにより、そのしきい値を超えたプロセスが損害を引き起こす前に実行を拒否できます。
サーバーがフォーク爆弾の攻撃を受けたら、どうすればよいですか?
復旧には2つのステップが必要です。まず、影響を受けたサーバーをリセットし、次に悪意のあるコードのすべてのインスタンスを慎重に特定して削除します。コードのコピーが1つでも残っていると、攻撃が再開される可能性があります。
攻撃者がフォーク爆弾を仕掛けるのは難しいですか?
経験豊富な攻撃者にとって、フォーク爆弾の実装は比較的簡単で、多くの場合、ごくわずかなコードで済みます。参入障壁が低いため、検知のみに頼るのではなく、予防的な制御を導入しておくことが重要です。
フォーク爆弾のような攻撃からLinuxサーバーを保護する方法について、詳しくはご覧ください。
Oktaでは、Linuxサーバーに最小権限アクセスを適用する方法に関するホワイトペーパーを提供しています。このホワイトペーパーでは、攻撃対象領域を縮小し、侵害された単一のプロセスやユーザーが引き起こす可能性のある損害を抑制するための追加戦略について解説しています。
参考文献
Understanding Bash Fork Bomb Code。(2019年1月、NixCraft。
Security Against Fork Bomb Attack in Linux-Based Systems。(2019年4月)International Journal of Research in Advent Technology.