ショーン・キャシディ氏はLastPassのユーザーであり、セキュリティ研究者でもあります。約1週間前、彼はLastPassの使用中に気づいたことについてブログ記事を投稿しました。LastPassは、別のインターフェースやネイティブアプリのログインではなく、ブラウザベースのアラートとデスクトップログインに依存しているため、なりすましが容易でした。
彼は数ヶ月前に詳細を整理していたが、コミュニケーションの行き違いと遅延により、1月中旬にセキュリティイベントShmooConで自身の取り組みを発表するまでにLastPassがすべての問題を修正できなかったと述べている。その後、LastPassは残された問題に再度取り組み、ユーザーへのより詳細な説明を行い、この種のなりすまし攻撃をより効果的に削減するための今後の方向性を明らかにした。
本質的には、これは何年も前から知られている事実を改めて強調しているだけです。つまり、ブラウザのコンテンツ部分、つまりビューポートは信頼できないということです。
ブラウザに注意
ワールドワイドウェブ上でなりすましの価値があるものが登場して以来、他者になりすましたサイトが登場してきました。安全なウェブ接続の普及により、意図した宛先がリダイレクトされた際にブラウザがユーザーに警告を出すようになったため、こうした状況は軽減されました(少なくとも一部のケースでは)。ブラウザのエクスプロイト、マルウェア、そしてローカルネットワークに悪影響を及ぼす可能性のある「悪魔の双子」ホットスポットも、偽サイトをユーザーに送りつけるために利用されてきました。
フィッシングは依然として問題となっています。毎日少なくとも数十億件ものメッセージが送信されており、リンクをクリックさせ、サイトへ誘導してログイン情報を盗み出したり、個人情報を盗んだりしようとしているのではないでしょうか。
LastPassの問題はこれと並行して発生していますが、原因は異なり、同社はすでに緩和策をリリースしています。LastPassのブラウザ拡張機能は、Webページと同じ基盤構造とスタイルコードを使用して、ブラウザのメイン表示領域であるビューポートにメッセージをプッシュします。
キャシディ氏は、あり得ないわけではない一連の行動のせいで、これが問題だと指摘した。
ユーザーはフィッシング詐欺に遭ったり、悪意のあるサイトにアクセスしたりします。悪意のあるサイトとは、一見正当なコンテンツを掲載しているように見えても、悪意のあるスクリプトが仕込まれているサイトのことです。
そのサイトは、JavaScript を使用して LastPass がインストールされているかどうかを判断します。(LastPass には無料版があり、広く使用されています。)
LastPass がインストールされている場合は、ビューポートに LastPass アラートとまったく同じメッセージが表示され、ユーザーに LastPass セッションの有効期限が切れたことを通知します。
ユーザーがリンクをクリックすると、別のウェブサイトに誘導されますが、そのアドレスは本物らしく見えます。(キャシディ氏は人を騙せるようなドメインを登録しましたが、怪しく見えないドメインも数十億登録可能です。)
そのサイトで、ユーザーは、LastPass ログインのように見えるものに認証情報を入力します。これもビューポートに描画され、ビューポートではないポップダウン メニューを使用する実際のものと本質的に同じに見えます。
このサイトは、LastPass の API (アプリケーション プログラマー インターフェイス) を使用して LastPass サーバーにクエリを実行し、ユーザーのパスワード ボールトにアクセスしたり取得したりします。
LastPassは、この一連の攻撃や同様の攻撃を防ぐための対策を追加したと述べています。まず、攻撃サイトはユーザーをシステムからログアウトさせることができないため、ブラウザに表示されるLastPassアイコンとメッセージに不一致が生じます。
ショーン・キャシディ Sean Cassidy のブログ投稿からのこのスクリーンショットは、Chrome の偽装された LastPass ログイン ページを示しています。ドメイン「chrome-extension.pw」は、実際のプロトコル「chrome-extension」に比較的近いです。
次に、LastPassはキー入力を(サーバーに送り返すことなくローカルで)監視しているため、アカウントのマスターパスワードが入力されたことを検知できます。LastPassは、自社サイト以外でマスターパスワードが入力された場合、送信前に入力を阻止し、警告を表示します。また、マスターパスワードが他のウェブサイトなど、他の目的で使用されている場合にも警告を表示します。(キャシディ氏によると、これも同じビューポートに依存しているため、悪意のある攻撃者はこの警告もブロックできるとのことです。)
最後に、LastPassは、シングルファクター(パスワードのみ)ログインとツーファクターログインの両方において、これまで使用・承認されていない場所からのログインを許可する方法を強化しました。ログインが完了する前に、ユーザーは確認メールを受信し、そこに含まれるリンクをクリックする必要があります。LastPassによると、この手順を乗っ取るにはユーザーのメールアドレスが侵害されている必要があり、このなりすまし攻撃は他の認証情報の取得を必要としません。最終的には他の認証情報との併用も考えられますが、このような接続はパスワードボルトの潜在的な侵入率を大幅に低下させます。
LastPassは当初、パスワードのみのログインのみを保護していたため、認証を回避できました。キャシディ氏は、悪意のあるサイトが2要素認証用のインターフェースを表示できるため、セキュリティが低下していると指摘しています。その後、LastPassはすべてのアカウントに確認用メールアドレスの入力を必須にしました。
ボルデポート
根本的な問題はLastPassのセキュリティにあるのではない。Cassidyはサーバーに侵入したり、プラグインの脆弱性を悪用したりしたわけではない。むしろ、ビューポート内のメッセージはブラウザやOSで他の方法で生成されたメッセージと同様に有効であるという誤った信頼を悪用しているのだ。
LastPassは、キャシディ氏の「LostPass」(彼がそう呼んだ)に関するFAQで、ビューポートからの脱却に取り組んでいるものの、Google Chromeのせいで一部阻まれていると述べています。Chromeは非常に堅牢なブラウザであり、その点が高く評価されています。現在の設計では、プラグインはビューポート内以外にメッセージを配置できないため、LastPassの機能には限界があります。
1Passwordなど、LastPassの競合製品の中には、このソーシャルエンジニアリングの弱点を回避する全く異なるアプローチを採用しているものもあります。1Passwordはバックグラウンドプロセスを実行し、インターフェースにポップオーバーウィンドウを効果的に表示します。これはビューポートを回避しながら、通常は正常に動作します(ただし、タイミングの問題や遅延が発生することもあります)。LastPassの拡張機能にはビューポート外のメニューがありますが、エラーなどのメッセージはそこにプッシュされません。
ハリー・ポッターの本の中に、私にはまったく意味がわからないセリフがあります。アーサー・ウィーズリーが子供たちに何度も言った言葉を引用するのです。「脳がどこにあるのか見えないのに、自分で考えることができるものは決して信用してはいけない。」 (これは、例えば、組分け帽子の脳はどこにあるのでしょうか? など、一貫して意味が通じませんでした。)
ウェブに関して、もっと前からこの考え方を採用すべきだったのではないかと、私は深く反省しています。「ブラウザに表示されるものは決して信用してはいけない。なぜなら、その「脳」がどこに保存されているのか、私たちには分からないからだ。」何がそれを描いたのかは分からないし、信用もできない。今こそ、この考え方を乗り越えるべき時だ。