サービス拒否

サービス拒否が発生するのは、特定のサービスへのアクセスが許可されるべきだったが、実際には不適切に拒否された場合です。 たとえば、特権のないアプリケーションが操作を実行でき、それによってシステムが使用不可になるのは、事実上のサービス拒否です。 これには、次のような操作または一連の操作が含まれます。

  • システムをクラッシュさせます。

  • スレッドまたはプロセスの早期終了を引き起こします。

  • デッドロック状態を生成します。 デッドロックが発生するのは、2 つ以上のスレッドが停止して、永続的な膠着状態で待機しているときです。 それぞれのスレッドは、他のいずれかのスレッドが保持しているリソースを待機しています。

  • ライブ ロック条件を生成します。 ライブ ロックが発生する可能性があるのは、2 つ以上のプロセッサが 1 つのリソース (通常はキューのロック) の取得を待機しており、そのリソースを所有するスレッドも同様に進行していない状態であるために、それらのプロセッサが進行できなくなるときです。

多くの場合、このような問題はドライバー内で発生します。ドライバーには、通常のアプリケーションによって悪用される可能性のある潜在的なバグが含まれているためです。 この種類の悪用は単純な場合があり、それに対して保護することが困難です。 ドライバーにおけるこのような問題の一般的な原因は次のとおりです。

  • ユーザー バッファーの不適切な検証。

  • バッファーのオーバーフローまたはアンダーフロー。

ファイル システムおよびファイル システム フィルター ドライバーの場合、このような問題の多くのケースがあります。 たとえば、MAX_PATH 値は、Win32 サブシステムでは歴史的な理由から 260 として定義されます。 多くのドライバー コンポーネントは、これが最大パスのサイズを示していると仮定します。 これは残念ながら違います。NTFS ファイル システムの最大パスは 32,767 Unicode 文字 (65,534 バイト) です。 フィルター ドライバーが MAX_PATH の仮定の長さをコード ベースにエンコードした場合には、アプリケーションがそれよりも大きいパスを、フィルター ドライバーによって管理されるパス内に作成することで、単純なサービス拒否攻撃が発生します。

もう 1 つのよくある問題は、アプリケーションによってユーザーモード ポインターがプライベート FSCTL 要求にしばしば埋め込まれることです。 ファイル システムが影響を受けるのは、次の 3 つの広範なカテゴリのサービス拒否攻撃です。

  • 使用可能なすべてのディスク領域の消費。

  • 使用可能なすべてのディスク帯域幅の使用。

  • ユーザーがアクセスすべきファイルへのアクセスのブロック。

通常、ファイル システム開発者がこのような攻撃を防ぐためにできることはほとんどありません。 ただし、管理者がこのような種類のサービス拒否攻撃を制限できるようにするために、開発者が行うことができる手順があります。

ファイル システムに関連する最も単純なサービス拒否攻撃は、すべての空きディスク領域を使い果たすことです。 これを行うアプリケーションは簡単に記述でき、影響は広範囲に及びます。 システム内の多くのアプリケーションとサービスは、ディスクに書き込めなくなると機能しません。 緩和するためのテクノロジはディスク クォータです。管理者がこれを適切に使用すると、ユーザーが所有するファイルで使用できるディスク領域の容量を制限できます。 つまり、ファイル システムを開発するときにディスク クォータのサポートを含めるのが理にかなっています。

また、悪意のあるアプリケーションや適切に記述されていないアプリケーションは、すべてのディスク帯域幅を消費しようとする可能性があります。 この種の攻撃の通常のユーザーに対する影響は、システムが遅くなったり応答しなくなったりすることです。 現在、アプリケーションによって消費される帯域幅を抑えるメカニズムはオペレーティング システムにはありません。 ファイル システムは、開いている各ファイル オブジェクトとファイル ハンドルのためにカーネル メモリも消費します。 悪意のあるアプリケーションは、大量のファイルを開き続け、メモリが使い果たされるまで開いたままにしておこうとすることもあります。 これらの問題を緩和する主な手法は監査とログ記録です。これらによって、管理者が、大量の I/O を実行したり他の大量のリソースを使用したりするアプリケーションについてコンピューターを監視できるようになります。 ここでも、ファイル システムおよびファイル システム フィルター ドライバーによって監査サポートを含めるて、この種類のサービス拒否を最小限に抑えられるようにすることが賢明です。

悪意のあるアプリケーションは、他のユーザーが通常の使用に必要なファイルにアクセスできないようにする可能性があります。 このような問題を最小限に抑えるための重要な戦略は、ファイル システムの開発時に、ファイル オブジェクトに関連するセキュリティ情報が適切に実装されるようにすることです。

最後に、すべてのドライバーでは、悪意のあるアプリケーションまたは異常なアプリケーションからの要求に応じて、使用可能なすべてのメモリまたはその他のリソースを消費することについて考慮する必要があります。