コンピュータの世界では、 特定のコマンド 一見すると無害に見えるかもしれませんが、悪意を持って、または偶然に使用された場合、システム全体を破滅に導く可能性がある破壊的な力が隠されています。これらのコマンドの中で、最もよく知られているかどうかにかかわらず、最も恐れられているコマンドの 1 つは、いわゆる フォークボム、またはフォークボム。
フォークボムはサービス妨害 (DoS) 攻撃の一種にすぎません。 利用可能なシステム リソースを消費するように設計されていますCPUやメモリなどが使用不能になるまで劣化します。このコマンドがどのように機能するのか、なぜそれほど有害であるのか、自分自身を守るためにどのような手順を踏めばよいのか疑問に思ったことがある場合は、ここで知る必要があるすべての情報が分かりやすく詳細に説明されています。
フォークボムとは何ですか?
フォークボムは、指数関数的に複製する傾向があるため「ウサギウイルス」としても知られており、 プロセスを大量に作成してシステムを飽和させる 稼働中。これは、Unix および Linux システムで使用できる fork 関数を使用するコマンドによって実現されます。 fork 関数を使用すると、プロセスは、子プロセスと呼ばれる、それ自体の正確なコピーを作成できます。
に関連する最も代表的なコマンドは、 フォークボム それは次のとおりです。
:(){:|:&} ;:
このコマンドは、コンパクトながら非常に強力な構造を持っています。それは、という関数を定義することです。 :、それ自体を再帰的に呼び出し、オペレーターのおかげで実行ごとに 2 つの新しいプロセスを生成します。 パイプ | & を使用してバックグラウンドで実行します。その結果、プロセスが指数関数的に増加し、数秒でシステムが崩壊します。
フォークボムの仕組みは?
コマンド :(){:|:&} ;: 最初は混乱するかもしれないので、段階的に見てみましょう。
:
:この記号は機能名を表します。実際には、任意の名前を使用できます。() { }
: この構文はパラメーターなしで関数を定義します。:|:
: 定義されると、関数はそれ自体を呼び出し、演算子は | 出力をそれ自体の新しいインスタンスにリダイレクトします。&
: このシンボルはバックグラウンドで呼び出しを実行し、プロセスの同時作成を可能にします。;
: 関数の定義と最初の実行の間の区切りとして機能します。:
: 最後に、この最後のシンボルは関数を実行し、プロセスのカスケードを開始します。
フォークボムは実行されるとすぐにシステムリソースを消費します。 新しいプロセスを実行する機能をブロックする そして通常はコンピュータを強制的に再起動します。
脆弱なシステム
実用的 Unix または Linux ベースのオペレーティング システムUbuntu、Debian、Red Hat などは、すべてフォーク システム コールを利用するため、フォーク ボムに対して脆弱です。ただし、システムは、 Windows これらはフォークと同等の機能を持たないため、この特定のタイプの攻撃に対して脆弱ではありません。代わりに、Windows では同様の方法で一連の新しいプロセスを作成する必要がありますが、これにはより複雑なアプローチが必要です。
さまざまな言語でのフォークボムの例
La フォークボム これは Bash に限定されたものではありません。他のプログラミング言語でも実装できます。以下にいくつかの例を示します。
パイソンフォークボム
#!/usr/bin/env True の場合、Python で os をインポートします: os.fork()
ジャワフォークボム
public class Bomb { public static void main(final String[] args) { while (true) { Runtime.getRuntime().exec("java Bomb"); } } }
C フォークボム
#含むint main(void) { while (1) { fork(); } }
フォークボムの衝撃
フォークボムの主な影響は次のとおりです。 システム過負荷。 CPU、メモリ、プロセス入力などのリソースが急速に消費され、システムが不安定になったり、応答しなくなったりします。ほとんどの場合、必要なのは 強制再起動 コントロールを取り戻すために。さらに、災害時のアプリケーションの突然の動作により、データが失われる重大なリスクがあります。
防止策
フォーク爆弾は破壊的なものですが、 その影響を軽減したり、防止したりする方法もあります。 完全に:
1. プロセス数を制限する
コマンド ulimit Linux では、ユーザーが作成できるプロセスの最大数に制限を設定できます。例えば:
ulimit -u 5000
これにより、ユーザーの最大権限が制限されます。 5000のアクティブなプロセス.
2. 永続的な制限を構成する
制限を永続的に適用するには、ファイルを変更します。 /etc/security/limits.conf
。 例えば、
ハードユーザー nproc 5000
これにより、ユーザーがログアウトした後でも制限が維持されます。
3. Cgroup の使用
最新の Linux システムでは、 cgroup (制御グループ) を使用すると、システム リソースのより詳細な制御を確立できます。 許可されたプロセス.
ソーシャルネットワーク上で見られるものに注意を払わないでください
この種のコマンドはソーシャル ネットワーク上で悪ふざけとして表示される場合があるため、指示された内容を端末に入力しないように注意する必要があります。これ以上は進めずに、X に「フォークボム」を入れると、次のようになります。 投稿への返信 それは「こんにちは、フォークボム」です。数分前に共有された元の投稿では、:(){ :|:& };: という名前の猫がいて、それをターミナルに置いたと書かれています。これが何をするかについてはすでに説明しましたので、行わないでください。
フォークボムは、コンセプトはシンプルですが、 脆弱なシステムに重大な影響を与える。最新のコンピューティング環境を保護するには、その仕組み、その影響、およびそれを軽減する方法を理解することが不可欠です。これは、単純なコマンドがいかに壊滅的な結果を招く可能性があるかを思い出させ、適切なシステム管理とセキュリティ制限の設定の重要性も思い出させます。