webアプリケーション技術者向け、クロスサイトリクエストフォージェリ(CSRF)の原理について


webアプリケーションに対する攻撃方法で最も多いのは、クロスサイトスクリプティング(XSS)であるが、もう一つ、クロスサイトリクエストフォージェリ(CSRF)という攻撃手法がある。

webサービスを作っている技術者であれば、知っていて当然、という方もいるだろうが、原理についてよく知らない、という技術者もいるとのことで、今回は、CSRFについて、解説する。

IPAの説明によれば、CSRFとは以下のようなものである。

クロスサイトリクエストフォージェリ(CSRF)

ウェブサイトの中には、サービスの提供に際しログイン機能を設けているものがあります。ここで、ログ インした利用者からのリクエストについて、その利用者が意図したリクエストであるかどうかを識別する仕 組みを持たないウェブサイトは、外部サイトを経由した悪意のあるリクエストを受け入れてしまう場合があ ります。このようなウェブサイトにログインした利用者は、悪意のある人が用意した罠により、利用者が予 期しない処理を実行させられてしまう可能性があります。このような問題を「CSRF(Cross-Site Request Forgeries/クロスサイト・リクエスト・フォージェリ)の脆弱性」と呼び、これを悪用した攻撃を、「CSRF 攻 撃」と呼びます。

(IPA 安全なウェブサイトの作り方 https://www.ipa.go.jp/files/000017316.pdf

この説明はあまり分かりやすいものではないが、同資料の絵が比較的分かりやすい。

https   www.ipa.go.jp files 000017316.pdf

クロスサイトリクエストフォージェリは、5つの手続きにより攻撃が行われる。

1.一般の利用者が、webアプリケーションにログインする。この時点では攻撃が行われていない。

2.webサーバからセッションIDが発行され、端末が認証される。(ログイン成功)

3.利用者が、ログインを継続したまま、ほかのサイトを閲覧する。

4.その中で、悪意のある攻撃者のサイトにアクセスすると、一般ユーザーの端末に特殊なデータが仕込まれる利用者は、この段階で知らず知らずのうちに攻撃されている。が、実際の被害はまだ出ていない。

5.元のwebアプリケーションに戻って、操作を継続すると、攻撃者が仕込んだデータがサーバ側に送信され、意図しない動作が起きる。例えば、設定変更や掲示板への投稿、時にはユーザー削除なども起こりえる。

 

このように、クロスサイトリクエストフォージェリは、シンプルに言ってしまうと、攻撃者が、何も知らないユーザーに「なりすまし」て行う攻撃である。

すなわち、本来のユーザーが入力した情報と、サーバーに誤認させ、任意の攻撃者のデータを送信する、というものである。

対策としては、CSRF対策の施してあるwebアプリケーションフレームワークを使うこと。Joomlaや.net framework、ruby on railsなどは、すでに対策が施してある。

基本的にはサーバーが発行する入力フォームに、乱数を仕込むなど、「まちがいなく正規のサーバが発行したリクエストである」という合い言葉を入れておくことで対策を行っている。

 

 

(参考:JPCERTコーディネーションセンター)


関連記事一覧

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

we love develop
アプリやシステムの開発を通じて、お客様のビジネスを成長させることが私たちのビジネスです。お気軽にお問い合わせください。
 お問い合せ

お電話でのお問い合わせはこちらから
TEL:03-5297-2871

メールマガジンの登録

キャパでは誰かに話したくなるようなIT小ネタを、週に一回メルマガで配信しています。
ぜひ購読してみませんか?
 購読する

記事カテゴリ記事カテゴリ

月別投稿記事

PAGE TOP