web-dev-qa-db-ja.com

トリガー可能なサーバーソフトウェアがDOS攻撃をクラッシュさせると考えることは理にかなっていますか?

Node.jsサーバーで実行されているWebアプリケーションに小さな脆弱性が見つかりました。

これは、巧妙に細工されたペイロードをアプリケーションサーバーに送信することで機能します。これにより、アプリケーションサーバーのコードでエラーが発生し、エラー処理が行われないため、クラッシュします(誰かが再度実行するまで)。

この種の攻撃に適切な名前は何なのかわかりません。 DOS(Denial Of Service)攻撃だと思います。サーバーDeny Servingそのクライアント。一方、今までは、サーバーが何らかの方法でフラッディングするDOS攻撃についてしか聞いたことがありません(そうではありません)。ここに)。

では、DOS攻撃と考えるのは正しいのでしょうか。答えが「いいえ」の場合、どのように呼び出す必要がありますか?

57
Matías

はい。正当なユーザーによるサービスの通常の使用を拒否することを目的とする攻撃は、すべてDoS(サービス拒否)です。

137
DarkMatter

DDoS(分散型DoS)は、(利用可能なすべての定義で)DoSを作成するフラッドによって特徴付けられます。単一ノードがフラッディングを正常に引き起こすことは、まれです。

しかし、DoSはさまざまなトリガーによって引き起こされる可能性があります。

CVSSには、DoSとして分類されたソフトウェアクラッシュの例もあります:

RPCコマンドのハンドラー機能に欠陥があるため、仮想マシン実行可能(VMX)プロセス内でデータポインターを操作することが可能です。この脆弱性により、ゲスト仮想マシンのユーザーがVMXプロセスをcrashしてDenial of Service(DoS)ホストで実行するか、ホストでコードを実行する可能性があります。 [エンパシス鉱山]

そしてWikiから

サービス拒否攻撃は、サービスの正規の使用を防ぐための攻撃者による明示的な試みが特徴です。 DoS攻撃には2つの一般的な形式があります。サービスをクラッシュさせるものとサービスをフラッディングするものです。最も深刻な攻撃が分散されます。

したがって、はい、単純なクラッシュはDoSです。

60
schroeder

多くの場合、セキュリティは3つのプロパティを提供するものと見なされます。

  • 可用性
  • 誠実さ
  • 守秘義務

あなたのケースでは、ユーザーがサービスの可用性に影響を与えることができる何かを見つけました。サービスの提供内容によっては、煩わしい場合もあれば、壊滅的な場合もあります。

かなり頻繁に失敗したサービスは自動的に再開されます。これらは時々発生するクラッシュを軽減できますが、サービスの再起動は通常、接続を処理するための通常のコストよりもはるかに高価です。この場合、「サーバーのクラッシュ」リクエストを1秒間に5〜6回実行しても、帯域幅はそれほど大きくない可能性がありますが、平均的なサーバーではまだかなり粗いでしょう。

10
sarnold

他の回答では明示的に述べられていない重要な詳細をもう1つ追加したかったのです。あなたはこれを言った:

これは、サーバーに巧妙に細工されたペイロードを送信することで機能します。これにより、サーバーコードでエラーがスローされ、エラー処理が行われないため、クラッシュします(誰かが再度実行するまで)。

(私の強調)。このようなサービスがクラッシュに対応する方法はテクノロジーセットによって大きく異なるため、この警告は重要です。

DoSではない

たとえばPHPまたはほとんどのcgi実装では、クラッシュした1つのリクエストは他のリクエストにまったく影響を与えません。サーバーはクラッシュしたリクエストに対する適切な応答を送信できませんが、正当なユーザーは引き続きサーバーによって適切に処理されます。この場合、クラッシュは自分だけに影響し、他のユーザーには影響しません。そのため、DoS攻撃であると見なすことは困難です。確かにバグがあり、自分のサービスを拒否しています。しかし、サーバーが他のすべてのユーザーに対して通常どおりに動作し続ける場合、実際にはサービス拒否は発生しません。

A DoS

ただし、ペイロードによって実際のサービスが停止し、サービスを復元するための何らかのアクション(管理者によるものか、短時間での自動復元によるものか)が実行されるまで、サーバーはこれ以上リクエストを受信できない場合は、確実に(他の回答で説明されているように)発生したクラッシュによってサービスが正当なユーザーに応答しなくなったため、サービス拒否。

状況によっては、サーバーをダウンさせない「DoS攻撃ではない」攻撃は、正当なユーザーをだまして悪意のあるペイロードを含むURLにアクセスさせることができる場合、実際のDoS攻撃に昇格する可能性があります。ほとんどの場合、このような攻撃は実際にはあまり影響を与えません。なぜなら、サービスが後で正常に使用されたときにサービスは正常に動作し続けるためです。ただし、ペイロードがセッションに永続化されてユーザーを永久にロックアウトするというまれな状況が発生する可能性があります(以前に実際にそのような状況を誤ってトリガーするのを見てきました)。

あなたの説明から、あなたの特定のペイロードがこれらのカテゴリーのどれに該当するかを知るのは難しいですが、作られるべき重要な区別があります。

9
Conor Mancone

あなたの攻撃は基本的にDOSの定義であり、それは文字通りサービスを拒否し、あなたはこの用語を正しく使用しています。

帯域幅の消費は、サーバーに特定の脆弱性があることを必要としない素朴なアプローチですが、確かに唯一のものではありません。

Apacheに関する実際のCVEは、その用語を使用して同様のDOS攻撃(segfaultでクラッシュ)を説明しています。

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8011

さらに複雑な攻撃は、時には些細なDOS攻撃であり、そのラベルも付けられます。シェルキットなしでスタックがリモートコードexecバグを破壊する場合でも、不正な値でスタックが破壊され、segfaultが発生します。

4
trognanders

はい、これはDOSの脆弱性と呼ばれる可能性があります。これを「アプリケーションDOSアタック」と呼んでいます。

別の例:アップロードされたファイルに対してウイルススキャナーを実行するサイト。誰かが100,000個のゼロビットの2GBファイルを含む100,000個のZipファイルのZipファイルをアップロードします。使用可能なすべてのメモリを使用して開いてスキャンする超小型のZipファイル。

正当なユーザーがリソース[CPU、Ram、ディスク、ネットワーク帯域幅(パスワードのリセット?)]を利用することを拒否している場合は、DOS攻撃と呼ぶことができます。

ただし、攻撃によってアプリケーションの状態が破損するだけの場合(たとえば、権限のないユーザーがアプリを読み取り専用モードに設定できるようにする場合)、アプリケーション(またはセキュリティ)の脆弱性と呼ぶ傾向があるかもしれません。

1
DarcyThomas