エクスプロイトとは|脆弱性を攻撃に利用する手法

当ページは検証・整備中のドラフトです。
内容は実環境での検証や追加調査により変更される予定です。
参照:ページ公開・更新ポリシー

エクスプロイト(Exploit)とは、ソフトウェアやシステムの脆弱性を利用し、本来許可されていない動作を引き起こす手法やコードを指す。

脆弱性そのものではなく、脆弱性を実際に利用する側に位置する。

脆弱性が「弱点」であれば、エクスプロイトは「弱点を利用する手段」と考えればよい。

エクスプロイトはどのように脆弱性を利用するのか

エクスプロイトは、脆弱性が生じる条件を利用して、システムへ意図しない処理を行わせる。

脆弱性
  ↓
エクスプロイトによる悪用
  ↓
本来許可されていない動作

悪用される脆弱性によって、引き起こされる動作も異なる。

代表的なものには次がある。

  • 任意のコードを実行する
  • 本来より高い権限を取得する
  • 認証を回避する
  • 情報を取得する
  • サービスを停止させる

エクスプロイトは攻撃の最終目的とは限らない。脆弱性を利用して侵入やコード実行を可能にし、その後の攻撃につなげる手段としても使われる。

脆弱性があれば必ずエクスプロイトできるのか

脆弱性が存在しても、必ず悪用できるわけではない。

エクスプロイトの成立には、特定のOSやソフトウェアのバージョン、設定、権限、通信経路などの条件が必要になることがある。また、脆弱性のある機能へ攻撃者が到達できなければ、その経路からの悪用は成立しない。

そのため、脆弱性の存在と、実際に悪用できる状態かどうかは分けて考える必要がある。

エクスプロイトコードとは

エクスプロイトをプログラムとして実装したものを、エクスプロイトコードと呼ぶ。

脆弱性情報だけでは、攻撃者自身が悪用方法を調査し、実装する必要がある。一方、動作するエクスプロイトコードが利用できれば、その工程の一部を省ける。

このため、脆弱性への対応を判断するときは、脆弱性の深刻度だけでなく、利用可能なエクスプロイトが存在するか、実際の攻撃で悪用されているかも判断材料となる。

PoCとエクスプロイトは何が違うのか

PoC(Proof of Concept)は、脆弱性などが実際に成立することを実証するためのコードや手順を指す。

例えば、発見した脆弱性について、特定の条件で意図しない処理を実行できることを確認するためにPoCが作成される。

一方、エクスプロイトは脆弱性を実際に利用する手法やコードを指す。

両者の境界は明確とは限らない。検証目的で作成されたPoCでも、そのまま、または改変することで攻撃に利用できることがある。

エクスプロイトとマルウェアは何が違うのか

エクスプロイトとマルウェアは、攻撃の中で異なる役割を持つ。

エクスプロイトは脆弱性を利用する手段であり、マルウェアは悪意ある動作を行うソフトウェアである。

両者は組み合わせて使われることがある。

脆弱性
  ↓
エクスプロイトによる悪用
  ↓
侵入・コード実行
  ↓
マルウェアを実行

ただし、すべてのエクスプロイトがマルウェアの実行を目的とするわけではなく、マルウェアも必ず脆弱性を悪用して侵入するわけではない。

エクスプロイトキットとは

エクスプロイトキットは、脆弱性の悪用を効率化・自動化するために、複数のエクスプロイトなどをまとめた仕組みである。

攻撃対象の環境を確認し、利用できる脆弱性に応じて攻撃を試みるものもある。

個別の脆弱性を悪用するエクスプロイトに対し、エクスプロイトキットはそれらを攻撃へ利用しやすくまとめたものと考えればよい。

エクスプロイトが公開されると何が変わるのか

脆弱性の技術情報やエクスプロイトコードが公開されることがある。

エクスプロイトコードが利用可能になると、攻撃者が悪用方法を一から開発する必要がなくなり、脆弱性を攻撃へ転用するハードルが下がる。

脆弱性が判明
    ↓
エクスプロイトが利用可能になる
    ↓
悪用方法を再現しやすくなる
    ↓
攻撃へ転用

一方、公開されたエクスプロイトコードは脆弱性の検証や防御技術の開発にも利用される。そのため、エクスプロイトコードの存在自体が悪意を意味するわけではない。

利用者側では、エクスプロイトの存在や実際の悪用状況も含めて対応の優先度を判断する。

エクスプロイトにはどのように備えるのか

エクスプロイトへの基本的な対策は、悪用される脆弱性と攻撃経路を減らすことである。

  • セキュリティ更新を適用する
  • サポート終了製品を使い続けない
  • 不要なサービスを外部へ公開しない
  • 必要な通信やアクセスだけを許可する

修正版が提供されている脆弱性であれば、更新によってエクスプロイトが成立する条件を取り除ける。

修正がまだ提供されていない場合は、影響する機能の停止やアクセス制限などによって悪用経路を減らす。

関連する用語との違い

用語意味
脆弱性セキュリティ上の弱点
エクスプロイト脆弱性を利用する手法やコード
エクスプロイトコードエクスプロイトをプログラムとして実装したもの
PoC脆弱性などが成立することを実証するコードや手順
マルウェア悪意ある動作を行うソフトウェア
エクスプロイトキット脆弱性の悪用を効率化・自動化する仕組み

これらは別の概念だが、実際の攻撃では組み合わせて利用される。

まとめ

エクスプロイトは、ソフトウェアやシステムの脆弱性を利用し、本来許可されていない動作を引き起こす手法やコードである。

脆弱性そのものやマルウェアとは異なり、脆弱性を実際の攻撃へつなげる手段に位置する。

脆弱性への対応では、その深刻度だけでなく、利用可能なエクスプロイトの存在や実際の悪用状況も判断材料となる。