スタック実行使用不可保護
コンピューター・システムを安全に保持することは、オンデマンド・ビジネスの重要な局面です。 今日の高度にネットワーク化された環境では、さまざまなソースからのアタックを撃退することが極度に困難になっています。
コンピューター・システムが高度な技術によるアタックの犠牲になって、その結果、企業や政府機関の毎日の業務が混乱に陥る可能性が増大しています。 アタックに対する絶対に確実な保護を提供できるセキュリティー手段は存在しないといっても、複数のセキュリティー・メカニズムを配置して、セキュリティー・アタックを挫折させる必要があります。 このセクションでは、バッファオーバーフローに基づく実行による攻撃を阻止するためにAIX®で使用されるセキュリティメカニズムについて説明します。
セキュリティー・ブリーチ (抜け穴) はさまざまな形式で発生しますが、最も一般的な方法の 1 つは、システム提供の管理ツールをモニターしてバッファー・オーバーフローを探し出し、それを利用するという方法です。 バッファー・オーバーフロー・アタックが発生するのは、データが正しく検証されていないために (コマンド・ライン、環境変数、ディスク、または端末入出力など) 内部プログラム・バッファーが上書きされる場合です。 バッファー・オーバーフローを通して、実行中のプロセスにアタック・コードが挿入され、その実行中のプロセスの実行パスが変更されます。 戻りアドレスが上書きされて、挿入されたコードの位置にリダイレクトされます。 ブリーチの共通の原因として、境界検査が正しくないかまったく行われていないこと、またはデータ・ソースの妥当性に関する想定が間違っていることがあります。 例えば、データ・オブジェクトに 1 KB のデータを保持できる十分な大きさがあっても、プログラムが入力の境界を検査しないために、そのデータ・オブジェクトに 1 KB を超えるデータをコピーさせる場合に、バッファー・オーバーフローが起こることがあります。
侵入者のゴールは、通常のユーザーに root 権限を提供するコマンドまたはツール (両方の場合もある) にアタックをかけることです。 すべての特権が使用可能になった状態でプログラムの制御が獲得され、バッファーのオーバーフローが許可されます。 典型的なアタックでは、root の所有する UID のセットまたはシェルの実行を引き起こすプログラムがフォーカスとされ、システムに対する root ベースのシェル・アクセスを獲得しようとします。
これらのアタックを防止するには、バッファー・オーバーフローを通して侵入するアタック・コードの実行をブロックします。 プロセスのメモリーのうち、一般に実行が行われない領域 (スタックおよびヒープ・メモリー領域) での実行を使用不可にします。