攻撃者は、適切なXSS脆弱性を前提として、サーバーとの間でやり取りされるデータを使用して、誰かのセッションを乗っ取ることができます。
セッションが開始されたIPに常に排他的ではないのはなぜですか?つまり、ウェブサイトやサービスが認証されたセッションを複数のIPアドレスに永続化する必要があるのはいつですか。セッションがこれを許可する理由がわからないので、これが攻撃者にとってどのようにして実行可能なルートであるかがわかりません。
第1に、セッションをIPアドレスにリンクしても、サーバーは多くの異なるユーザーがさまざまな理由で同じIPアドレスを使用していると見なす可能性があるため、安全ではありません(すべてのタイプのプロキシサーバー、たとえば、クライアント、リバースプロキシ、CDNなど)。 )。
次に、同じユーザーが同じセッションで異なるIPアドレスを使用する可能性が非常に高くなります。たとえば、誰かが同じデバイスからネットワークを切り替えている可能性があります。
したがって、効果的ではなく、使いやすさとスケーラビリティの問題を引き起こすため、通常は有効になっている機能ではありません。
かつて、AOLはallの出口プロキシを介して内部ネットワークとインターネット間のトラフィックを積極的に負荷分散することで悪名高くされていました。これは、単一のWebページとそのコンテンツに対するリクエストが多くの異なるIPアドレスから送信されることを意味します。セッションを単一のIPアドレスに固定した場合、「ログイン成功」ページの読み込みが完了する前にセッションが中断します。
この種の負荷分散は一般的ではありませんが、誰かが「ウェブアクセラレータ」プロキシまたはあまり技術的でないISPを使用している場合にも発生する可能性があります。誰かがワイヤレスISPを使用していて、基地局を変更するたびに新しいアドレスを取得する場合など、より遅いシフトがより一般的です。
セッションを単一のIPアドレスに固定すると、セッション盗用攻撃が困難になる可能性がありますが、一部のユーザーがサービスを完全に使用できなくなり、他のユーザーに低下したエクスペリエンスを提供するという犠牲が伴います。
攻撃者は同じアドレスからサーバーに接続できます。たとえば、攻撃者と被害者が同じWiFiを使用しています。
また、サーバーへのルートが複数あり、ユーザーのIPがネットワークアドレスの移行を受けた場合、ユーザーに問題が発生する可能性があります。
セッションを特定のIPアドレスにバインドするもう1つの理由は、「ハッピーアイボール」と呼ばれるものです(そうです、本当に!)。
これは基本的に、デュアルスタック接続(IPv4およびIPv6をサポート)を使用するときに接続を確立する最良の方法を検出しようとするメカニズムです。
一部のOSはこれを非常に積極的に行っています。たとえば、OS Xは(たとえば)WebページをIPv6を介してロードし、IPv4を介していくつかのイメージをロードして、より優れたベンチマークを取得します。
そしてもちろん、IPv4とIPv6は相互に関連付けることができない完全に異なるアドレスを使用するため、IPアドレスをセッションにバインドすると、本当に奇妙なことが起こります。