Malware Spoofing HTTPS(3月2日,追記あり)
(「Lenovo は何をやらかしたのか」から改題し,修正・追記しています)
いや,2月19日に Techcrunch の記事を見た時点ではよく分かってなかったのよ。 ただ,この問題を Lenovo が知ってるかどうかがポイントだなぁ,とは思ってた。
で,夕方ネットをチェックしてたら詳しい解説が出てたんだけど
それによると,どうやらプリインストールの段階で Superfish のルート証明書がインストールされてしまっているらしい。
(ちなみに「証明書」とは公開鍵暗号の公開鍵+電子署名と思っていただいて差支えない。 SSL/TLS で使用する公開鍵は必ず信用できる CA(Certification Authority; 認証局)による証明(電子署名)が必要である(自己署名のみは NG)。 CA の総元締めが「ルート CA」で,ルート CA 自身の証明書が「ルート証明書」である。 ルート CA を証明できる上位の CA は存在しないため,ルート証明書は例外として自己署名しかない)
いや,これもう完全に guilty です。 裁判マシーンにお仕置きされるレベル。 やっちゃいましたねぇ。
とりあえず Lenovo マシンの証明書ストアに Superfish CA の証明書がないか確認すること。 よくわからないって方はテスト用のサイトがあるので是非確認を。
もし証明書が見つかったら Superfish をアンインストールした上で削除すること。
- Superfish Uninstall Instructions - Lenovo Support (US) (Lenovo によるアンインストール方法の解説ページ)
- MS、「Windows Defender」をアップデート--レノボPCに含まれていたSuperfishに対応 - ZDNet Japan: ただし Mozilla Firefox などのサードパーティ製品は対象外 (2/26 追記)
で,話はこれで終わらない。
今回の件の何が拙いのか
Lenovo が仕込んだ Superfish の直接的な問題点は以下のとおり(unsignedint さん, follow ありがとうございます)。
- セッションを乗っ取る形で Web コンテンツを改ざんしていること。 途中で Web コンテンツを改ざんする手口は結構古典的だけど,現在ではこうした行為をするソフトウェア自体が「悪意のソフトウェア(malicious software; malware)」として認知さる。 更に今回は SSL/TLS のセッションを乗っ取り,なりすましを行う典型的な「中間者攻撃(Man-in-the-Middle Attack)」であると言える。
- いわゆる「オレオレ証明書」をプリインストールの段階で仕込んでいること。 しかもこれはルート CA の証明書なのが悪質。
- Superfish はルート CA を偽装しているが,非常に危険な形で実装されていること。 特に秘密鍵の保護がずさんなため,容易に他の malware も便乗できる。
実はこれ,個々の要素技術(Web プロキシ,CA 機能,公開鍵暗号の鍵生成,証明書の発行 等)自体は難しくもなんともないのだ。 標準的な機能を組み合わせて Web の暗号通信を乗っ取れるということを Lenovo は code で証明してしまったのである。
これは Lenovo 1社の信用問題などという矮小な話じゃないの。 SSL/TLS というか X.509 型 PKI(Public Key Infrastructure; 公開鍵基盤)の信用モデルを根底からぶっ壊してしまっている点が画期的なの。
PKI の信用モデル
SSL/TLS に代表される X.509 型の PKI は CA の権威性で以って信用を託されている。
暗号技術や PKI をちょっとかじった人ならわかると思うけど,相手を「信用」する客観的・論理的な根拠というのは存在しないのだ。 だからどこかで割りきって「信用を託す」かたちで PKI は回っている。
例えば OpenPGP は「信用の輪(web of trust)」と呼ばれる信用モデルを採用していて,基本的にはユーザ間の直接のやりとりで以って信用を担保している。 こうして担保された信用を繋いでいって網(web)を構成するのである。 この場合,ユーザ間の信用に客観的・論理的な根拠はない。 直接やり取りしてるし,相手も正しく秘密鍵を取り扱ってくれるだろうという推定で以って信用している。
一方の X.509 はピラミッド型の構成になっていて,頂点となるルートCA をその権威性(曰く「私を信用しなさい」)で以って信用することにより下層の CA なり証明書なりを信用する仕組みになっている。 これを hierarchical PKI と呼ぶ。 この場合,ルート CA およびその証明書を信用する客観的・論理的な根拠はない。 ルート CA を管理している企業・組織が信用できることが絶対の前提条件である。 また Web ブラウザの場合はブラウザ・ベンダによってあらかじめインストールされているルート証明書をユーザは無条件で信用している(というよりそのような信用の構造になっていることすら知らないユーザも多いかもしれない)。 この前提条件が崩れると hierarchical PKI は瓦解する。
今回の Lenovo の行為は,この前提条件をぶっ壊してしまったのだ。 曰く「ルート CA に権威なんかねーんだよ」ってことだ。 これは昔あった特定のルート CA を乗っ取って偽の証明書を発行する,とかいう手口とは根本的に異なる(あるいは,個々のユーザが「第3者の証明? 要らんよ,そんなもん」とかいって自己署名のみのオレオレ証明書で運用するのとも違う)。 なんて COOL !
さて今後は...
今回のケースはだれにでも真似できる。 できることを証明してしまった。 ルート CA 機能を持った malware やルート証明書を仕込むのは少々難しいと思うが,所謂 social engineering の問題であり,ユーザを騙す方法はいくらでもある。 今回は PC だったけど Android や iOS 等の携帯端末でも可能(iOS は守られてるから無理,という人もいるかもしれないけど,その前提は既に崩れているので悪しからず)。
おそらくブラウザ側は何らかの対策を打ってくるだろう。 もうユーザ側で自由に証明書をインストールできなくなるかもしれない。 まぁでもそれも仕方のない事である。 Web の信用を失う訳にはいかないからだ。
問題はそれ以外の X.509 型 PKI を使う,おそらくは SSL/TLS アプリケーション。 一番危ないのはオレオレ・ルート CA を運用する OpenVPN サーバだろう。 これを乗っ取るのは簡単そうである(「オレオレ・ルート CA」なんか立ててる奴はセキュリティなんか気にしてないだろうしw どうせ OpenVPN もファッションだろう?)。
まっ,これからが楽しみなことである。
てなことを言っていたら(2月26日追記)
驚愕の事実が次々と発覚!
まず Komodia 社が提供する Komodia Redirector に含まれる SSL Digestor モジュールが「オレオレ・ルート証明書」およびその秘密鍵をインストールすることが分かってきた。 Lenovo の Superfish もこれを使っているようだ。 Komodia Redirector を使っているベンダとして
- Atom Security, Inc
- Infoweise
- KeepMyFamilySecure
- Komodia
- Kurupira
- Lavasoft
- Lenovo
- Qustodio
- Superfish
- Websecure Ltd
が挙がっている。 なお,この Komodia Redirector について CERT では CVSS 基本値を 8.5 (AV:N/AC:L/Au:N/C:C/I:P/A:N) と評価している。
さらにさらに。 Komodia Redirector なんか目じゃない極悪ツールも存在するらしい。
- Software Privdog worse than Superfish - Hanno's blog
- SSL証明書を発行する企業が証明書を偽造する悪質なアドウェア「Privdog」を販売していたことが判明 - GIGAZINE
なお,追記として
とあるので,誰かが勝手に改変バージョンをばらまいている可能性もある。
セキュリティ企業や組織は「脆弱性(vulnerability)」などと比較的穏当な表現をしているが,オレオレ・ルート証明書をインストールする行為自体が明確な「悪意」である。 なぜなら(上述した通り)これは PKI の信用モデルに対する攻撃(破壊)だからだ。 今回,問題のある Komodia Redirector を使用したベンダ企業(この中にはセキュリティ企業(?)も含まれるが)の名前は覚えておいたほうがよい。
参考ページ(追記あり)
- Lenovo Superfish Adware Vulnerable to HTTPS Spoofing | US-CERT (2/21 追記)
- Schneier on Security: Man-in-the-Middle Attacks on Lenovo Computers (2/21 追記)
- 「セキュリティホール memo」の記事 (2/26 追記)
- Vulnerability Note VU#529496 - Komodia Redirector with SSL Digestor fails to properly validate SSL and installs non-unique root CA certificates and private keys (2/26 追記)
- Vulnerability Note VU#366544 - Adtrustmedia PrivDog fails to validate SSL certificates (2/26 追記)
- JVNTA#91476059: Superfish がインストールされた Lenovo 製 PC に HTTPS スプーフィングの脆弱性 (2/26 追記)
- JVNVU#92865923: Komodia Redirector がルート CA 証明書と秘密鍵をインストールする問題 (2/26 追記)
- JVNVU#91326102: Adtrustmedia PrivDog に SSL サーバ証明書の検証不備の脆弱性 (2/26 追記)
- 「Superfish」以外にもセキュリティを脅かすソフトが複数--研究者ら - ZDNet Japan (2/26 追記)
- 【山田祥平のRe:config.sys】今見ているWebは本物か - PC Watch (3/2 追記)
手前味噌ですみません。
- わかる! OpenPGP 暗号 — Baldanders.info (「X.509 と OpenPGP」の節あたりを参考にどうぞ)
参考図書
- 信頼と裏切りの社会
- ブルース・シュナイアー 山形 浩生
- エヌティティ出版 2013-12-24
- 評価