IT部門管理職に向けて、国際的ガイドラインであるCISコントロールに基づいた資産管理と対策方法について紹介する連載。過去の記事一覧はこちら。
4.1. ソフトウェアやサービスの安全な利用について
4.1.1. 買ったばかりの製品は安全ではない
OOTBという単語をご存知でしょうか。これはOut-of-the-Boxの略語で、購入して箱から出したばかりの状態でいきなり利用できるITシステムのことを指す言葉です。OOBと略されることもあります。こういう状態は「デフォルト設定」ということもありますし、アイスクリームの標準的な味がバニラ味であることから「バニラ」と呼ぶこともあります。
家電製品と異なり、ITソフトウェアやシステムは標準機能に対して何らかのカスタマイズが加えられるようにできていますが、サービスやソフトウェアによっては、可能な限りOOTBを尊重し、カスタマイズを避けることが推奨されている場合もあります。導入後に迅速に役立てられた方がいいということでしょうが、このようなOOTBをそのまま利用することは、セキュリティ上の問題につながることもあります。
脆弱性を減らすために欠陥が修正された最新版にアップデートすることはもはや常識となってきましたが、それ以外にもシステムやソフトウェア、サービスなどの状態や設定をしらべ、不要なプログラムや機能を使うことを避けたり、通信可能な相手先やアクセス権限を最小限に抑えたり、設定を変更して問題が起きないようにすべき場合もあります。たとえOOTBであっても、これらのカスタマイズをすべきケースも多々あります。このようなセキュリティを高める作業は、まとめてハードニングと呼ばれます。
CISコントロールの4番目は「組織の資産とソフトウェアの安全な構成」なのですが、ここで求められていることはハードニングに関連するものが多いため、一緒に理解していきましょう。
4.1.2. 今回扱うハードニングとアタックサーフェス
ハードニングはITに関わる様々なツールやベストプラクティスのことですが、安全な構成を取るためには何が必要でしょうか。 ここで必要なのが、アタックサーフェス(攻撃対象領域)という考え方です。アタックサーフェスというのは、サイバー攻撃における侵入経路のことです。攻撃者の目的はランサムウェアをパソコンで実行させたりやデータを奪ったりしないなど様々ですが、まずどこから入ろうとするかを考えると、その切り口は限られたものになります。
たとえばアプリケーションに脆弱性を悪用するとか、リモートデスクトップ接続に使われる3389番のTCPポートを使っているパソコンを悪用して侵入するなど、いくつかのメジャーなパターンがあります。アタックサーフェスが広いと様々なパターンで攻撃される、逆にそのパターンが通用しないように最新版にアップデートされていたり、サービスを適切に設定されていたりするのであれば、攻撃を受ける可能性が減ります。
Webサイトのソースコードの書き間違え、サーバーの設定ミス、通信に利用している証明書の失効、危険性のあるSHA-1ハッシュアルゴリズムの利用などは、いずれもアタックサーフェスを広げる行為です。
最近はリモートワークの推進に伴い、クラウドやIoT、VPNやRDPなどの技術が活用されていますが、これらを使うと攻撃のパターンも増えます。つまり、近年はアタックサーフェスが拡大しているのです。そこで、ハードニングによって、アタックサーフェスを可能な限り小さくする活動が重要になるのです。
ハードニングのツールやテクニックは多種多様で、ソフトウェアの種類によっても異なります。初期導入から設定、保守、サポート、そして使用終了後の廃棄に至るまで、テクノロジーのライフサイクル全体を通じてさまざまな場面で必要になります。 次の図はアタックサーフェスに相当するものと、それらに対する代表的なハードニングを示しています。
PCI DSSやHIPAA など、ITシステムに関連する認証を取る際にもハードニングは義務化されており、サイバー保険会社からの要求も高まっています。最近ではハードニングコンテストなども開催されており、そこではセキュリティに従事するエンジニアが様々な環境下で限られた時間内にアタックサーフェスを削減し、攻撃に対応するためのスキルを競っています。
4.1.3. ハードニングにおける基本はいらないものを使わないこと
アタックサーフェスを減らすための第一歩は、ファームウェア、OS、アプリ、サービスなどの最新版へのアップデートです。最新版のデータは脆弱性を解決ができている事が多く、被害を受ける可能性が減るので、最もメジャーなハードニングだといえます。 ですが、ゼロデイ脅威のように、アップデートをやっていれば、それで常に脆弱性対策になるというわけではありません。またアップデートを実施するときにシステムを停止できない状況であれば、すぐには実現できないこともあります。
ここで、別の角度から考えてみましょう。たとえばアプリに脆弱性があり、そのパッチを当てるのが遅れそう、または無理そう、というならアンインストールしてしまうという方法もあります。そうすれば、そのアプリの脆弱性を悪用されることはありません。 「いやいや、アプリは必要だから入れるんですよ。使ってるに決まってるでしょう」という反論がくるかもしれません。もちろん実際にそうであれば、このアドバイスは見当違いです。ですが実際には、不要なアプリが業務用のスマホやパソコンに入っていたり、クラウドに立てた検証用の仮想サーバーに利用していないアプリが入っていたりすることは珍しくないのです。それらのアップデートはすでに提供されておらず、危険な状態になっているかもしれません。そういうものを見つけて削除することもハードニングなのです。
あるいは、業務でアプリを使っているが、そのアプリを動かすOSで、不要なサービスが動いている、ということも考えられます。攻撃者がなんらかの方法でOSにログインできてしまったときに、「おっ、このサービスを使えば機密情報が入っているサーバーへ簡単にアクセスできるぞ」と大喜びで使うことでしょう。これを停止することもハードニングになります。