web-dev-qa-db-ja.com

XSS攻撃によって抗CSRFトークンが侵害された場合はどうなりますか?

興味深いスタックオーバーフローの質問 「CookieはトークンをXSS攻撃から保護しますか?」 はあまりにも広範に締め切られましたが、コメントで述べたように、「私のアンチ- CSRFトークンはXSS攻撃によって侵害されていますか? ";この質問への回答は、Stack Overflowで提起された質問について人々が意見を形成するのに役立つ情報を提供する可能性があるように思えます。したがって、私は上記の具体的な質問を提起しています。

Double Submit Cookiesメソッドを使用していて(私が知らないより良い方法がない限り)、JWT(認証トークンなど)をHttpOnlyのセキュアなCookieに格納しているとします。

以下のセキュリティスタック交換ページが関連します。

更新:

私は反CSRFメソッドの詳細を読んでいて、 このOWASPページ Double Submit Cookiesメソッドを代替のSynchronizer Design PatternおよびEncrypted Token Patternと比較し、その強さの点でそれを述べました彼らは次のように注文できます:

  1. シンクロナイザー(CSRF)トークン
  2. 二重Cookie防御
  3. 暗号化されたトークンパターン

(OWASPは、1。はセッション状態を必要とするが、2。と3.はサーバー側の状態を必要としないことも述べています。暗号化トークンパターンが実際にステートレスかどうかについては、 暗号化トークンパターンの活用 。この記事では、1。と2.の不足についても説明しています。これにより、明らかに新しいセキュリティ上の懸念やアーキテクチャ上の問題を引き起こすことなく解決されます。そのため、OWASPが防御力の点で3番目に挙げた理由はわかりません。おそらく、それとダブルサブミットCookieの両方が比較的新しいため、現時点で受けたテストの量が原因である可能性があります。おそらく、記事のコメントでのステートレス性/ステートフル性とリプレイ攻撃保護についての議論が原因でしょうか?その順序の説明があったらいいですね。)

とにかく...シンクロナイザトークンパターンまたは暗号化トークンパターンが代わりに使用されているという代替の仮定の下で誰かがこの質問に応答したい場合は、それでうまくいきます。

7
Daniel

誰かがあなたのサイトにXSSを持っている場合、anythingがそのOriginで必要な-フォームの送信、操作の実行などを行うことができます。JavaScriptは、DOMを任意の方法で変更したり、フォームを送信したり、変更したりできます。ユーザーのビューなど.

したがって、CSRFトークンを盗むことは、心配することの最も少ないことです。XSSは、CSRFが許可するものと同じオリジン上のすべてのものを許可します。これについて心配するのは、同じCSRFトークンを複数のオリジンで共有する場合のみです(これは、最初から不適切な方法です)。

8
David

XSSを使用すると、攻撃されたユーザーのDOM(特に)への読み取りおよび書き込みアクセスが可能になります。たとえば、機密データを読み取ったり、フィッシング攻撃を実行したりできます。

しかしif CSRFトークンを読み取ることができなかった(もちろん可能です)-そして、セッショントークンを読み取ることができない-場合、サーバー内のサーバーへの書き込みアクションを実行できませんでした攻撃されたユーザーの名前。それでもサーバーに対して読み取りアクションを実行できるため、現在ユーザーに表示されていない機密データを取得できますが、物事を変更するアクションは実行できません。

しかし、whenアンチCSRFトークンが危険にさらされている場合、攻撃者はチャレンジ/レスポンスメカニズムによってさらに保護されていない任意のアクションを実行する可能性があります(これは、たとえばパスワードや電子メールアドレスを変更する場合によく見られます。通常、現在のパスワードの入力が必要です)。

だから、心配する必要はないと言う人には反対です。アンチCSRFトークンを危険にさらすと、攻撃者は、サーバーへの読み取り専用アクセスを、攻撃されたユーザーの名前で読み取り/書き込みアクセスにアップグレードするため、はるかに大きなダメージを与えることができます。 XSSの脆弱性があると、トークンの侵害を防ぐことができますできません

3
tim