山田祥平のRe:config.sys
今見ているWebは本物か
(2015/2/27 06:00)
LenovoのPCにセキュリティ上問題のあるソフトウェア「Superfish」がプリインストールされていたことが発覚して世の中を騒がせたのは記憶に新しい。見つかった脆弱性は早急に対策が必要だが、重要な問題はその背景だ。セキュリティの根源をくつがえす問題が、そこにあるからだ。
セキュアな通信には誰も介入できないのが原則
Lenovoが2014年9月から12月にかけて出荷した個人向けの製品に「Superfish」と呼ばれるソフトがプリインストールされていた。同社としては、オンラインショッピングをするユーザーが、自分が興味のある製品を見つけることを手助けするソフトウェアとしてインストールを決めたという。早い話がいわゆるマルウェア的なもので、個人的には決してPCのベンダーが率先して提供するようなものではないと思う。
このソフトは、ユーザーがWebブラウザを使ってサービスサイトに要求した内容を横取りし、その情報をSuperfishが運用するサーバーに送り、戻ってきたおすすめ製品などの関連情報と本来のサイトから送られてきたページ情報をマージして表示するというものだ。
卑近な例でいえば、検索ページで検索した結果一覧に、「広告」や「スポンサー」のラベルつきで関連製品のショッピング情報などが表示されるのと似ている。
だが、Googleの検索結果に広告リンクが混じっても、それは、Googleが付加した情報であり、インターネットを流れてくるデータはGoogleが生成したページデータであり、ブラウザは忠実にそれをレンダリングしてページとして表示する。その間には誰も介入できないし、介入した場合は不正であるとしてブラウザが表示をはじく。
セキュリティの原則を支える技術
ネットワークの透明性をより信頼に足るものにする仕組みを提供する通信がhttps(Hypertext Transfer Protocol Secure)だ。
httpsは、個人情報や決済に関わる情報をやりとりするときに、SSLによって通信内容を暗号化するトンネルを作り、そこにhttpを使ってデータを送受信することでセキュリティを確保する。相手が信用できるサイトかどうかを確認するためには、ルート証明書が使われ、それを発行するのが認証局だ。証明書はカギ情報を使って保護され改ざんはできないことになっている。その仕組みが正常に機能していることは、安全な通信が成立するための大前提とも言える。
だが、Superfishは、そのプログラム内に「なんちゃって認証局」を持ち、それが発行した証明書をブラウザに信頼させてしまう。それによって、https通信であるにも関わらず、広告リンク等の付加を可能にしてしまっていたのだ。つまり、目の前に表示されているページは、送られてきたページとは異なるものになってしまう。
さらに、その実装がお粗末で、Superfishが稼働する全てのPCで同じ証明書が使われていた。プログラムの中に実装された「なんちゃって認証局」が、どのサイトの情報も、同じ証明書を使ってブラウザを信用させるのだから、それを知る悪意の第三者が攻撃をしかけることはたやすい。
Lenovoとしては謝罪の意を表明する一方で、業界全体でアドウェアが増えてきていることの危険さを認識しなければならないことを指摘する。
Superfishの開発のために使われたSDKは「Komodia Redirector」と呼ばれるものだった。そして、このSDKには、それを使って開発されたソフトウェアに同様の脆弱性を引き起こす可能性をもつと警鐘を鳴らす。
Lenovo自身は間違いを犯したことを認め、それを謝罪し、アクションを取ったが、業界全体として問題がまだ残っているというのだ。
Lenovo広報にコメントを求めたところ、ThinkPadと個人向けLenovoは開発が全くの別部隊で、今回の件に関してThinkPadはシロだという。個人向けPCの開発部隊が、ユーザーがネットショッピングするときの提案手段としてアドウェアを入れたというのが発端なのだと言う。
経緯としては、Superfishプリインストール機の出荷後、サポートフォーラムでその挙動に嫌悪感をもったユーザーに叱られたので1月の時点でSuperfishサーバーを止めた。さらに、生産現場にSuperfishのプリインストールをやめるように指示したが、出荷品に反映されるのに時間がかかり、完全にプリインストールされていない環境になったのは2月になってからだという。
なぜ、LenovoはSuperfishをプリインストールすることに至ったのか。もし、Superfishによって推奨された商品を、ユーザーが買うようなことがあった場合、どんなカネの流れがあったのだろう。アフィリエイト的な仕組みで、ある割合の見返り金が払い出されていた可能性は否定できない。Lenovo広報も、カネの流れはゼロではないと言う。ちなみに、今のところハッキング被害は確認されていないとも言うが、同社はこの辺りのことも明らかにして、そこに反省すべき点があるなら改善を表明し、ユーザーの信頼を回復するべきだ。
プリインソフトの罠
LenovoPCに限らず、一般的なメーカー製PCには、たくさんのアプリケーションがプリインストールされている。
プリインストールアプリには2種類ある。
1つは収益化のためのもので、その代表がセキュリティソフトだ。セキュリティベンダーは期間を区切って機能するセキュリティソフトを無償でPCメーカーに提供し、ユーザーがそれを更新すると、メーカーに代理店手数料的なカネが支払われる仕組みだ。これらによって、メーカーはPCを少しでも廉価に提供することができるし、ユーザーのセキュリティも確保できる。ここでは全員が“Win”を獲得していることが分かる。
もう1つは、アプリケーション自体に付加価値にあり、それがプリインストールされていることで製品の価格をさらに高くすることができるものだ。こちらはOEM供給元であるソフトウェアベンダーに、PCのベンダーがそのコストを支払うことになる。単独で購入すれば高価なソフトウェアが、プリインストールなら安く手に入るという点では、Microsoft Officeなどがすぐに思いつくが、ある意味でWindowsそのものもそうかもしれない。
いずれのタイプのプリインストールアプリについても、プリインストールする段階での検証をもっと厳しくしなければならないとLenovoは言う。特にネットワークにアクセスするようなものは余計にそうだ。ユーザーが自分の知らないところで通信が行なわれていることへの警戒心、慎重さは十二分に理解しなければならない。メーカーへの信頼を裏切るようなことは決してあってはならないはずだからだ。
今回は、アドウェアという見かけの背景に、お粗末な脆弱性が露呈した形になったが、Webサービスとの間で行なわれている通信は、セキュリティソフトによって監視されているし、それによってさらなる安全が確保されている。だが、そのセキュリティベンダーも、今回の脆弱性を前もって見つけることはできなかった。
だが、httpsという方法が、これほどまでに簡単に乗っ取れてしまうブラウザのメカニズム、そして、httpsの存在意義を根底からくつがえしてしまうような行為を容認してきたPCの業界そのものに問題はないのか。
今、見ているWebページは、本当に、そのWebサイトから送られてきたページそのものなのかどうか。アドレスバーにカギのマークが表示されているからといって、決して安心してはいけないということなのか。今回のLenovoの事件は、ネットワークの透過性というセキュリティの根源に関わることを考えるきっかけになった。
LenovoはThinkPadやエンタープライズ向けの製品には影響はないことを強調している。では、なぜ、個人向けの製品だけにSuperfishがプリインストールされることになり、その結果、危険にさらされることになったのか。メーカーにとって、企業と個人は区別、差別されるようなものなのか。同社の精神の深層には、ある種の邪悪な思想が潜んではいなかったか。その疑惑を完全に払拭するためにはさらなるアクションが必要になるだろう。
同社CTOのPeter Hortensius氏は、今回の件についての書状を公開し、謝罪を表明するとともに、さらに具体的なプランと明確なアクションを策定中で、近日中にそれを公開するとしている(詳細はこちら)。なんと言ってもLenovoは世界一のPCベンダーである。説得力のあるアクションを期待したい。世界一には世界一の責任がある。