CSRFについて質問

98 views
Skip to first unread message

毛受英策

unread,
Jun 13, 2024, 8:34:39 PM6/13/24
to 「体系的に学ぶ 安全なWebアプリケーションの作り方」サポートML
お世話になります。

CSRFについて質問をさせてください。
CSRF対策として、トークンを発行させて防ぐ方法ですが、この方法で部分的に対策しても、セッションハイジャックされて
添付図の様にCSRF対策してないところから遷移していけば、突破できてしまうのではないかと、疑念を感じながら堂々めぐりな状態で考えております。

まずここまでの考え方は正しいでしょうか?

次に正しいのであれば、対策方法をご教授していだだけれると幸いです。

よろしくお願いします。

スクリーンショット 2024-06-14 9.32.45.png

徳丸浩

unread,
Jun 14, 2024, 1:28:07 AM6/14/24
to wasbook...@googlegroups.com
こんにちは、徳丸です。

CSRFの攻撃で、下図の③に対する攻撃ですね。これを②→③だとトークンチェックがあるので、①→②→③という経路で攻撃しようという意図だと解釈しました。
CSRFのテクニックで、①→②は遷移させることができ、②は購入確認画面なので、「完了」等のボタンを押したことにできれば、③が実行されることになります。
ですが、利用者のブラウザ上で「完了」のボタンを押させる手段がないので、これは保護されていることになります。仮にやるとしたら、クリックジャッキングのテクニックが使えます。なので、クリックジャッキングは別途対策されていることが前提です。

image.png
簡単に説明するとこうなりますが、わからなければ、どこがわからないか再度質問してください。




2024年6月14日(金) 9:34 毛受英策 <eisa...@gmail.com>:
--
このメールは Google グループのグループ「「体系的に学ぶ 安全なWebアプリケーションの作り方」サポートML」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには wasbook-reade...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/wasbook-readers/26c6f2f1-1b69-4c00-b436-078fa9a1f270n%40googlegroups.com にアクセスしてください。


--

毛受英策

unread,
Jun 14, 2024, 5:16:17 AM6/14/24
to wasbook...@googlegroups.com
徳丸さん、ご回答いただきありがとうございます。

>CSRFの攻撃で、下図の③に対する攻撃ですね。これを②→③だとトークンチェックがあるので、①→②→③という経路で攻撃しようという意図だと解釈しました。
>CSRFのテクニックで、①→②は遷移させることができ、②は購入確認画面なので、「完了」等のボタンを押したことにできれば、③が実行されることになります。
→ここまではOKです

>ですが、利用者のブラウザ上で「完了」のボタンを押させる手段がないので、これは保護されていることになります。
→①から侵入し②でトークンをゲットしているので、「完了」のボタンを押せて購入できてしまうと考えるので、
利用者のブラウザ上で「完了」のボタンを押させる手段がなくても、悪者が代わり完了を押せてるから意味不明です。

>簡単に説明するとこうなりますが、わからなければ、どこがわからないか再度質問してください。
→「ですが、利用者のブラウザ上で「完了」のボタンを押させる手段がないので、これは保護されていることになります。」のところがわからないです。

よろしくおねがいします。


2024年6月14日(金) 14:28 徳丸浩 <htok...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/wasbook-readers/CANJDpr_%2BZCKmiPtA1PJMigKRdgWwHR8k9bobQaq6Gxvs87gWGw%40mail.gmail.com にアクセスしてください。

徳丸浩

unread,
Jun 14, 2024, 5:21:32 AM6/14/24
to wasbook...@googlegroups.com
こんにちは、徳丸です。


>>ですが、利用者のブラウザ上で「完了」のボタンを押させる手段がないので、これは保護されていることになります。
> →①から侵入し②でトークンをゲットしているので、「完了」のボタンを押せて購入できてしまうと考えるので、
> 利用者のブラウザ上で「完了」のボタンを押させる手段がなくても、悪者が代わり完了を押せてるから意味不明です。

トークンをゲットしているのは利用者のブラウザですし、「完了」ボタンも利用者のブラウザ上にあります。なので、攻撃者は、トークンの取得も、ボタンを押すこともできません。

最初のメールで、「セッションハイジャック」という言葉がありますが、ひょっとして、既になんらかの脆弱性でセッションハイジャックされているという前提でしょうか(その前提ではないと思っています)
もしも、既にセッションハイジャックされている前提ならば、「CSRF攻撃をしなくても」利用者の秘密情報取得や機能の悪用ができます。なので、セッションハイジャックはされておらず、CSRFだけで攻撃する前提で考えています。



2024年6月14日(金) 18:16 毛受英策 <eisa...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/wasbook-readers/CAKvwW-j%3DCFSu0RavnTs7YJwxxnzDYj8VfMD9Hmuwsh7qDEb5MQ%40mail.gmail.com にアクセスしてください。


--

毛受英策

unread,
Jun 16, 2024, 10:31:37 PM6/16/24
to wasbook...@googlegroups.com

徳丸様


お世話になります。

ご回答ありがとうございます。

返信遅くなりまして申し訳ございません。



>トークンをゲットしているのは利用者のブラウザですし、「完了」ボタンも利用者のブラウザ上にあります。なので、攻撃者は、トークンの取得も、ボタンを押すこともできません。

>最初のメールで、「セッションハイジャック」という言葉がありますが、ひょっとして、既になんらかの脆弱性でセッションハイジャックされているという前提でしょうか(その前提ではないと思っています)

>もしも、既にセッションハイジャックされている前提ならば、「CSRF攻撃をしなくても」利用者の秘密情報取得や機能の悪用ができます。なので、セッションハイジャックはされておらず、CSRFだけで攻撃する前提で考えています。


→CSRF攻撃の理解が不足していたと思いますので、再確認をさせてください。


CSRF攻撃とはログイン状態の利用者が罠サイトに移動して「重要な処理」を実行させられる手法という理解で正しいでしょうか?

つまり、攻撃者はサイトを直接操作ができないという理解で正しいでしょうか?


正しい場合、②の購入確認のところで購入確定というボタンがあった場合、押させる手段がないので保護されていると理解できます。

保護されているのであれば②→③のトークンチェックは必要はないと考えられますがいかがでしょうか?


大変お手数ですが、ご回答よろしくお願いします。


2024年6月14日(金) 18:21 徳丸浩 <htok...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/wasbook-readers/CANJDpr8dPr9nfD4yxAE%3DJyzfAaCz_4%2B-mtyVj7AcE7Uu0wHnNg%40mail.gmail.com にアクセスしてください。

徳丸浩

unread,
Jun 17, 2024, 1:01:29 AM6/17/24
to wasbook...@googlegroups.com
こんにちは

> CSRF攻撃とはログイン状態の利用者が罠サイトに移動して「重要な処理」を実行させられる手法という理解で正しいでしょうか?


「罠サイトに移動して」は正しいですが、その罠サイトを起点として「攻撃対象サイトへのリクエスト」を送信する手法です。


> つまり、攻撃者はサイトを直接操作ができないという理解で正しいでしょうか?


利用者の画面を直接操作はできませんが、罠サイトから単発のリクエストを送ることはできます。


> 正しい場合、②の購入確認のところで購入確定というボタンがあった場合、押させる手段がないので保護されていると理解できます。


その通りです。


> 保護されているのであれば②→③のトークンチェックは必要はないと考えられますがいかがでしょうか?


いいえ。こちらは、本書P181「◆確認画面がある場合のCSRF攻撃」にて説明した方法でCSRF攻撃が可能なので、トークンチェックは必要です。



2024年6月17日(月) 11:31 毛受英策 <eisa...@gmail.com>:
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/wasbook-readers/CAKvwW-ibVVuD8E3_xuzHCw%3DxzQc3f9SZYFawLGbc8JqULtMvQg%40mail.gmail.com にアクセスしてください。


--

毛受英策

unread,
Jun 19, 2024, 7:59:01 PM6/19/24
to 「体系的に学ぶ 安全なWebアプリケーションの作り方」サポートML
徳丸様

ご教授ありがとうございます。CSRFの捉え方がしっかりしてきました。

また何かありましたら、お手数ですが、ご教授よろしくお願いします。

2024年6月17日月曜日 14:01:29 UTC+9 徳丸浩:
Reply all
Reply to author
Forward
0 new messages