web-dev-qa-db-ja.com

攻撃ベクトル、攻撃面、脆弱性、エクスプロイト:違いはどこにありますか?

攻撃ベクトル/攻撃面/脆弱性とエクスプロイトの違いを正確に特定することが困難です。

脆弱性とエクスプロイトの違いは次のとおりだと思います。脆弱性とは、害を及ぼすために使用される可能性があるものです(例:バッファオーバーフロー)。エクスプロイトは「生産的」な方法で脆弱性を利用します(たとえば、エラーメッセージをトリガーした後にメモリ内の次のバイトを読み取る)。

Wikipedia(vulnerability) によると

脆弱性を悪用するには、攻撃者はシステムの脆弱性に接続できる適切なツールまたは手法を少なくとも1つ持っている必要があります。このフレームでは、脆弱性は攻撃面とも呼ばれます。

したがって、攻撃面と脆弱性は、ITセキュリティのコンテキストでは同義語のように見えます(?)

誰かが単語を定義したり、それらの違いの例を挙げたりできますか?

22
Martin Thoma

4つの用語はすべて大きく異なります。

攻撃について説明します:

  • 攻撃ベクトル:攻撃が実行された「ルート」。 SQLiは通常、ブラウザクライアントを使用してWebアプリケーションに実行されます。 Webアプリケーションは攻撃ベクトルです(おそらくインターネット、クライアントアプリケーションなどもそうです。それはあなたの焦点によって異なります)。
  • Exploit:脆弱性を利用する方法。サニタイズされていないユーザー入力を利用するためにSQLコマンドをWebアプリケーションに送信するために使用されるコードは「エクスプロイト」です。

ターゲットについて説明します:

  • 攻撃面:攻撃に対する露出度を示します。ブロックされるポートの数を制限するファイアウォールがなければ、「攻撃対象」はすべてのポートになります。ポート80を除くすべてのポートをブロックすると、「攻撃面」が1つのポートに減少します。
  • 脆弱性:リスクを露呈する弱点。未承認のユーザー入力は、SQLiメソッドによって「脆弱性」をもたらす可能性があります。

これをターゲットとしてのユーザーの視点から見ることもできます。攻撃者は感染したPDFを電子メールの添付ファイルとしてユーザーに送信します。ユーザーはPDFを開いて感染し、マルウェアがインストールされます。「攻撃ベクトル」は電子メールで、「エクスプロイト」はPDFのコード、「脆弱性」はコードの実行を許可したPDFビューアの弱点、「攻撃面」はユーザーと電子メールシステムです。

26
schroeder

これは私の知る限りでは当てはまりますが、一部の表現はわずかに改善されている可能性があります。

  • 攻撃ベクトルは、攻撃の「タイプ」であり、攻撃者が成功するために必要なものです。
  • 攻撃面は、攻撃可能なエンドポイントの数です。たとえば、スクリプト言語(PHP/Node ...)とデータベース(MySql/Postgre ...)を使用してWebサイトをターゲットにしている場合、攻撃面は大きくなります。動的コンテンツもデータベースもない単一の静的ページをターゲットにしている場合よりも。
  • 脆弱性とは、システムの意図された動作を変更するために使用されるシステムの弱点であり、メモリダンプを許可したり、ユーザーのなりすましを許可したりすることがあります...
  • そしてエクスプロイトは攻撃を続けるために使用されるツールです。
2
Purefan

私の理解に基づいて、簡単なWebアプリケーションをテスト環境と見なすと、それらの関係は次のようになります。

攻撃面は、システム/ウェブのコンポーネント/パーツを特定するために使用され、脆弱性を含む可能性があります(例:ウェブアプリケーション認証機能)

脆弱性評価は、脆弱性を見つけるために、攻撃面のステップで見つかった識別されたコンポーネント/パーツ(認証)に適用されます(例:入力検証なし)

攻撃ベクトル(攻撃のタイプ)は、SQLI、XSS、FIなどの特定された脆弱性(入力検証なし)に基づいて、実行可能な攻撃を特定することを指します。

悪用とは、被害者のマシン上のデータまたはシステムにアクセスするために、特定された脆弱性(入力検証なし)に対して攻撃(SQLI攻撃、XSS攻撃、FI攻撃など)を開始することを指します。

1