SafeInCloudロックパスワードマネージャーからマスターパスワードを取得する

この記事を読んだ後、同様の脆弱性について別のパスワードマネージャーを調査したいと思いました。

記事へのコメントで、 Dark_Angelは質問をしました。
SafeInCloudはどうですか?


この調査は、SafeInCloud v.19.0.2の無料のWindowsバージョンで実施されました。

私が最初に製品に会ったとき、彼は私に非常に良い印象を与えました。
ただし、さらなる調査により、まったく同じ脆弱性が明らかになりました。

1Passwordとは異なり、SafeInCloudはロック状態(最初のロック解除後)でもすべてのパスワードをクリアテキストで保存します

データベースからパスワードを取得するには、アプリケーションのメモリを読み取るだけです。 データの難読化はまったくありません! マスターパスワード(および他のすべてのパスワードとエントリ)は、ユーザーがロックした場合でも、データベースの最初の正常なロック解除後に上書きされることはありません。

次の場合、パスワードが漏洩する可能性があります。

+任意のソフトウェアのバグレポートを送信します。 多くの場合、開発者はデバッグ目的ですべてのアプリケーションのメモリをダンプします。
+自分だけでなくコンピューターを使用する場合。
+サイバー犯罪者がコンピューターに物理的にアクセスする場合。
+マルウェアを開始するとき。
+メモリの内容がスワップに入る可能性があります。
+その他...

Windowsアプリケーションは.netで記述されているため、ソースコードの分析が大幅に簡素化されます。



アプリケーションは.netで記述されています

データベース(XDatabase)の復号化に成功すると、復号化されたデータベースとマスターパスワードは、DatabaseModelクラスのシングルトンインスタンスのクラスフィールドとして保存されます。



データベースとそこからのマスターパスワードでフィールドを設定する

ユーザーがアプリケーションをロックした後でも、すべてのエントリとパスワードはクリア形式でメモリに保存されます。 マスターパスワードは、その横にクリアテキストで表示されます。



パスワードはPasswordプロパティに保存されます。_databaseは、復号化されたデータベースを含むXDatabaseクラスのフィールドです。


XML形式のデータベース。

アプリケーションの再ロック解除時に、基本チェックが実行されます。



ユーザーが入力したパスワードがメモリに保存されているパスワードと一致する場合、ロック解除は完了します。

マスターパスワードの抽出を自動化するために、単純なSafeInCloudExtractorユーティリティが作成されました。
ユーティリティは、データベースファイルへのマスターパスワードとローカルパスを抽出します。

どのパスワードマネージャーを使用していますか? コメントを書いてください!

更新 問題を報告した後、SiCの作者は非常に否定的な批判をしました(up辱まで)。 ユーザーからの圧力を受けて、「ハッカーに対する保護」を備えたベータ版がリリースされました。 つまり、SafeInCloudExtractorユーティリティから保護されています。 問題は解決されたようです! パスワードはメモリから消去されます。 ただし、これはそうではありません。理由は次のとおりです。
SiCの更新バージョンでは、すべてのパスワードもメモリに保存されます。 コードの分析を複雑にするために、難読化ツールが適用され、IsDebuggerPresentチェックが追加されました。 パスワードはメモリ内にクリアテキストで保存され、保存されます。 著者は何に対して防御すべきか理解していないようです。 問題を修正する代わりに、PoCは無効になりました。 ほとんどの場合、作成者はセキュリティ関連のソフトウェアを開発するために必要な資格と知識を持っていません。 警戒してください!

Source: https://habr.com/ru/post/J444904/


All Articles