RCE(リモートコード実行)攻撃とは何ですか?
リモートでコードが実行されると、ユーザーの入力がファイルまたは文字列に挿入され、パッケージ全体がプログラミング言語のパーサーで実行されると悪用される可能性のある脆弱性の形式が公開されます。 これは、webアプリケーションの開発者が示す動作の種類ではありません。 リモートコード実行攻撃は、webアプリケーション全体とwebサーバー全体を侵害する本格的な攻撃につながる可能性があります。 また、事実上すべてのプログラミング言語には、異なるコード評価関数があることにも注意してください。
同じプログラミング言語でコードを評価している関数にユーザー入力がアクセスできるようにすると、コード評価が発生することもあります。 このタイプの尺度は、プログラミング言語の数学関数にアクセスするために意図的に実装されているか、ユーザーが制御する入力がこれらの関数のいず この行動を実行することはお勧めできません。 多くの人々は、コード評価を使用することさえ悪意があると感じています。
コードの例
コード評価攻撃の例を見てみましょう。
各ユーザーに対して動的に生成された変数名を持ち、登録日を保存する方が良い考えのように思えるかもしれません。 これは、PHPで行う方法の例です
eval("$$user = '$regdate');As long as the username is controlled by the user's input, an attacker may create a name like this:x = 'y';phpinfo();//
生成されるPHPコードは次のようになります:
$x = 'y';phpinfo();// = 2016';
攻撃者が変数に別の値を割り当てることができれば、セミコロン(;)を使用して新しいコマンドを作成することができます。 彼は今、文字列の残りの部分を埋めることができます。 このようにして、彼は彼の仕事で構文エラーを得ることはありません。 このコードを実行するとすぐに、phpinfoの出力がページに表示されます。 入力を評価できる機能を備えたPHPや他の言語では可能であることを常に覚えておく必要があります。
起源によるリモートコード実行の配置
顕著なRCEの弱点の大部分は、その出発点に戻ることができる特定の基本的な原因によるものです。 リモートコード実行の開始によるグループ化は、次のように検討されます。
動的コード実行
動的コード実行は、すべてのアカウントによって、コード実行の攻撃を促す最も広く認識されている基本的な理由です。 多くのプログラミング方言は、別のコードでコードを生成してすぐに実行できる程度に計画されています。 このアイデアは、様々な複雑な問題を処理する素晴らしいものです。 それが可能であれば、悪意のある攻撃者はこのアイデアを制御してRCEアクセスと容量を取得することができます。
通常、迅速に生成されるコードは、特定のクライアントの入力に依存します。 慣習的に、コードには特定の構造のために記憶された情報が組み込まれています。 悪性の侵略者が強力なコード時代が特定の情報を利用することを理解すると、アプリケーションを分離するためのアクセスの種類として実質的なコード クライアントの貢献が検討されていない場合、コードはその目的に基づいて実行されます。
あなたが慎重に見ることを選択した時点で、動的コード実行は、rceベースの攻撃の二種類のために責任があります。
Direct
直接ユニークなトリビュート実行のイラストを管理するとき、侵略者は彼らのフィードバックがコードを生成するために利用されることを認識します。
間接的な
異常な方法では、クライアント入力を持つ強力なコード時代が心配されています。 クライアント入力は、通常、少なくとも一つの層の対象となります。 レイヤーの一部は、動的なコードエイジで終わる前に貢献を変更するために責任があるかもしれません。 さらに、動的なコードエイジは、その後の影響であり、情報の即時利用ではない可能性があります。 これが、遠くに実行されるコードスクラップの構造ブロックとして入力される情報をクライアントに提供していることが明確ではない理由です。
逆シリアル化
逆シリアル化は、現在の状況を描写するための信じられないほどのガイドです。 逆シリアル化中に強力なコードエイジは発生しません。 断続的に、これは、シリアル化されたオブジェクトに粗末な情報フィールドまたは同等の並べ替えのオブジェクトが含まれている場合に発生する状 記事の要素がシリアル化されると、物事はより混乱します。 逆シリアル化には、同様にある程度の動的コードエイジが組み込まれます。
作品連載の影響を受けているのは強力な方言だけのように見えるかもしれません。 これが真実であれば、問題は非常に制限されます。 それが可能であれば、この状況は静的な方言でも非常に役立ちます。 静的言語で達成するのは難しいですが、確かに実現可能ではありません。
実行時のAgeオブジェクトは、動的コード年齢で考えられます。 これは、逆シリアル化される情報が遠くに行われた勧誘で行われた場合、悪意のある加害者がそれを指揮して調整することができることを意味し 計画されたコードビットの周りのすべては、同様に、それが逆シリアル化の一部として組み込まれているときに容量を実行するための強力なコードエイジを知ることができます。
メモリの安全性
RCE攻撃のもう1つの基本的な理由は、メモリセキュリティまたはAPIセキュリティで識別されます。 メモリの幸福は、コードがinstateしなかったメモリの基本的な部分に到達することから、コードの反作用を暗示しています。 メモリセキュリティの欠如が不正な情報アクセスをもたらすことを期待するのは普通です。 いずれにしても、作業フレームワークと機器は、実行可能コードを格納するためのメモリに依存します。 コード実行で識別するメタデータは、メモリに保持されます。 メモリのこの部分にアクセスすると、ACEとRCEを促すことができます。 このようにして、記憶の幸福の問題の理由の一部は何ですか?
製品の計画の不完全さ
製品構成の不完全さは、特定の隠された部分に計画の間違いがある場合に起こるメモリ幸福の弱点の一種です。 断続的に、欠点の部分は、コンパイラ、トランスレータ、仮想マシン、または作業フレームワーク部分またはライブラリである可能性があります。 このクラスには様々な傷があります。 の一部を組み込む;
バッファオーバーフロー
バッファオーバーフローは、さらにバッファオーバーロードとして言及され、メモリの幸福を破るために利用される基本的で有名な方法を この攻撃は、メモリクッションの仕上げに向かって配置されているメモリセルと連絡を取り合うために、特定の計画の傷やバグを利用しています。 サポートは、公開APIへの本物の呼び出しから戻ってくるでしょう。 それにもかかわらず、cradleは、特定の記事またはプログラムカウンタの実際のメモリ位置を登録するために利用される開始場所を暗示しています。 揺りかごからのそれらの分離は顕著であるか、または間違いなく推測することができます。 アクセス可能になったときにコードを調査したり、実行時にプログラム全体の実行をトラブルシューティングしたりすると、相対的な位置を調べる必要がある侵略者にとって有用になる可能性があります。
これは、揺りかごの洪水がある程度利用できないメモリを変更することを可能にすることを意味します。 クレードルはもう一つのマシンの場所空間にあるかもしれませんし、遠くのAPIを呼び出すことによって変更されます。 これにより、リモートマシンのメモリへのアドミタンスが行われます。 RCEの二重取引を行う際にこの種のアクセスを利用するための多くのアプローチがあります。 クッションの洪水の弱さがあると仮定すると、RCEベースの攻撃はカードから外れていないという全体的な疑いがあります。 これは、rce攻撃が発生する前に、コード所有者が迅速にサポート洪水を修正するために依存していることを意味します。
機器の設計上の欠陥
メモリのウェルビーイング攻撃は、同様に機器の構成上の欠陥が原因である可能性があります。 彼らはプログラミング攻撃ほど正常ではなく、認識するのがはるかに困難です。 しかし、この種の攻撃は非常にフレームワークに影響を与えます。
リモートコード評価脆弱性の影響
リモートコードベースの攻撃をシステム上で正常に実行できる攻撃者は、プログラミング言語またはwebサーバーを利用して他のコ 多くのプログラミング言語では、攻撃者はファイルの書き込み、読み取り、または削除をシステムに命令することができます。 攻撃されたシステムで別のデータベースに接続することも可能です。
なぜ攻撃者はRCE攻撃を開始するのですか?
攻撃者がrceの悪用を利用してwebアプリケーションを攻撃することを選択する理由は特にありませんが、特に理由はありません。 いくつかの悪意のある人は、このコード実行を利用してシステムにアクセスするのが簡単だと感じています。
リモートコード実行攻撃を防ぐにはどうすればよいですか?
まず、評価されたコード内でユーザー入力を使用しないようにする必要があります。 この状況での最良の選択肢は、evalなどの関数の使用を完全に避けることです。 それは悪い習慣の一形態であると考えられており、簡単に回避することができます。 また、問題のプログラミング言語で解析された可能性のあるファイルの内容をユーザーに編集させないようにすることもお勧めします。 多くの場合、これには、webアプリケーションでアップロードまたは作成する名前とファイル拡張子をユーザーに作成させることが含まれます。
これらは、RCEベースの攻撃を避けるために行うべきではないことのいくつかです。 それらは含んでいます:
- ユーザー入力を消毒します。 多くの場合、事前にインストールされたバイパスと制限が大量にあるため、これを達成することは困難です。
- ユーザーがwebサーバーで使用するファイルの拡張子またはコンテンツを決定または作成できるようにします。 彼/彼女は、ファイルのアップロードを処理したり、間違った手に落ちる重要な情報を危険にさらすときに多くの安全な慣行を使用する必要があ
- ユーザーが制御する入力をシステムコールバックまたは評価関数に渡します
- 特別な文字や関数名を積極的にブラックリストに登録します。 これは、ユーザー入力をサニタイズするのと同じように避けるべきです。 しかし、実装することは非常に困難です。