はじめに
今回は、重要な処理対するセキュリティ攻撃についてアウトプットしていこうと思います!
重要な処理に対する攻撃
Webアプリケーションにおける重要な処理を、正規利用者に成り済まして攻撃者が行うことがあります!
これをCSRFと言います!
CSRF(クロスサイトリクエストファージェリ)
攻撃者がユーザーのログイン情報を盗み出しすなど、脆弱性のあるアプリケーションに対して正規利用者になりすましてリクエストを行うことです!
CSRFの脆弱性があると以下のような被害を受けると考えられます!
- 利用者アカウントが不正利用される
- 利用者のパスワードやメールアドレスが変更される
- 利用者の所持している金銭が利用される
手順はこのような感じです!
- 攻撃者は、ユーザーの情報を盗み出す悪意のあるWebサイトを用意する
- ユーザーはログインした状態で、脆弱性のあるWebアプリケーション上でログインした状態で、悪意のあるWebサイトのリンクをクリックしてしまう
- 攻撃者は抜き出したログイン情報を元に、脆弱性のあるWebアプリケーションへの不正なリクエストを行う
また、XSSとCSRFの違いとしては、XSSはクライアントサイドの脆弱性の問題であり、CSRFはサーバーサイドの脆弱性の問題になります!
CSRFの対策
CSRF対策をおっこなうべきリクエスト
CSRFの対策は全てのリクエストに行う必要はありません!
ですので、必ず対策の必要なリクエストというものがあります!
そのリクエストとは、他ユーザーから勝手に実行されては困るようなリクエストです!例としては、ECサイトの物品購入処理などが挙げられます!
正規ユーザーからのリクエストか判断する
リクエストが不正か否かを判断する手法は以下のようなものがあります!
- パスワードの再入力
- リクエストへのトークン(秘密情報)の埋め込み
トークン
トークンとは、1度だけ使用可能なパスワードのことです!ユーザーの認証などに用いられるケースが多くあります!
このトークンはユーザーのブラウザ上のみに保管されるものです!
また、トークンが存在するのは、POST、DELETE、PATCH、PUTなどのHTTPメソッドの時のみです!
ただし、XSS脆弱性やセッションハイジャック脆弱性が存在すると、このトークンについても抜き出されてしまい、CSRF対策が無駄になってしまうということです!
このことからもあらゆる面からセキュリティ対策は総合的に行う必要があります!
コメント