web-dev-qa-db-ja.com

Localhost WebSocket防御

悪意のあるアプリケーションがlocalhostのみのWebSocketサーバーを実行しているコンピューターに侵入した場合、通信にSSLが使用されていれば役に立ちますか?

もしそうなら、悪意のあるアプリがSSLで失敗する方法

  1. コンピュータを完全に制御していた
  2. 非ルートLinuxユーザーでした
  3. コミュニケーションだけを聞くことができた
3
user36556

SSLは通常役に立ちません。

攻撃者がコンピュータを完全に制御できる場合、攻撃者が勝ちます。彼はコンピュータ内のすべてのプロセスのメモリを検査および変更できます。

攻撃者が管理者以外のユーザーのみである場合、otherユーザーからのプロセスをスパイすることはできません。ただし、攻撃者が想定しているローカルホストのみの接続(またはその両方)のサーバーまたはクライアントと同じユーザーとしてコードを実行できる場合、攻撃者は関連するプロセスのRAM=を略奪する可能性があります。また、管理者ではない攻撃者を想定すると、その攻撃者がマシンに侵入できると信頼しているが、権限昇格の悪用可能なホールを見つけられなかったということを意味します。これはかなり楽観的な仮定です。

攻撃者が通信のみを聞くことができ、プロセスのメモリを見ることはできない場合、SSLはスパイを防止するため、助けになる可能性があります。ただし、これはあまり現実的なシナリオではありません。ローカルホスト接続のスパイにはローカル管理者権限が必要です。

SSLが役立つのはauthenticationです。ローカルの攻撃者は、非管理者権限で、サーバーに接続してクライアントになりすまそうとするか、その逆です。 -versa。 SSLは認証を提供します。クライアントはサーバーの証明書を検証し、サーバーがクライアント証明書を要求した場合、サーバーはクライアントの証明書を検証します。ただし、localhostでは、サーバーがソケットの反対側に誰がいるかを知るためのより効率的な方法があることに注意してください(例 getpeereid() )。

5
Tom Leek