目次クリックで該当箇所に移動します
OSやアプリケーション(以下、アプリ)といったソフトウェアには、しばしば脆弱性が存在します。中には重大な影響を及ぼすものもあり、最近では「Apache Log4j」の脆弱性が話題になりました。脆弱性は、修正パッチやアップデートの適用で解消できますが、その対応は困難です。この記事では、脆弱性管理と対応について説明します。
脆弱性とは?
脆弱性とは、ソフトウェアに意図せず作り込まれる不具合や設計ミスといったセキュリティ上の欠陥のことです。脆弱性には深刻な影響を及ぼすものもあり、悪用されるとシステムを乗っ取られたり、重要な情報が漏えいしたり、別の攻撃の踏み台にされる危険性があります。
OSやアプリの脆弱性が与える影響とは
OSやアプリの脆弱性は、開発を急ぐあまりチェックが十分でなかったり、アプリに組み込んだライブラリに脆弱性が存在していたり、アプリ開発のサプライチェーンがサイバー攻撃を受けて脆弱性を取り込んでしまうといった、複数の要因によって組み込まれます。
脆弱性を悪用する攻撃にはさまざまな種類がありますが、攻撃を受けてしまうと、結果として情報の漏えいやマルウェアの侵入、フィッシングサイトへの誘導、Webサイト・データベースの改ざんや削除、DDoS攻撃への加担など、さまざまな影響を受ける可能性があります。
脆弱性発覚時の情報収集と対応タイミング
脆弱性は、開発者が気づくケースや、第三者からの通報などによって発覚します。脆弱性が見つかると、開発者は修正パッチやアップデートをリリースし脆弱性を解消します。そうした情報は開発者のWebサイトで公開されるほか、脆弱性情報サイトでも公開されます。日本ではJVN(Japan Vulnerability Notes:経済産業省の外郭団体が運営する、脆弱性データベース)が有名です。
但しこうした情報はサイバー攻撃者も確認しており、深刻な脆弱性が公開されると、それを悪用するコード(エクスプロイトコード)を作成し、マルウェアなどに実装します。その時間は昔と比べ短縮されており、情報公開の翌日に攻撃されることもあるため、迅速な対応が求められます。
悪質な脆弱性攻撃と被害例
実際に、多くの被害をもたらした脆弱性を紹介します。
Apache Log4j
Log4jは、Apacheが提供するJavaベースのログ収集ライブラリです。2021年12月に、Log4jの脆弱性が公開されました。Log4jは、サーバーやスマートフォンアプリなど、非常に多くのデバイスに搭載されています。このLog4jに、外部から入力した命令文を実行してしまう脆弱性が発見されました。Webサイトやアプリの入力欄に文字列を入力するだけで実行されてしまうので、深刻な影響が広範にわたり発生する危険性がありました。命令文は何でも実行してしまうので、システムへの侵入や乗っ取りも可能でした。この脆弱性により重大な被害を受けたという報告はされていません(あるいは公表していない)が、脆弱性の公開直後は1時間あたりの攻撃数が数万件に及んだといいます。
OpenSSL Heartbleed
Heartbleedは、OpenSSLというオープンソースの暗号化ライブラリで、WebサーバーとWebブラウザの通信を暗号化する際の拡張機能(Heartbeat)に起因する脆弱性の名称です。2014年4月に、OpenSSLのバグが原因でメモリ上のデータが漏えいする脆弱性が見つかり、Heartbleedと命名されました。一度に取得できるデータ量は少ないものの、攻撃を繰り返すことで、例えばWebサイトへのログイン情報(IDとパスワード)や、クレジットカード情報を取得される可能性がありました。特に話題になったのは、この脆弱性が2年間にわたって放置されていたことでした。日本を含む世界中で情報漏えい被害が数多く起こりました。また、ある国内企業では、4年後の2018年に攻撃を受け被害が発生、3千件以上の個人情報が漏えいし、クレジットカードの不正利用による被害額は700万円弱に及びました。
EternalBlue
EternalBlueは、正確には脆弱性ではなく攻撃手法の名称です。2017年3月にマイクロソフト社がWindowsのSMBというファイル共有用のプロトコル(通信形式)に存在した脆弱性を公開しました。サイバー攻撃者EternalBlueという攻撃手法によってこの脆弱性を悪用、ランサムウェア「WannaCry」を世界中に拡散させ、ファイルを暗号化して使えなくし、復号するために“身代金”を要求したのです。ただし、マイクロソフト社が脆弱性とともに公開した修正パッチを適用していれば、脆弱性は解消できました。被害は世界中で発生しましたが、その多くはWindows 7など古いOSで、日本でもランサムウェアにより工場の停止や、店頭決済ができなくなるといった被害が相次ぎました。
修正パッチ適用の手順とその課題
正しい脆弱性対応
脆弱性は基本的に、修正パッチやアップデートを行うことで解消されます。しかし、修正パッチ適用にはアプリの再起動が必要になるなど、運用上の課題もあります。特にWebアプリは、Webサイトの運用管理やブログの管理など複数のアプリが存在し、ECサイトではこれらに加えショッピングカートシステムや会員の個人情報やポイント管理など、多くのアプリで構成されているため標的となっています。
修正パッチ適用の手順
修正パッチ適用の手順は脆弱性情報が公開され次第、自社で使用中のアプリが対象かを確認します。該当する場合は、脆弱性情報を参照し自社システムへの影響度を判断します。影響がある場合は、修正パッチ適用のスケジュールを立てます。
修正パッチ適用前には、本番環境ではなくテスト環境において該当アプリに修正パッチを適用して検証を行います。問題がなければ本番環境に適用し、アプリの動作やシステムへの影響を確認します。
脆弱性対応における課題
Webアプリの脆弱性対応には時間も手間もかかるため、重大な脆弱性であっても放置するケースも多く、攻撃に遭ってしまいます。年に数回のアップデート日を設定し、それまでに発生した脆弱性にまとめて対応するケースもありますが、この方法では脆弱な状態が一定期間続くことになります。
また、ライブラリのように階層が深く、複数のアプリに搭載されている場合は、その把握が困難です。アプリのアップデートを行っても、古いバージョンが削除されず残る場合もあります。アプリとバージョンの把握は大きな課題です。
現実的な脆弱性対策を行う
ビジネス上で使用するシステムやサイトにアプリが多く使われ、与える影響も大きい現在、脆弱性には早急に対処する必要があります。しかし、前述のように正攻法の脆弱性対応には時間も手間もかかるため、現実的な対応方法を紹介します。
自社で使用しているアプリを把握・管理する
脆弱性管理には、まず自社で使用中のアプリとそのバージョンを把握します。最近ではライブラリのバージョンや、脆弱性の有無を確認できる脆弱性管理ツールやサービスもあるので、これらを活用すると良いでしょう。
定期的な情報収集とチェックを行う
脆弱性情報サイトのチェックを習慣化します。また、脆弱性の有無を外部から検査する「脆弱性診断」や、実際にサイバー攻撃を模した攻撃を行って脆弱性を調べる「ペネトレーションテスト」などのサービスを定期的に実施する方法もあります。
WAFを導入する
多くの企業で導入が進んでいるのがWAF(Web Application Firewall)です。WAFは脆弱性を解消するのではなく、脆弱性を悪用しようとする通信を検知し、遮断することで保護します。クラウド型WAFは運用も容易なため導入が進んでいる一方で、コードを難読化して検知を回避する攻撃も確認されています。
まとめ
脆弱性は、企業の事業継続性に深刻な影響を与えるものもあり、そうした脆弱性はセキュリティの専門家や研究機関だけでなく、サイバー攻撃者にもメリットがあるため、同様に探し続けています。一方で、利用者側の立場としては脆弱性の管理には非常に多くの工数がかかり、脆弱性が発見されたとしても修正パッチやアップデートを適用することは困難です。
脆弱性対策には、自社が使用中のアプリのバージョンやライブラリも含めて細かく把握することと、WAFの仮想パッチで攻撃を回避することが現実的といえます。また、定期的な脆弱性診断やペネトレーションテストを実施し、脆弱性対策を行うためのスケジュールを確保するなど、脆弱性を残さない運用が重要です。