Arbitrary code execution とは

コンピュータセキュリティでは、「任意のコードの実行」は、攻撃者がターゲットマシンまたはターゲットプロセスで攻撃者が選択したコマンドを実行する能力を表すために使用されます。これは、任意のコード実行脆弱性において、攻撃者に任意のコードを実行させるソフトウェアバグを記述するために一般的に使用されます。このような脆弱性を悪用するように設計されたプログラムは、任意のコード実行の悪用と呼ばれます。これらの脆弱性のほとんどはマシンコードの実行を許可しているため、ほとんどのエクスプロイトはシェルコードを注入して実行することで、攻撃者に手動で任意のコマンドを簡単に実行させることができます。あるマシンから別のマシン(特にインターネットなどの広域ネットワーク経由)上で任意のコードを実行する機能は、しばしばリモートコード実行と呼ばれます。
機能注入システムにコードを注入するためには、任意のコード実行が最も頻繁に使用されますが、システム自体を使用してアセンブリなどの言語で独自のコードを書くことができるように、生成されたスクリプトを作成してアクティブ化します。特に、エミュレータとプログラム入力の助けを借りて、1人のユーザがSuper Mario WorldのコピーでゲームPongのプリミティブバージョンを作成し、任意のコード実行を使用してFlappy Birdを作成しました。
これは、攻撃者が脆弱なプロセスを完全に引き継ぐことができるため、バグが持つ最も強力な効果です。そこから、攻撃者は潜在的にプロセスが実行されているマシンを完全に制御できます。任意のコード実行脆弱性は、マルウェアによって、所有者の同意なしにコンピュータ上で実行されるか、所有者がメーカーの同意なしにデバイス上で自作ソフトウェアを実行するために悪用されます。
任意のコードの実行は、通常、実行中のプロセスの命令ポインタ(ジャンプや分岐など)の制御によって実現されます。命令ポインタは、実行されるプロセス内の次の命令を指示する。したがって、命令ポインタの値に対する制御は、次に実行される命令を制御する。任意のコードを実行するために、多くのエクスプロイトはプロセスにコードを注入します(たとえば、RAMの入力バッファに格納された入力を送信するなど)。脆弱性を利用して命令ポインタを変更し、注入されたコードを指し示すようにします。注入されたコードは自動的に実行されます。このタイプの攻撃は、ほとんどのコンピュータがコードとデータを一般的に区別しないため、悪質なコードが無害な入力データとして偽装される可能性があるという事実を利用しています。多くの新しいCPUには、実行しないビットなど、これをより困難にするメカニズムがあります。
侵入者がOS上で任意のコードを直接実行できるようになると、追加の制御を得るために特権エスカレーション攻撃を試みることがよくあります。これには、カーネル自体、またはAdministrator、SYSTEM、rootなどのアカウントが含まれます。この拡張された制御の有無にかかわらず、悪用は重大な損害を及ぼす可能性があり、コンピュータをゾンビに変える可能性がありますが、権限の昇格はシステムの正当な管理者からの攻撃を隠すのに役立ちます。したがって、広く展開されたソフトウェアにおける特権昇格の脆弱性を持つ任意のリモートコード実行は、これらの中で最も強力な脆弱性のサブタイプです。この種のバグが判明した場合、通常は数時間以内に修正プログラムが利用可能になります。
多くのWordPressや他のCMSのWebサイトは、リモートコードインジェクション攻撃に対して脆弱です。一般に、この脆弱性は第三者のプラグインによって引き起こされます。