KeePass のパスワード窃取の脆弱性 CVE-2023-24055:開発者は反論を唱える

KeePass disputes vulnerability allowing stealthy password theft

2023/01/30 BleepingComputer — オープンソースのパスワード管理ソフトである KeePass に、攻撃者がデータベース全体を平文で密かにエクスポートできる、新たな脆弱性が発見された。しかし、KeePass の開発チームは、この発見に対して異議を唱えている。KeePass は人気のオープンソース・パスワード管理ソフトだが、LastPass/Bitwarden のようなクラウド・ホスティングのものではなく、ローカルに保存されたデータベースを使用してパスワードの管理を行うものだ。

マスター・パスワードを使用して、ユーザーがデータベースを暗号化することで、このローカル・データベースの保護が可能となる。それにより、マルウェアや脅威アクターによる、データベースの窃取や、その中に格納されているパスワードへのアクセスが阻止される。

この、新たに発見された脆弱性には、CVE-2023-24055 が採番された。標的のシステムに書き込み権限を持つ脅威アクターが、この脆弱性を悪用することで、KeePass の XML 設定ファイル変更が可能となる。その結果として、すべてのユーザー名/パスワードを含むデータベースを、平文でエクスポートする悪意のトリガーの注入にいたる恐れが生じる。

続いて、ターゲットが KeePass を起動し、マスター・パスワードを入力してデータベースを開いて復号化すると、エクスポート・ルールが起動し、データベースの内容がファイルに保存される。その後に、攻撃者が自身でコントロールするシステムへと、それらファイルを流出させることが可能となる。

さらに、このエクスポート処理は、ユーザーに通知されることなく、また、エクスポート前のマスター・パスワードの入力を、KeePass に要求されることもなく、バックグラウンドで起動する。そのため、脅威アクターは、保存されている全てのパスワードに対して、静かにアクセスすることが可能になってしまう。

この件が報告され、CVE-ID が割り当てられた後に、ユーザーは KeePass の開発チームに対して、いくつかの要請を行っている。具体的に言うと、悪意を持って変更された設定ファイル経由で引き起こされる、サイレント・データベース・エクスポート前の確認プロンプトの追加であり、また、エクスポート機能を搭載しないバージョンの提供である。

また、実際の KeePass データベースのエクスポートを、無効にするためのフラグを追加することで、マスター・パスワードを知っている場合にのみ、変更できるようにすることも要求されている。

CVE-2023-24055 が割り当てられ後に、すでに PoC エクスプロイトがオンラインで公開されている。したがって、マルウェア開発者たちは、感染させたデバイス上の KeePass データベースの内容をダンプして盗む機能を持つ、情報スティーラーのアップグレードを容易に行えると考えられる。

脆弱性に対する KeePass 開発チームの抗議

オランダとベルギーの CERT チームも、CVE-2023-24055 に関するセキュリティ・アドバイザリを公開している。しかし、KeePass の開発チームは、ターゲットのデバイスに書き込み権限を持つ攻撃者は、他の手段で KeePass データベースに含まれる情報の取得も可能なことから、これを脆弱性と分類すべきではないと主張している。

実際に、KeePass のヘルプセンターである Security Issues ページには、設定ファイルへの書き込みアクセスの問題について「KeePass のセキュリティ脆弱性とは言えない 」と、少なくとも 2019年4月から記載されている。

ユーザーが通常のプログラムとして KeePass をインストールし、攻撃者が書き込みアクセス権を持っている場合には、さまざまな種類の攻撃を行うことが可能だ。また、ユーザーがポータブル版を実行している場合には、脅威アクターたちは、KeePass の実行ファイルをマルウェアに置き換えることも可能だ。

KeePass 開発者たちは、「どちらの場合においても、一般的に考えると、KeePass 設定ファイルへの書き込みアクセス権を持つ攻撃者は、設定ファイルを修正するよりも、はるかに強力な攻撃が可能である。そして、これらの攻撃は最終的に、設定ファイルの保護とは無関係に KeePass にも影響を与える。これらの攻撃に対しては、アンチウィルスソフト/ファイアウォールの使用や、不審なメールの添付ファイルの排除などにより、環境を安全に保つことでしか防ぐことができない。セキュリティが確保されていない環境下では、KeePass を魔法のように安全に動作させることは不可能だ」と説明している。

しかし、KeePass の開発者が、トリガー経由の平文エクスポート問題に対応したバージョンを、ユーザーに対して提供しないとしても、システム管理者としてログインし、強制設定ファイルを作成すれば、データベースを保護できる。

KeePass のオプションを強制コンフィグで無効にする (KeePass)

このタイプの設定ファイルは、攻撃者により追加された新しいトリガーなどの、グローバル/ローカル設定ファイルに記述されたアクションに優先するため、CVE-2023-24055 の問題を緩和できる。

ただし、この強制設定ファイルを使用する前に、通常のシステム・ユーザーが KeePass のアプリ・ディレクトリ内のファイル/フォルダに対して、書き込みアクセス権を持っていないことを確認する必要がある。

さらに、攻撃者が強制設定を回避できる可能性がもう一つある。強制設定ファイルが保存されたフォルダとは別のフォルダから起動した、KeePass 実行ファイルを使用することだ。

KeePass 開発チームは、「強制設定ファイルが適用されるのは、同じディレクトリにある KeePass プログラムのみだということに注意してほしい。強制設定ファイルを用いずに、ユーザーが KeePass のコピーを実行した場合、このコピーは別の場所に保存されている強制設定ファイルを認識しない。つまり、この設定は適用されない」と述べている。

これは、KeePass の問題と言うより、ローカルに機密データを置く場合の問題なのかと思えます。ただし、KeePass としても、サイレント・データベース・エクスポート前の確認プロンプトの追加や、エクスポート機能を搭載しないバージョンの提供などは行うべきなのでしょう。ただ、そうは言っても、オープンソースのコミュニティに対する、過度な要求には無理があります。よろしければ、LastPass で検索も、ご利用ください。