2017年5月にランサム(身代金)ウエア「WannaCry(ワナクライ)」に世界150カ国が泣かされた。Windowsのファイル共有で使われる、SMB(サーバー・メッセージ・ブロック)v1の脆弱性を悪用したランサムウエアだ。

WannaCryに感染した場合に表示される画面の一例
WannaCryに感染した場合に表示される画面の一例
(出所:情報処理推進機構)
[画像のクリックで拡大表示]

 この脆弱性はSMBのポート経由で任意のコードが実行されてしまうという、極めて緊急性の高い脆弱性だった。米マイクロソフトはパッチを2017年3月に公開していたが、いくつかの企業がWannaCryに感染、被害が広がった。

 報道を受け、WannaCryに感染していないか、もしくは、感染する可能性がないかの確認に奔走したシステム担当者も少なくないだろう。しかし、どこかで事件が起きてから調査をしていたのでは間に合わない場合もある。

 特にOSやソフトウエアの脆弱性は日々発見されていて、脆弱性が発見・報告されていることにシステム担当者が気付いていないケースもある。システムのセキュリティレベルを維持するためには、日ごろからのチェックが大切だ。

 とはいえ少ないリソースでチェックを続けるのは難しいケースも多いだろう。そんな場合にも有効なのが「セキュリティ診断」である。

 セキュリティ診断はシステム担当者が気付いていない脆弱性や対策しているつもりでもできていない脆弱性の有無を調査できる。WannaCryももし事前にセキュリティ診断を受けていたら、そもそも外部にSMBのポートが公開されていることやパッチが適用されていないことに気付き、感染を防げていたかもしれない。

 以下、セキュリティ診断の種類と活用方法を説明していく。

フレームワークの脆弱性は「サーバー診断」で

 セキュリティ診断と一口に言っても、その種類は様々だ。診断対象やその目的によって適切に選ぶことが大切だ。

 対象で分けてみよう。Webサーバーを診断する場合、HTTPサービスを稼働させているソフトウエアやOSが調査対象であれば、それらの既知の脆弱性や設定の不備を調査する「サーバー診断」が適している。HTTPサービス上で稼働するWebアプリケーションが対象なら、クロスサイトスクリプティング(XSS)やSQLインジェクションなど、コーディング時の設計不備などで作り込まれてた脆弱性を見つける「Webアプリケーション診断」を実施する。

 注意したいのは、「Apache Struts」などのWebアプリケーションフレームワークの脆弱性はWebアプリケーション診断ではなく、サーバー診断の調査対象であることだ。最近需要が増えているのはスマートフォンのアプリを対象とした、スマートフォンアプリ診断である。