【SC*勉強】クロスサイトリクエストフォージェリ(CSRF)

Cross-Site Request Forgeries IT

こんにちは、mokakoです。
今回は、クロスサイトリクエストフォージェリ(CSRF)攻撃について解説していきたいと思います。

1. 概要


クロスサイトリクエストフォージェリ(Cross Site Request Forgeries = CSRF)攻撃とは、そのまま略すと、交差したサイトが偽造された要求をする となります。
しかしこれでは、交差したサイトとは?偽造された要求とは?となってしまうので、イメージしやすい状況の図を使って見ていきましょう。

図 クロスサイトリクエストフォージェリ攻撃の流れ


まず、
❶プー子さんはとあるSNSにログインしています。
❷さまざまな記事を見ていると、興味を持った記事に詳細が書かれているページのURLが掲載されていたので、クリックしてみます。
❸遷移先のページには思った通りのページがありました。
❹しかし実は、クリックしたタイミングでログインしていたSNSに対し、不正なリクエストを送られています。
❺❹での不正なリクエストにより、強制ログアウトやなりすましの被害にあってしまいました。

ここでポイントとなるのはプー子さんが不正リクエストを送る対象となるSNSにログインしていた点です。ログインしているため、正規のユーザでしかできない操作を不正に行うことができます。
プー子さんはただSNSを楽しんでいただけなのに、とあるURLをクリックしただけでこのような被害にあってしまったのです。いつも見ているSNSに面白そうなサイトのURLが載っていたら普通にクリックしてしまいますよね。。私もクロスサイトリクエストフォージェリ攻撃について勉強してから十分に注意しなくてはと思いました。

2. 被害


ここは気になるポイントですが、被害を挙げると、不正操作になりますが、先ほども述べたようにログイン状態でできる操作なので、
・なりすまし
・設定内容変更
・強制ログアウト
などができてしまいます。SNSでのなりすましは、投稿内容によっては名誉毀損の冤罪や自分自身の不利益を被る恐れもあります。また、設定内容変更は自分自身の情報の公開範囲変更の恐れがあります。

このようにクリックしただけなのに大きな被害につながることがあるのです。

3. 対策


対策ですが、利用者として(上の図でいうとプー子さん)と、サイト運営者(上の図でいうとSNSの運営者)の2つの目線で、それぞれとるべき対策についてみていきましょう。

3-1. 利用者としての対策


利用者としての対策はかなり限られますが、できる対策としては以下が挙げられます。

①ログインしているサイトで不審なURLをクリックしない
②身に覚えのない操作があった場合、通報する

まず考えられるのは、①ログインしているサイトで不審なURLをクリックしないことです。今回プー子さんがURLをクリックしたことがトリガーとなり、不正操作をされてしまいました。本当に信用できる人の発信でなければクリックしないことがCSRFの対策になります。
とは言っても、興味があったら思わずクリックしてしますよね。事後対策となってしまいますが、②身に覚えのない操作があった場合、通報するが挙げられます。知らない投稿がされていたり、設定が勝手に変わっていたり不審に思った場合は、運営者や被害の規模によっては警察に通報するようにしましょう。

3-2. サイト運営者としての対策


サイト運営者としての対策は以下のものが挙げられます。

①Cookie以外のトークンを発行する
②重要な操作の際は、確定時に確認メールの送信やユーザ認証を行う

まず、①Cookie以外にトークンを発行するについて、なぜCookie以外である必要があるのかというと、性質上、CookieはWebブラウザ単位で登録されます。そのため、上のクロスサイトリクエストフォージェリの流れの図で、❹にて簡単に認証が通り、不正操作されてしまいます。ここで、ページごとにトークンを発行するような作りにしておくことによってリクエストの妥当性を確かめることができます。
次に②重要な操作の際は、確定時に確認メールの送信やユーザ認証を行うですが、入金などの重要な操作を確定する際、確定する前に確認メールで利用者に送信したり、ユーザ認証することで、操作を行っているのが本当に正規の利用者なのかを確認することができます。

補足 同一生成元ポリシーについて


ここでは私が勘違いしていたクロスサイトリクエストフォージェリ攻撃と同一生成元ポリシーについて述べたいと思います。
もともと、同一生成元ポリシー(Same-Origin Policy)はクロスサイトリクエストフォージェリ攻撃への対策だと思っていました。しかし、調べていると、それはほぼ勘違いであることが判明しました…。
すごくざっくり言うと、同一生成元ポリシーでは、図の❹を行ったあとの結果が再び攻撃者のサーバに戻ることができないだけみたいです。正直この結果を得ることを目的に攻撃していることはほぼないので、対策にはならないと言う結論でした。

かなりざっくり解釈でした。。(また別の記事で詳しく述べたいと思います。)

まとめ


いかがでしたでしょうか。クロスサイトリクエストフォージェリ(CSRF)攻撃について解説してきました。場合によってはかなり大きな被害になる攻撃かつ誰もが受けてしまいそうな攻撃なので、十分注意が必要です。近年、攻撃のレベルは上がってきているので、利用者・サイト運営者どちらの目線でもしっかり対策を行うことが大切です。

ここまで、お読みいただきありがとうございました。

コメント