Mission

送金APIをCSRFから守れ

オンラインバンキングの送金APIは、ログイン中のユーザーからのPOSTリクエストを内容だけで受け付けてしまう。攻撃者は罠ページに隠しフォームを置くだけで、被害者のブラウザから本人の名義で送金リクエストを送らせることができる。攻撃テストでトークンなしのリクエストが通ることを確認し、CSRFトークンの発行と検証を入れる方向へコードを修正しよう。

送金APIがリクエストの出元を確かめておらず、ボディの値だけで処理してしまっています。サーバー側でトークンを発行し、状態を変更する操作のたびにそのトークンを検証する方向の修正を目指します。

脆弱性

CSRF

難易度

Easy

状態

available

Difficulty

出題モードを選ぶと、プレビュー有無・ヒント・スコア上限が変わります。

現在ステップ: Step 1状態: 未開始

次にやること: 攻撃テストを実行

Step 1

攻撃テスト

外部サイトを模してトークンなしの送金リクエストを送り、本人の残高が動いてしまうことを確認しましょう。

Lightweight Preview

Banking Transfer / mvp-0.1

POST /transfer

static

Payload

POST /transfer {to:'user-2', amount:1000} (X-CSRF-Token なし)

この問題は低メモリ公開版では軽量プレビューです。検証は静的パッチ判定で行います。

自動攻撃で検証

未実行

$ automated-attack

使用ペイロード: POST /transfer {to:'user-2', amount:1000} (X-CSRF-Token なし)

ボタンを押すと、左のプレビューを手動で操作しなくても 脆弱性の有無を即座に判定します。

実際の脆弱アプリケーションに対して攻撃を実行し、防御を検証します。