web-dev-qa-db-ja.com

確立したら、localhostのソケットは安全ですか?

TCPソケットがlocalhostで確立され、acceptを使用して接続が確立されると、権限のないユーザーがバイトを傍受または変更できるようになります。この接続を介して送信されますか、またはこの接続の安全性は保証されますか?

問題のオペレーティングシステムは、WindowsとUnixの最新バージョンです。他のプラットフォームでUnixドメインソケットを使用できるため、Windowsが最も重要です。

認証(ファイルに保存された16バイトのランダムキー)を使用して、悪意のある接続が直ちにドロップされるようにします。

11
Demi

どのような場合でも、ネットワークトラフィックを低レベルで傍受および変更するには、常にユーザーがローカルマシンで上位の権限を持っている必要があるため、上記の脅威については安全です。特権のないエンドユーザーが傍受したり改ざんしたりできないしたがって、ローカル接続はセキュアと見なすことができます。

しかし、あなたの質問は、特に「特権のないエンドユーザー」の視点を少し緩めた場合に、私が少し深めたいと思う興味深い点を提起します。確かに、あなたはあなたの質問でWindowsとUnixについて言及しますが、状況はかなり異なります。

Windows(およびいくつかのUnix、つまりSolarisとHP-UX)では、最適化のため(おそらく)、ループバック通信は完全なIPスタックを経由しません。したがって、通常の状況では、傍受することはできず、さらにはローカル通信を変更することもできません。

通常の状況下」と言います。これは、Windowsホストにローカルトラフィックを近くのルーター経由でルーティングさせ、データを完全なホストのホストに効率的に移動させる可能性があるためです。 IPスタック。これは、他の方法では傍受できなかった通信を調査するために使用できますが、そのようなルーティングを実施するにはローカルマシンの管理者である必要があり、操作はまったく目立たなくなります(新しいエントリのあるルートテーブル、スイッチ/異常なトラフィックを検出するルーター、突然非常に遅くなるアプリケーションなど)。

あるいは、未加工のソケット通信にアクセスする可能性がまだあり、ローカルインターフェイスでIPスニッフィングを提供する商用ソフトウェアもいくつかあります。そのようなソリューションで通信を変更できるかどうかはわかりませんが、とにかくはるかに多くの作業が必要になるようです。この件についての詳細は Wireshark Webサイト を参照してください。

反対に、ほとんどのUnixおよびUnixライクなシステムは、他のネットワークデバイスと同じようにループバックを実装し、他のネットワークインターフェイスと同じようにループバックで発生する通信を傍受できるため、少なくとも理論的には通信を変更できます。ただし、潜在的な攻撃者がホスト上で十分な権限をすでに取得している必要があることに注意してください。このような場合、アプリケーションを悪用する簡単な方法がある可能性があります。

8
WhiteWinterWolf