現在、多くのパソコン利用者は、パソコンにインストールして利用する「ネイティブアプリ」とブラウザから利用する「Webアプリ (SaaS)」を併用しています。ネイティブアプリの代表例は、Microsoft Officeやウイルス対策ソフト、Adobe Photoshopなどが有名です。そして、Webアプリの代表例は、GmailやGoogleカレンダーといった多くのGoogle製品、またChatworkやSlackなどのチャットツールを思い浮かべる方も多いと思います。

しかし、これらのアプリケーションが「安全」であることを前提に利用していませんか。本ブログでは、使用している「ネイティブアプリ」が本当に危険ではないことを確認する方法と自社の「Webアプリ」を攻撃から守る方法についてお伝えします。

アプリケーションのインストーラーが改ざんされるリスク

例えば、企業に勤めるAさんが、業務で利用するアプリケーションをパソコンにインストールしようとしています。このアプリケーションは、BCD株式会社が開発した「BCDビジネスアプリ」という製品です。多くの方は、BCD株式会社のサービスサイトや、BCD株式会社からメールで送られてきたリンクをクリックして、ダウンロード、インストールしているので、安全性には問題ないと思っているかと思いますが、実は以下のようなリスクがあります。

  • ①開発元のホームページやインストーラーが不正アクセスによりすり替えられ。ダウンロードしたアプリケーションに悪意のあるプログラムが混入している
  • ②開発元とそっくりの偽サイト・偽リンクからインストーラーをダウンロードしてしまい、その中に悪意のあるプログラムが混入している

まず①ですが、開発元企業の公式サイトやリンク先のアプリケーションファイルに対する、ハッカーの不正アクセスが成功すると、サイト上のアプリケーションのダウンロードリンクを変更したり、その先にあるアプリケーションのインストーラーファイル自体を差し替えることができます。何も知らずにやってきたユーザは、悪意のあるアプリケーションをダウンロードしてしまいます。

次に②ですが、開発元のサイトにそっくりなサイトを作成し、「システムのアップデートが必要です。こちらをインストールしてください」といった偽メール文面を送り、ユーザを偽サイトへアクセスさせ、インストーラーのダウンロードリンクを直接クリックさせます。これに気づかないユーザは、悪意のあるアプリケーションをダウンロードしてしまいます。

①②共に、生じる結果は同じです。ユーザは、悪意のあるプログラムが混入したアプリケーションをインストールして、パソコン上やクラウド上にある企業機密や個人情報、取引先の情報に不正アクセスされ、金銭面や信用面での損害が生じます。

正しい開発元を証明する「コードサイニング証明書」

悪意のあるプログラムを誤ってインストールしてしまうことを防ぐため、Windows 8以降では、「Windows Defender SmartScreen」という仕組みがOSに搭載されています。これは、インストールしようとしているアプリケーションが、世界中から収集した危険なサイト、アプリケーションのリストを基にスクリーニングを掛けた上で、署名された証明書の種類に応じてインストールすべきかどうかの表示を行います。

「コードサイニング証明書」のコードは、プログラムコードを指し、サイニングは署名(電子署名)を指します。よって、プログラムコードが正しいものであることを示す署名が「コードサイニング」であり、それをPKIで実現したテクノロジーです。 では、なぜコードサイニング証明書が必要なのでしょうか。端的にいうと、「ユーザがアプリケーションをインストールする際に、正しい開発元であることを証明することで、安全にインストール・利用してもらうため」です。あなたが今ダウンロードしたアプリケーションのインストーラーの開発元は、どこの組織または個人で、改ざんがされていないファイルだということを、コードサイニング証明書により証明することができます。

具体的には、インストーラーをダブルクリックしてインストールを進めようとすると、コードサイニング証明書があれば「確認済みの発行元」として開発元の名前が表示され、そのままインストールを継続できます。 しかし、確認されない場合は「PCに問題が起こる可能性がある」という警告・ブロックメッセージを表示され、インストールは継続されません。

「PCに問題が起こる可能性がある」という警告・ブロックメッセージ

Webアプリでもコードサイニング証明書は必要か?

クラウドで利用するWebアプリ (SaaS) もネイティブアプリと同様にコードサイニング証明書が必要なのか。結論から言うと、コードサイニング証明書は不要ですが、ウェブサイトの常時SSL化は必須となります。SaaSの場合は、ブラウザを利用して開発元のサーバにアクセスして利用するため、ユーザが自身のパソコンにアプリケーションをインストールする必要がありません。Webアプリ (SaaS) は全て、開発元のサーバ上で稼働し、保守がなされているためです。よって、開発元が正しく運用している限りは悪意のあるプログラムが混入することはありません。

しかし、1点リスクがあります。それは、Webアプリの全ての通信が暗号化されていないと、通信内容が盗聴されるリスクがあるということです。Webアプリを利用する、ということは、アプリ上の様々な画面で機密情報や個人情報の「表示」と「更新」が発生することを意味します。このため、常時SSLに対応していないサービスの場合、SSLで保護されていないページ上で処理した際、物理的に情報が盗聴される可能があります。 これを防ぐためには、一部ページだけではなく、全てのページを暗号化通信にする常時SSL化を行い、サイト全体を保護する必要があります。これを行うために必要なのは、「SSLサーバ証明書」となります。

トピック関連記事

#

2015年05月11日

スマートスクリーンにブロックされないEVコードサイニング証明書で安心と信頼を獲得

#

2015年06月22日

高まるコードサイニング証明書の重要性

#

2014年01月10日

モジラ:ルート証明書へのトラストビット設定について

この記事を書きました

グローバルサインブログ編集部

グローバルサインカレッジ編集部
所属:GMOグローバルサイン マーケティング部
当サイトの運営・管理を担当。