KeePass2のセキュリティに関する話

KeePass2のセキュアデスクトップはセキュアじゃない説

KeePass2はマスターパスワード入力時にキーロガーの捕捉を阻止するセキュアデスクトップを利用できます。
てっきりUACの機能を使っているのかと思ったら自前でそれっぽく実現しているという話を見つけました。

そうだとすると管理者権限なしにキーロガーを仕込める余地があることになります。
実際、2014年にセキュアデスクトップを回避する方法が明らかにされて、その対策をすべきだというリクエストのスレッドが立っていました。

スレッド主は1Passwordのようにプロセス監視を付けてほしいようですが、開発者はデスクトップの名前がランダムでDESKTOP_ENUMERATEを指定していないという回答にとどまっていました。
それで十分かどうかは私にはわかりません。

実行中のKeePass2からデータを抜き取る方法とその対策

実行中のKeePass2からデータを抜き取れるソフトにKeeFarceとKeeThiefがあります。
KeeFarceを使ってみましたが確かに抜き取れました。その対策について言及しているページがありました。

別のユーザーとして実行するか、管理者として実行することで通常のユーザー権限からアクセスを防げるとあります。
管理者として実行した場合は通常のユーザー権限のキーロガーから守ることも出来ます。
一方で管理者権限で実行するのは危険という話もあります。

また、別のユーザーとして実行するのはログオンが面倒である上にKeePass2を実行しているユーザーからは抜き取れることになるのでいい対策とは言えないかもしれません。
ところでKeePassXCにはDACLを使ってメモリダンプを作らせない実装があります。

これによって通常のユーザー権限からのメモリの読み取りも防げますが、同様に制限されたDACLでKeePass2を実行させると抜き取りを防げます。

上記エントリ内の設定を有効にしてKeeFarceを実行するとOpenProcessで失敗します。

上記ツールで実行させたKeePass2にKeeFarceを実行するとOpenProcessで失敗します。

私の見解

セキュアデスクトップが仮にセキュアじゃなかったとしても二段階認証を使えばすぐには復号できないのではないかと考えましたが、OtpKeyProvが思っているより解読に弱いということもあり得ます。私にはそれを検証する能力がありませんので、とりあえずないよりましだろうということでセキュアデスクトップと二段階認証を使うことにします。
データが抜き取られる対策はDACLのやつでいいだろうと思いますが、それでも抜き取る方法があるかもしれません。
あと、管理者権限が取られた場合はどのみちどうしようもないと思います。