ギリシャ古典の『イーリアス』に登場するアキレスの弱点(脆弱性)がかかとなら、パリスの毒矢がエクスプロイトです。エクスプロイトとはまさに文字通り、あらゆるハードウェアやソフトウェアシステムに存在する脆弱性を突くために攻撃者が用いるデバイスや(多くの場合)手法のことです。
脆弱性とは弱点であり、製品開発サイクルでプログラマーのケアレスミスから生まれたバグという場合もあれば、製品が出荷されてから「バックドア」アクセスを可能にするために意図的に取り込まれる場合もあります。多くの(おそらくほとんどの)脆弱性は、イノベーションの避けられない副作用だと言えます。
基本的に、ハッカーのツールが進化し、彼らが多くを学習するにつれて、そしてコンピューターが強力になるにつれて、以前は安全だと考えられていた慣行が時代遅れになっていくものです。
昔ながらのセキュリティのようなものだと考えてみてください。火薬が発明されるまで、城は鉄壁の防御でした。堀を作ってワニを入れておき(昔は泳げる人があまりいなかったのでワニは少し余計かもしれませんが)、敵が攻めてきたときは跳ね橋を上げれば、王国は安泰です。その後火薬が発明されると、さまざまな技術に派生していきました。今では城壁の内側に簡単に巡航ミサイルを撃ち込めます。跳ね橋や石垣、堀など、ほとんど役に立ちません。
重要なことですが、こうしたすべての脆弱性のうち、危険なものや悪意ある人物にとって有用なものは、ほんの一握りだけです。脆弱性の多くは、クラッシュや再起動など、ユーザーを苛立たせる程度でしかありません。その一方で、危険な脆弱性も無数に存在しますが、エクスプロイトがほぼ不可能なものや、費用がかかり過ぎるものが大半です。多くの攻撃者にとって実際の価値がある脆弱性は限られています。悪質コードを実行するためのリモートコード実行や、攻撃者がユーザーや管理者と同じ権限を得る権限昇格などが可能となる脆弱性くらいです。
脆弱性は絶えず存在します。私は使っているすべてのものに可能な限り早くパッチをインストールするようにしています。にもかかわらず、今この記事を書くのに使っているのは、ぜい弱なMicrosoft Wordであり、それを動かすのはぜい弱なWindowsマシンです。また、ぜい弱なブラウザーでタブをたくさん開いています。脆弱性とは常に存在するものであり、誰かがそれを悪用するためのエクスプロイトを発見して開発するかどうかという問題なのです。
コンピューターという文脈で考えるとき、「脆弱性」も「エクスプロイト」も、広義の意味とまったく違いはありません。複雑なのは、いかにして特定の脆弱性が存在するに至ったか、攻撃者がそれをエクスプロイトして実際に何をするのかを説明する部分です。
フィッシング攻撃における脆弱性とエクスプロイトは単純です。脆弱性は人間のだまされやすさ(あるいは純粋さへと向かう傾向)であり、エクスプロイトは言葉巧みなメールです。
事実として、脆弱性は、既知であるか未知であるかを問わず常に存在し、これからも存在し続けるでしょう。一番頼りになる対策はシンプルです。サバンナで最弱のガゼルにはならないでください。更新をインストールして、強力なアンチウイルス製品を使用しましょう。公衆Wi-Fiは使わないでください。怪しいメールを開いてはいけません。そして一般に、賢明なWeb閲覧を心がけましょう。