Chrome などで保存したパスワードが丸見えだから危険とか言われている件について

Google Chrome では設定画面からブラウザに保存してあるパスワードを簡単に見ることができて危ないっていう件について誤解されていそうな点をまとめてみたいと思います。

Google Chromeソフトウェア開発者の Elliott Kember 氏が自身の Blog に「Chrome's insane password security strategy」 というタイトルで指摘する記事を書き、日本ではギズモード・ジャパンで翻訳記事が上がったことで話題になった、「Google Chrome では設定画面からブラウザに保存してあるパスワードを簡単に見ることができて、マスターパスワードの設定もないから危ない」 っていう件。

Chrome の開発チーム (Justin Schuh 氏) の方からは Hacker News の方で反論 (後述) が上がってて、一段落した感じになっていますが、本件について Chrome やばい、使うの気を付けようとか、Firefox や IE なら安全とか言ってる人を見かけたのでちょっと乗り遅れ気味ですがまとめてみたいと思います。

Chrome のパスワード管理機能

まず、事の発端となった、Chrome のパスワード管理機能について。

Chrome の設定画面から、「保存したパスワードの管理」 を選択すると、保存されたログイン情報の一覧が出てきますが、ここでパスワードの欄に出てくる、「表示」 というボタンを押すと、確かにパスワードがそのまま表示されます。

Chrome のパスワード管理 / 「表示」を押すとパスワードが閲覧可能

Firefox や Opera のようなマスターパスワード (パスワード情報へのアクセス自体に対するパスワード) の設定機能もないので、コンピュータを操作できさえすれば、簡単に保存されたパスワードを見ることができますと。この仕様が本件で話題になっているわけですね。

Justin Schuh 氏からの返答

Justin Schuh 氏が Hacker News で書いている回答は下記などですが、

I'm the Chrome browser security tech lead, so it might help if I explain our reasoning here. The only strong permission boundary for your password storage is the OS user account. So, Chrome uses whatever encrypted storage the system provides to keep your passwords safe for a locked account. Beyond that, however, we've found that boundaries within the OS user account just aren't reliable, and are mostly just theater.

Consider the case of someone malicious getting access to your account. Said bad guy can dump all your session cookies, grab your history, install malicious extension to intercept all your browsing activity, or install OS user account level monitoring software. My point is that once the bad guy got access to your account the game was lost, because there are just too many vectors for him to get what he wants.

We've also been repeatedly asked why we don't just support a master password or something similar, even if we don't believe it works. We've debated it over and over again, but the conclusion we always come to is that we don't want to provide users with a false sense of security, and encourage risky behavior. We want to be very clear that when you grant someone access to your OS user account, that they can get at everything. Because in effect, that's really what they get.

I'm the Chrome browser security tech lead, so it might help if I explain our rea... : Hacker News から引用

彼の主張をものすごく簡単に意訳してしまえば、

  • 今の仕様を変えるつもりはない
  • Chrome に保存されたパスワードへのアクセス制限は OS のユーザーアカウント単位で行われている
  • そもそも、他人があなたのコンピュータに自由にアクセスできる時点で、Chrome のセキュリティ以前の問題だ。本質を見ろ
  • ユーザーアカウントを切り替えずに他人にコンピュータを貸すとか、アカウントをロックせずにコンピュータの前を長時間離れるとかをやめろ

ということでして、技術系の人にとってはごく普通な回答になっているかと思います。

論点の整理

Elliott Kember 氏も、技術者側からこういう回答、つまり 「他人が物理的にコンピュータにアクセス可能になってる時点でセキュリティ的には終わってんだろ」 とか 「パスワード管理ってそういうもんじゃん (保存したパスワードを本人が確認できなかったらパスワード管理機能にならんだろ)」 っていう話は恐らく承知の上で、

  • パスワードが最終的に閲覧できることが問題じゃなくて、ワンクリックで簡単に見られるってことと、それが周知されてないのが問題ではないか
  • マスターパスワードが設定された Keychain (キーチェイン) から Chrome にパスワードをインポートすると、ダイアログ上ではパスワードはキーチェインで保護されているように表示されるけど、実際には Chrome 側から簡単に閲覧できちゃうってのミスリードだし、問題じゃないか
  • 技術者視点じゃなくて一般ユーザーの視点で考えてみようよ

っていう指摘をしていると読めます。

で、この指摘自体はわからないでもないですが、Justin Schuh 氏からの返答もそれを踏まえた上で、だけどそこは本質じゃねーんだよ。と言ってるわけ。

つまり、「とにかくパスワードを簡単に見られないようにしろよ」 vs 「コンピュータにログインしたユーザーが簡単に自分のパスワードを見ることができて何が悪いの? 問題はそこじゃねーだろ」 っていう議論で、どちらかが絶対に正しいというよりも、セキュリティに対する考え方、思想の問題なので、これは決着つかないですよね...... 実際に掲示板の方でも色々な意見が出てますし。

現実的にはログイン済みのユーザーは信用するっていう前提で物事は成り立っているので、Justin Schuh 氏の主張の方が自然で、何言ってんだよってなるのは当然なんですが、一方で大事な情報は簡単に見られないようにしてくれた方がもっと安心じゃんっていう言い分もわからないではないですからね。

ところで、上記のように 「考え方の違いですね」 で終わる話ならいいんですが、日本で話題になったギズモードなどの記事では、タイトルの付け方や追記された内容の関係もあって、そういう話ではなく、

  • Chrome でパスワードが簡単に見える → Chrome のセキュリティやばい
  • マスターパスワードが設定できないのはセキュアじゃない

みたいな印象の記事になってしまっているのと、前述の通り、読んだ人の反応の一部からも実際にそのように受け止められていると思われる点がちょっと問題な気がします。

なので、本記事ではこの点について書いてみたいと思います。

マスターパスワードがあれば安全か

では、Chrome が Firefox などのようにマスターパスワード機能を持って、「マスターパスワードを設定していないと他人が簡単にパスワードを見ることができちゃうから、みんなマスターパスワードを指定してね」 とアナウンスしたら、セキュリティ強化の面で一般ユーザーが正しい方向に向かうんでしょうか?

これに対して、Justin Schuh 氏は 「本質的じゃない対応をすることで、ユーザーにヘタな安心感を与え、本来行うべきセキュリティを忘れられては困る」 っていう懸念を回答でも書いていて、実際にギズモードの記事に対する反応でも、「Firefox や Opera ならマスターパスワードがあるから安心」 的なのがあるのを見るに、その懸念は当たってるんじゃないかと思うと、あまりよい解決策ではない気がします。

マスターパスワードなんて飾りです。偉い人には(ry

で、例えば、Firefox は確かにマスターパスワードを設定できる機能が実装されています。

Firefox の環境設定 / マスターパスワード設定

ここでマスターパスワードを設定しておけば、Firefox にログイン情報が保存されたページにアクセスした際、フォームへのオートコンプリートを実行前にマスターパスワードを聞かれますし、オプション設定画面から保存したパスワードを見ようとした場合も、マスターパスワードを聞かれるので、それさえ他人に知られなければ一応安全な気がします。

が、下記のように実際には保存されたパスワードを閲覧することは大して難しいことではありません。

1. パスワードデータ自体を盗み出して別のコンピュータ上で閲覧

ブラウザに限らず、パスワード管理ツールは、コンピュータ内のどこかにパスワードデータ自体を保存しています。データは当然暗号化されていますが、コンピュータ上でパスワードを利用するためには復号化できなければいけないので、当たり前ですが鍵があれば復号化できる状態で保存されていることになりますし、コンピュータ上のどこかに鍵もあるわけです。

で、Firefox であれば、プロファイルフォルダ内にある、signons.sqlite と key3.db という 2つのファイルにパスワードデータと復号化のための鍵データがそれぞれ保存されています。

コンピュータにアクセスできる状態であれば、とりあえずこの 2つのファイルをコピーして盗み出すだけで、あとは別のコンピュータ上でゆっくりパスワードデータを復元すればいいってことになります。

暗号化されているんだから簡単には復元できないだろと思うかもしれませんが、マスターパスワードが設定されていなければ、別コンピュータに Firefox を入れて、そのプロファイルフォルダに上記、2つのファイルをコピーすれば終わりですし、マスターパスワードが設定されていたとしても、マスターパスワードを忘れてしまった人向けに、それを捜し当ててくれるフリーソフトは色々あります。

例えば、FireMaster などが代表的ですが、この辺のツールを使えば比較的簡単にマスターパスワードを突破することはできてしまいます。やってることは所謂、総当たり攻撃なんですけどね。

また、Firefox 以外にも、例えば IE や Outlook Express などに保存したログイン情報は、Protected Storage に保存 (もちろん暗号化して保存はしてある) されていますが、これは Protected Storage PassView などのフリーソフトでも簡単に取り出して閲覧することができます。IE にはマスターパスワード的な仕組みはないので、コンピュータにログインさえできてしまえば簡単です。

2.オートコンプリート機能からパスワードを閲覧

Firefox に保存してあるログイン情報は、マスターパスワードがないと直接見ることはできません。しかし、オートコンプリート機能に関しては、最初だけマスターパスワードを聞かれるものの、一度パスワード認証をすると、Firefox を閉じるまでは二度と聞かれません。つまり、この状態でコンピュータにロックをかけずに長時間席を外したりして、他人にコンピュータをいじられると、Firefox であってもログイン情報はセキュアじゃなくなります。

え? でもオートコンプリートで入力されるパスワードは伏せ字になるから直接は見られなくない? と思うかもしれませんが、実は一度フォームにパスワードが入力されれば、簡単にマスクを外すことができます (パスワードが見えなくてもログインされた時点で... ってのは置いといて)。

例えば、下記のようなログインフォームがありますよね。はてなさんを例に挙げたのは別に意味はないです。どんなログインフォームでも同じですので。

ログインフォームの例

で、オートコンプリートでパスワードが入力された状態って上記のようになると思いますけども、ここでインスペクタを使って、フォームの HTML を表示し、パスワード入力欄 (input 要素) の type="password" となっている部分を

インスペクタでログインフォームの HTML を表示

下記のように type="" に修正してしまえば......

インスペクタでログインフォームの HTML を修正

このようにパスワードは丸見えです。コピペすればパスワードを盗むの簡単。

ログインフォームのパスワードが表示された例

これは、ログイン情報のオートコンプリート機能を持ちながら、Chrome や Firefox のように環境設定から保存したパスワードを見ることができないので、一見安全のように思われる IE も同じです。

IE はマスターパスワードも聞かれないので、オートコンプリート → 開発者ツール (F12) から上記、Firefox と同じようにしてやれば簡単にパスワードを見ることができます。

IE でログインフォームのパスワードが表示された例


さて、2つの例を挙げましたが、このように、コンピュータへの物理的なアクセスを許してしまえば、ブラウザに関係なくパスワード情報が盗まれるのはごく当たり前のことです。ブラウザにマスターパスワードが設定できるから安全だとか、そういうレベルの話じゃないってことなんですよね (そもそも、コンピュータに物理的にアクセスできるならマルウェアとか仕込んでリモートからぶっこ抜き放題にするよね)。

これは、家の中の重要書類入れに鍵がかかるからといって、家の鍵をかけないで出かければ書類入れごと盗まれたり、書類入れをぶっ壊されて中身持ってかれますよっていう話と同じであって、確かに書類入れ自体に鍵がかかれば安心感は増しますが、まずは家に鍵かけろよってなりますよね。

ということで、私個人的には 「同じユーザーアカウントで他人とコンピュータを共有したりするな」 とか 「コンピュータには必ずログインパスワードを設定して、使わない時は必ずログアウトするなりして、コンピュータをロックしろ」 っていう啓蒙をきちんとやる方が重要だと思いますので、Justin Schuh 氏の主張の方に同意です。

ただ、一方で、Chrome がマスターパスワード機能を実装するってのも選択肢としてはありなんじゃないかなとも思います。パスワードを表示する際には、例えば Chrome に設定してある Google アカウントのパスワードを再入力させるオプションとか付けりゃいいじゃんとか思ったりもしますが、その辺は考え方があるんでしょうね。

そこは譲れないっていう技術者のこだわりもわかりますし、色々議論した結果だと、Justin Schuh 氏も書いてますから。

ということでまとめ。

  • まずはコンピュータに対するログインをきちんと制限・管理しましょう
  • ユーザーアカウントを複数人で使い回すようなことは絶対にやめましょう
  • どうしても他人に一時的に自分のコンピュータを使わせないといけない場合はゲストユーザー機能があるからそれ使いましょう
  • 物理的にコンピュータにアクセスされてしまえば、マスターパスワードなんて飾りです
  • それらを踏まえた上で、Chrome の仕様が嫌いなら使わなきゃいいじゃん

参考リンク

2013年 8月 14日追記

関連エントリー

記事をここまで御覧頂きありがとうございます。
この記事が気に入ったらサポートしてみませんか?