VPN(仮想プライベートネットワーク)を使用すると、特にリモートリソースにアクセスする場合や、コ ーヒーショップや空港などあまり信頼できないネットワークを使用している場合に、多くの利点があ ります。
近年、技術的にはあまり詳しくないが、接続時のセキュリティを向上させるために VPN を使用した い、プライバシーを懸念している、地理的制限をバイパスしたい、といったユーザーを対象とした VPN プロバイダの数が増加しています。
そのようなプロバイダが提供する重要な機能の 1 つは、VPN のセットアップが本当に簡単だという ことです。数回のクリックで簡単に設定ができるようになっています。また、ユーザーにとって使い やすいようにしたいので、ほとんどのクライアントはパスワードを保存して、クリックだけで接続する ことができます(またはラップトップが起動するたびに自動的にパスワードを設定することもできま す)。
私は「保存されたパスワード」機能に関心を持っていたので、深堀してみました。2 つの脆弱性が 見つかりました。これらの脆弱性は、責任ある開示プログラムの一環として PureVPN に開示され ました。彼らはその一つ目についてはリスクを受け入れ、二つ目についてはパッチを提供しまし た。詳細は、勧告TWSL2018-010に記載されています。
私はこれらの脆弱性を次のような仮定と条件の元でテストしました。
- PureVPN クライアントには、デフォルトインストールがある。
- 攻撃者は任意のローカルユーザーアカウントにアクセスできる。
- 攻撃者は任意のローカルユーザーアカウントにアクセスできる。
- マルチユーザー環境で別のユーザーのクレデンシャル情報を開示する場合には、その Windows マシンには一つ以上のユーザーが存在する。
この脆弱性は、PureVPN Windows クライアントのバージョン 5.18.2.0 で発見され、ベンダーに開 示されました。ベンダーはパッチをリリースしました。バージョン 6.1.0 をテストしましたが、もはや脆 弱ではありませんでした。
以下に、私が見つけた脆弱性のそれぞれについて説明します。
脆弱性 #1 - クライアントの設定ウィンドウに表示されるパスワード
未修正。ベンダーはリスクを受け入れました。
説明
PureVPN によって提供される PureVPN Windows クライアントは、ローカルの攻撃者が PureVPN サービスに正常にログインした最後のユーザーの保存されたパスワードを取得できるようにする 可能性があります。このため、ローカルの攻撃者は、Windows マシンに複数のユーザーがログイ ンしている場合に、別のユーザーの PureVPN 資格情報を取得する可能性があります。攻撃は GUI(グラフィカルユーザーインターフェイス)のみによって行われ、外部ツールを使用する必要は ありません。
PoC
パスワードを取得する手順:
- PureVPN Windows クライアントを開きます。
- 設定」に移動
- [ユーザープロファイル] タブを開きます
- [パスワードを表示] をクリックします。
証拠
図 1. ログインに関する情報を含む「設定」タブ
図 2. クレデンシャル情報を含む「設定」タブ
脆弱性 #2 - PureVPN Windows クライアントのクレデンシャルの平文スト レージ
修正済み。
説明
TPureVPN Windows クライアントは、ログイン・クレデンシャル(ユーザー名とパスワード)を平文の まま保存します。ファイルの場所は 'C:¥ProgramData¥purevpn¥config¥login.conf' です。
さらに、すべてのローカルユーザーがこのファイルを読むことができます。
PoC
パスワードを取得する手順:
- 'C:¥ProgramData¥purevpn¥config¥login.conf' にあるファイルを読んでください。
証拠
図 3. クレデンシャルが平文であるファイルの場所と内容
図 4. クレデンシャルが平文のファイルのパーミッション
最後に、いくつかの推奨事項を示します。
- Windows 用の PureVPN を使用する場合、アップデートしていない場合は、最新バージョ ンを実行していることを確認してください。
- サービス間でパスワードを再利用しないでください。
- できるだけ二要素認証を有効にしてください。
この脆弱性が存在するかどうかをテストするのに役立てるため、ここでアクセスできる Metasploit モジュールも作成しました: https://github.com/rapid7/metasploit-framework/pull/10716