クロスサイトリクエストフォージェリ(CSRF)の攻撃手順を記載します。
- 銀行ユーザのALICEが銀行のWebサイトから、BOBの口座に$100を入金することを想定します。
その時、図のようなHTTPリクエストがクライアントから銀行のサーバに送られます。 - 攻撃者は、事前にメールや掲示板で不正URLをばらまいておきます。URLをユーザが踏むと、図のようなHTTPリクエストが銀行のサーバに送られ、アプリケーションがコミット処理をすれば、MARIAの口座に$10000が振り込まれる仕組みです。
- ユーザALICEがたまたま銀行のWebサイトとセッションを張っている状態の時に、攻撃者が仕掛けたURLにアクセスしてしまうと、銀行のサーバはユーザの確立したセッションにおいて、正当なHTTPリクエストが来たと勘違いして処理するため、MARIAの口座に$10000を振り込んでしまいます。
”セッションを偽って、ユーザにコミット処理をさせる”銀行のWebサイトに、ユーザALICEのブラウザからのHTTPリクエストかどうかをチェックする実装が欠けていることが原因で本攻撃が可能になってしまいます。