最近のランサムウェア攻撃「WannaCry」は、Windowsオペレーティングシステムの欠陥を悪用して、世界中の数十万台のコンピューターを乗っ取るほど急速に広がった。だが、それは具体的にどういう意味なのだろうか?
ハッカーを泥棒、悪意あるソフトウェアをその侵入道具と考えると分かりやすい。犯罪者集団によるサイバー犯罪やテクノロジー利用を10年以上研究してきた私は、どちらの厄介者も安全な場所、つまりコンピューターやネットワーク、家庭や企業に侵入する方法を見つけようとしていると知っている。侵入する手段はさまざまだ。
バールで窓やドアを壊して侵入する泥棒もいれば、より慎重に鍵をこじ開けたり、開いたままのドアから忍び込んだりする泥棒もいる。ハッカーも同じように行動するが、通常は窓やドアに頼る泥棒に比べ、侵入経路となり得る箇所が多い。
ハッカーが悪用する弱点は、割れた窓ガラスや錆びた蝶番ではない。コンピューター上で動作するソフトウェアプログラムの欠陥だ。プログラムは人間が書くため、本質的に不完全である。潜在的な攻撃者に侵入口を与えるエラーがまったくないソフトウェアを書くことは、誰にもできない。

こうした欠陥とは、具体的にどのようなものなのだろうか?
簡単に言えば、脆弱性とは、システムにおけるユーザー管理の方法の誤りや、コードのエラー、特定の要求への応答方法の欠陥などである。よくある脆弱性の一つは、「SQLインジェクション」と呼ばれる攻撃を可能にする。これは、キーワード検索などでデータベースに問い合わせるウェブサイトで機能する。攻撃者は、SQLと呼ばれるデータベース用プログラミング言語のコードを含む問い合わせを作成する。
サイトが適切に保護されていない場合、検索機能がSQLコマンドを実行し、攻撃者がデータベースにアクセスしたり、ウェブサイトを乗っ取ったりする可能性がある。
同様に、多くの人が、Javaプログラミング言語に対応したプログラムを利用している。Adobe Flash Playerや、さまざまなAndroidアプリケーションなどがその例だ。Javaプラットフォームには数多くの脆弱性があり、それぞれ異なる方法で悪用される可能性があるが、最も一般的なのは、利用者にソフトウェア用の「プラグイン」や「コーデック」をダウンロードさせる方法だ。こうしたプラグインには実際に悪意あるコードが含まれており、脆弱性を悪用してコンピューターを侵害する。
欠陥は至るところにある
あらゆる種類のソフトウェアに脆弱性が存在する。Microsoft Windowsオペレーティングシステムの複数のバージョンは、WannaCry攻撃に対して脆弱だった。例えば、人気のオープンソースウェブブラウザーFirefoxでは、2009年以降、毎年コード内で100件を超える脆弱性が特定されている。Microsoft Internet Explorerの各種ブラウザーでは、2017年初頭以降、15種類の脆弱性が特定されている。
ソフトウェア開発は完璧なプロセスではない。プログラマーは、妥当な目標を設定しようとする経営陣が定めたスケジュールに沿って作業することが多いが、期限を守るのは難しい場合もある。そのため開発者は、作業を進めながら安全な製品の設計に最善を尽くすものの、予定されている発売日までにすべての欠陥を見つけられるとは限らない。遅延には大きなコストがかかることもあるため、多くの企業はまず製品の初期版を発売し、その後、問題を発見したとき(またはユーザーや研究者から報告を受けたとき)に、穴をふさぐことから「パッチ」とも呼ばれるセキュリティ更新プログラムを公開して修正する。
しかし、ソフトウェア企業が製品を永遠にサポートすることはできない。事業を続けるには、プログラムを改良し、更新版を販売し続けなければならない。そのため、ある程度の期間が過ぎると、古いプログラム向けのパッチ提供を停止する。
とはいえ、すべての顧客が最新ソフトウェアを購入するわけではない。そのため、パッチが適用されていない欠陥があるかもしれない古いプログラムを使い続けるユーザーは多い。新しいバージョンに同じ欠陥がなくても、攻撃者が古いソフトウェアの弱点を見つける機会となる。
弱点の悪用
攻撃者は脆弱性を特定すると、その隙を利用してコンピューターに侵入し、乗っ取る新たなプログラムを作成できる。この点で、エクスプロイトは、泥棒がバールやピッキング道具などを使って建物に侵入する方法に似ている。
攻撃者はシステムの防御にある弱点を探す。例えば、適切に保護されていないネットワーク接続だ。攻撃者が標的のコンピューターとの接続に成功すれば、どのようなシステムなのかを調べられる。それによって、特定のファイルへのアクセスや、特定のプログラムの実行など、コンピューターとそのデータをさらに掌握できる手段を見つけられる。近年、攻撃者はウェブブラウザーを標的にし始めた。ブラウザーはインターネットへの接続が認められており、小さなプログラムを実行することも多く、悪用可能な脆弱性が数多くある。こうした最初の侵入口から攻撃者が標的のコンピューターを掌握し、さらに大規模で機密性の高いネットワークへの侵入拠点として利用する可能性がある。
脆弱性は、ソフトウェア開発者自身や、修正が必要だと企業に知らせるユーザーや研究者が発見することもある。一方で、ハッカーや政府の諜報機関がシステムへの侵入方法を突き止めても、企業に知らせない場合もある。開発者が修正する時間をまったく得ていないため、こうした弱点は「ゼロデイ」と呼ばれる。その結果、パッチや修正プログラムを作成してユーザーに配布するまで、ソフトウェアやハードウェアは侵害された状態に置かれる。
ユーザーが自分を守る最善の方法は、ソフトウェアの更新プログラムを定期的にインストールすることだ。更新プログラムが利用可能になったら、すぐに適用しよう。

