web-dev-qa-db-ja.com

特定のUDP IPアドレスを偽装することはどれほど現実的ですか?

ボブが悪意のあるユーザーで、アプリケーションに別のユーザーであるアリスになりすますことができる脆弱性を見つけたとします。アリスは、IPアドレス(1.2.3.4)とローカルポート(1234)を使用して「X」サーバーに接続されています。

なんらかの方法で、アリスのIPアドレスと彼女が接続されているローカルソケット(1.2.3.4:1234)の両方を取得することができました。この情報を前提として、スプーフィングされたUDPパケットを作成し、それをドロップせずにサーバー 'X'に正常にルーティングすることは、どの程度実現可能ですか?

3
Travinsky

ここで注意すべき重要な点は、UDPはハンドシェイクプロセスを含まないため、TCPと同じ方法でUDPを使用してサーバーに厳密に接続されていないことです。つまり、サーバー自体のロジックに何らかのハンドシェイクが含まれている可能性があります。

この質問 一部のISPのコメントで示唆されているように、スイッチとルーティングデバイスは機能ソースチェックを行うため、理論的には理論的には- 可能 、実際の走行距離は異なる場合があります。

2
JonRB

ISPが使用するルールに拘束されているインターネットのようなものから自分自身を排除すると、一般的なネットワークでは、偽のUDPと真のUDPを区別できなくなります。

UDPは、混雑したスーパーでお母さんに叫んでいる子供と同じように考えてください。子供は怒鳴ることができ、お母さんは聞こえても聞こえなくてもかまいませんが、お母さんが聞いたかどうかわからないため、子供は怒鳴り続けます。親として、あなたの子供を他の人の子供と区別することができますが、他の子供があなたの子供と同じように聞こえることがあります。一人の子供の怒鳴り声をあなたのものと間違える可能性があります。あなたと子供は離れているので、子供と母親を1つの会話で確立するための「握手」は必要ありません。それは単なる騒ぎです。

UDPは事実上データを送信するだけなので、トラフィックのなりすましを妨げるものは何もありません。応答が返されませんが、アプリケーションにAliceが話していると思わせることができます。

現実の世界では、スプーフィングされたトラフィックを送信しようとしていることを簡単に識別でき、ネットワークセグメントを離れる前にドロップするだけの複数のレイヤーがあります。

2
Andrew