web-dev-qa-db-ja.com

Googleの変更Chrome 80はCookieとパスワードの暗号化を弱めましたか?

StackOverflowのArunによると、「開始Chrome 80バージョン、CookieはAES256-GCMアルゴリズムを使用して暗号化され、AES暗号化キーはDPAPI暗号化システムで暗号化され、暗号化されたキーは内部に保存されます。 「ローカル状態」ファイル。」( https://stackoverflow.com/questions/60230456/dpapi-fails-with-cryptographicexception-when-trying-to-decrypt-chrome-cookies/60611673#6061167 )。

一見すると、これはCookieをWindows Data Protection API(DPAPI)に直接渡すのではなく、改善されたように見えます。Cookieはより優れたアルゴリズムで暗号化され、キーのみがAPIによって保護されます。より強力な暗号化が使用され、Windows Data Protection APIがキーを暗号化します。残念ながら、保護範囲はLocalUserからLocalMachineに変更されています。

これは、ユーザーがハードドライブを別のコンピューターに接続してコピーした場合、Windowsデータ保護APIを使用してローカル状態ファイルのこのキーを復号化するためにWindowsアカウントのパスワードは不要になることを意味します。理論的には、これによりシステム上の別のユーザーがパスワードとCookieを盗むことが可能になり、さらに存在していたセキュリティ保護が弱められます。

私はこのリスクを示すコードデモをBrave Browserと組み合わせました(参照: https://github.com/irlcatgirl/BraveCookieReaderDemo )。 ChromeのSQLiteファイルとローカル状態ファイルのパスを交換するのは簡単です。

によると https://docs.Microsoft.com/en-us/windows/win32/api/dpapi/nf-dpapi-cryptprotectdata#parameters

通常、データを暗号化解除できるのは、データを暗号化したユーザーのログオン資格情報と一致するログオン資格情報を持つユーザーのみです。さらに、通常、復号化はデータが暗号化されたコンピューターでのみ実行できます。ただし、ローミングプロファイルを持つユーザーは、ネットワーク上の別のコンピューターからのデータを復号化できます。データが暗号化されているときにCRYPTPROTECT_LOCAL_MACHINEフラグが設定されている場合、暗号化が行われたコンピューター上のすべてのユーザーがデータを復号化できます。この関数は、暗号化を実行するためのセッションキーを作成します。セッションキーは、データを復号化するときに再度生成されます。

Windows DPAPIのスコープが変更されたため、この変更によりChromeのセキュリティが損なわれたり、検出結果が誤って解釈されたりしていませんか?

1
Nathaniel Suchy

あなたが説明することをやめるだけです:Chromeがローカルマシンスコープを使用する正当な理由はまったくわかりません。セキュリティの脆弱性と呼んでいます。

ローカルマシンのキーがどれほど安全かはわかりませんが、最低でも、マシンへの認証(ログイン)アクセス権を持つユーザーなら誰でも解読できます。キーが取得可能な方法で格納されている場合、ログインアクセスがなくても可能である可能性があります(フルアクセスの暗号化を使用していないハードドライブを盗んだ人など、パスワードに制限のない読み取りアクセス権を持つ攻撃者にとって)。対照的に、ユーザーのDPAPIマスターキーは、ユーザーのパスワードから導出されたキーを使用し、かなり高価なキー導出関数を介してラップされます。

また、一般的にこの変更を行う理由もよくわかりません。はい、AES256-GCMはDPAPIのデフォルト(AES128-CBC + HMAC-SHA2-512だと思います)よりも少し安全かもしれませんが、実用的な目的で暗号実装を追加することは良い考えではありません。セキュリティは、最も弱いリンクと同じくらい良好です。 DPAPIは、高価なキー導出アルゴリズムのために初期化に時間がかかりますが、初期化されると、キーは保護されたWindowsセキュリティサブシステム内の非ページメモリに保存されます。キーの使用は高速です(同じマシンのリモートプロシージャコールが必要であり、プロセス間通信には常にsome perfコストがかかりますが、Windowsのlrpcシステムは高度に最適化されており、渡されるデータは小さい)。さらに、キーの保護は、おそらくChromeが「マスター」キーに設定するよりもはるかに優れています。

Googleには理由があり、少なくとも一部のユーザーにとっては良いものであると確信しています(おそらく、ドメインに参加しているマシンで現在のユーザーのキーが機能する方法に問題があったのでしょうか?異なるWindowsアカウントを使用している人もいます) Chromeプロファイルをどうにかして共有し、暗号化されたデータをそのような設定でアカウント間で共有できるようにする必要がありましたか?)、しかし一般的なユーザーにとって、これは非常に大きな逆のステップのように見えます少しの利益。

2
CBHacking