Gigazineさんを眺めていたら『パスワード管理ツール「1Password」は平文のメタデータから個人情報を盗みとられるおそれ』という記事が目に止まりました。普段から1Passwordは便利に使っていて、結構なデータも預けちゃっているので、どういうことなのか、最悪のケースで何が起きるのか、どのように対応すべきなのか、というあたりについて調べてみました。何かのご参考になれば。
問題の概要
AgileBits社の製品である1Passwordは、マルチデバイスで使えて、かつ、Dropbox経由での同期もできる、なかなかいい感じのパスワード管理ツールなので、結構前から使っていました。
で、今回の問題ですが、ざっくりまとめるとこんな感じです。
- ある時期以前から1Passwordを使っている人が対象
- 1Passwordが平文で保存しているデータに、「どのサイトのパスワードなのか」を示した文字列が平文で保存されている←ここ重要
- パスワードそのものが平文で保存されているわけではない←ここも重要
- パスワードリセット用のURLとセットになって保存されている場合、悪意ある第三者によってパスワードリセットされる可能性がある
以下、元ネタであるMyersさんの「1Password Leaks Your Data 」と、日本語で解説してくれている携帯総合研究所さんの「1Passwordの保管庫を安全な「OPVault」に変更する方法 」をベースにしつつまとめます。
誰が対象なのか
「1Password Leaks Your Data 」によれば、2012年の12月に、AgileBits社はデータ格納のフォーマットを「Agile Keychain」から「OPVault」に変更しているようです。問題があるのは前者の「Agile Keychain」の方なので、2012年の12月よりも前から1Passwordを使っている、つまり、古い形式で作られたデータファイルを使っているユーザが対象となります。
このデータファイルは、データ同期をしていないユーザの場合にはローカルのディレクトリに存在すると思われます。また、Dropboxを利用して同期しているユーザ(私はここに該当します)の場合には、Dropbox上、およびDropboxと同期しているローカルディレクトリに存在します。
なお、「1Passwordの保管庫を安全な「OPVault」に変更する方法 」によれば、この形式のデータファイルを使っているユーザのうち、同期にiCloudを使っているユーザの場合には、iCloudがデフォルトでOPVaultを使っているので大丈夫、とのことです…が、私自身がiCloudでの同期を使っていないので、実際のところはよくわかりません。iCloudだとローカルディレクトリには保存されないのかな。もし、ローカルディレクトリに同期するようなのであれば、そこにあるデータファイル自体はこの影響を受けるような気がしています。
自分が「Agile Keychain」と「OPVault」のどちらを使っているかを確認するかについては、「1Passwordの保管庫を安全な「OPVault」に変更する方法 」の記載が詳しいです。さっくり書いておくと、1Passwordの環境設定から同期タブを見ると、どのファイルで同期しているかがわかります。このファイルの拡張子が「.agilekeychain」であるばあい、「Agile Keychain」のフォーマットになっていますので、この問題の対象となります。
何が平文で保存されているのか
Gigazineさんの記事では「1Password.agilekeychain/data/default/contents.js」に「1Passwordで管理しているサイト情報が暗号化されていない平文で」保存されているとのこと。早速、自分のMac環境で確認してみました。
問題のファイルはコレ。Mac環境の場合、当該のファイル(私の場合はDropbox1Password.agilekeychainでした)を右クリックして「パッケージの内容を表示」してからフォルダを降りていく必要があります。
で、コイツをエディタで見てみるとこんな感じ。
サービス名やそのURLに加え、マスクしている部分には、左から「20桁ほどの英数字」と「10桁ほどの数字」が入っています。
上記の内容を見て分かるように、ユーザ名やパスワードそのものが格納されているわけではありません。ただ、どのようなサービスを利用しているのかはわかってしまうので、まずこの時点で気持ち悪いっちゃ気持ち悪いです。
さらに、Gigazineさんの記事にあるMyersさんの例のように、パスワードリセット用のURLが上記のファイルに含まれてしまっており、かつ、パスワードリセット用のURLが「一度パスワードリセットをされた後でもそのまま存在し、パスワードリセットが再度可能な状態」であった場合、パスワードを再発行され、サービスのアカウントを乗っ取られる可能性がある、ということのようです。
なので、Gigazineさんの記事にもあるように、パスワードリセットを準備しているサイト側のバグ(リセット完了後も、再リセット可能な状態で一時URLが残っているのはバグと言っていいと思います)がある場合、という限定的な状況ではありますし、携帯総合研究所さんの記事にもあるように、「Agile Keychain形式の保管庫をDropboxのパブリックフォルダに入れて同期するか、Dropboxに不正アクセスされるか、1Passwordを利用しているPCが第3者に不正利用されるぐらいのオマヌケをかまさないと」このファイル自体にアクセスされないので、現実的にこれがすぐに顕在化するセキュリティリスクかと言われれば微妙ではありますが、いずれにしても気持ち悪いことは間違いないので、対策をしておくに越したことはないと思います。
対策する
紹介した各記事や、AgileBits自身のフォーラムにもあるように、Windows版の1Passwordでは、「Agile Keychain → OPVault」の変換ができない(推奨されていない?)ようです。まじか。
つうことで、Mac版の1Passwordを使っている場合限定っぽいですが、携帯総合研究所さんの記事にあるように、ターミナルからコマンドを投入してやることで、既存のデータをOPVault形式に変換できるようです。
AgileBits自身のフォーラムには、Mac版1Passwordのメニューから処理ができるようなニュアンスで書いてありますが、これはBeta版だけの機能なのかも。私の環境では当該のメニューが出てきませんでした。
つうことで、まとめた後で、今から実際の作業を行う予定なのですが、これ、Mac版を使っていないユーザの場合どうするのかなぁ。各プラットフォームのアプリ自体はOPVaultに対応しているみたいだから、どこかでコンバートかけてあげて、別の端末ではそっちを読むようにしてやればいいんだろうけど、そもそもコンバートできる環境がない人、絶対いるよなぁ。うーむ。対応が微妙だな。
実際の作業をやってみて何か問題ありそうだったら追記するかもです。
コメント