WireGuard / CVE-2019-14899:プロトコルは実際にどれほど安全ですか?
私は何年にもわたって多くのシナリオでOpenVPNとSSHトンネルを使用してきましたが、最近、WireGuardのシンプルさとセキュリティに関して多くの話題を呼んでいます。今、私はCVE-2019-14899に関するいくつかの厄介な情報を見つけました:
L2リンク(つまり、WiFiまたはLAN)を制御する攻撃者は、特別に細工されたパケットをデバイスに送信する可能性があります。攻撃者はこれらのパケットを使用して、デバイスから発信されたTCP接続の特定のプロパティをアクティブにプローブできます。つまり、攻撃者は、インターネットへのデバイスのアクセスポイントを制御することにより、ユーザーが特定のホストとポートに接続しているかどうかを推測できます。
さらに、TCP接続がVPNトンネル内で暗号化されていない場合(たとえば、HTTPSではなくHTTPを使用するページにアクセスした場合)、攻撃者はその特定の暗号化されていないストリームにパケットを挿入できます。これにより、攻撃者はその特定のストリームの偽のHTMLコンテンツをデバイスにフィードできます。これは危険ですが、前述のように、攻撃者は特定のTCP接続を標的にする必要があるため、悪用するのは単純な脆弱性ではありません。
ソース: https://protonvpn.com/blog/statement-on-cve-2019-14899/
- この情報は技術的に正しいですか?
- Web上の一部の情報源は、サーバーのWANを制御している人なら誰でもこの欠陥を利用できると述べています。それは本当ですか?サーバーのISPはこれを悪用できますか?
情報が正しいと仮定すると:
- 「TCP接続がVPNトンネル内で暗号化されていない」場合に問題になるのはなぜですか?理論的には、VPNを使用してこの問題を回避します。つまり、2台のマシン間の通信の内容をだれも見ることができないようにします。
- クライアントのLANを制御している人がパッケージを挿入できるとしたら、これはどのようにして安全なプロトコルと見なされますか?私の控えめな信憑性の検証から、このようなシナリオでは必須です。サーバーは、盲目的に新しいデータを受け入れるのではなく、新しいデータの信頼性をチェックできる必要があります...これに対する何らかの鍵交換はありませんか?
- WireguardのWebサイトによると、「SSHとMoshのモデルを模倣しています。両者はお互いの公開鍵を持っているため、インターフェイスを介してパケットの交換を開始できます」。サードパーティ(適切なキーを持っていない)がクライアントになりすましてデータを送信し、サーバーがクライアントの実際のキーを使用してエラーなしでデータを復号化するにはどうすればよいですか?
前もって感謝します。
回答
この情報は技術的に正しいですか?
はい。ただし、以前に推奨された緩和策では阻止できない以前の攻撃の変更があることに注意してください。ブラインドイン/オンパス攻撃開示FAQを参照してください。
Web上の一部の情報源は、サーバーのWANを制御している人なら誰でもこの欠陥を利用できると述べています。それは本当ですか?サーバーのISPはこれを悪用できますか?
これは完全に異なるシナリオです。VPNエンドポイントからサーバーへの接続は、とにかくVPNによって保護されていません。攻撃者がこの部分を制御すると、はるかに簡単になり、より危険な攻撃が発生する可能性があります。
「TCP接続がVPNトンネル内で暗号化されていない」場合に問題になるのはなぜですか?理論的には、VPNを使用してこの問題を回避し、2台のマシン間の通信の内容を誰も見ることができないようにします。
攻撃は、既存のTCP接続にパケットを挿入することができます。通常のTCP接続では、攻撃によってバイパスされるこれ(つまり、ランダムな送信元ポートとシーケンス番号)に対する保護は限られています。接続が暗号化によってさらに保護されている場合、このインジェクションは機能しなくなります。「暗号化」は実際には必要でも十分でもありませんが、要点は完全性の保護であることに注意してください。ただし、TLSなどの適切な暗号化プロトコルには、整合性保護も含まれています。
クライアントのLANを制御している人がパッケージを挿入できるとしたら、これはどのようにして安全なプロトコルと見なされますか?私の控えめな信憑性の検証から、このようなシナリオでは必須です。サーバーは、盲目的に新しいデータを受け入れるのではなく、新しいデータの信頼性をチェックできる必要があります...これに対する何らかの鍵交換はありませんか?
サーバーの観点からは、データは間違っていないように見えます。つまり、ここでは何も検出できません。
WireguardのWebサイトによると、「SSHとMoshのモデルを模倣しています。両者はお互いの公開鍵を持っているため、インターフェイスを介してパケットの交換を開始できます」。サードパーティ(適切なキーを持っていない)がクライアントになりすましてデータを送信し、サーバーがクライアントの実際のキーを使用してエラーなしでデータを復号化するにはどうすればよいですか?
これは暗号化に対する攻撃ではありません。元の攻撃CVE-2019-14899は、クライアントが別のインターフェイスでプレーンデータを受け入れ、VPNトンネルインターフェイスからの復号化されたデータと同じように処理することで機能し、インジェクションを可能にしました。そのため、攻撃は実際に使用されているレイヤー3VPNテクノロジーにも依存しません。
言い換えると、OS(VPNではない)は、VPNインターフェイスから(復号化後に)送信される信頼できるデータを、別のネットワークインターフェイスから送信される信頼できない(攻撃者が制御する)データとマージしています。これは、VPNレイヤー自体に対する攻撃ではなく、VPNがOSに統合される方法です。