情報処理安全確保支援士試験 午後問題から学ぶ【CSRF(クロスサイト・リクエスト・フォージェリ)】

情報処理安全確保支援士試験の午後問題には、情報セキュリティに関する最新の動向を反映した題材が採用されています。

キーワードに加え、設計やインシデント対応能力をシミュレーションできる良い学びの場ですので、情報処理安全確保支援士試験合格はもちろん、情報処理安全確保支援士となった後も能力向上のために学習していきましょう。

今回は、「Webサイト間の情報連携」を題材にした「CSRF(クロスサイト・リクエスト・フォージェリ」を解説していきます。

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

CSRF(クロスサイト・リクエスト・フォージェリ)(Cross Site Request Forgeries)とは、Webアクセスを不正に操作する攻撃手法の一つです。

具体的には、以下のような流れの攻撃手法です。

  1. ユーザがWebサイトAにログイン中に、並行して、攻撃者により細工された別のWebサイトBにアクセスする。(掲示板で不正に細工されたリンクをクリックするなどによる)
  2. WebサイトBが悪意ある要求(リクエスト)を、ログインユーザの要求であるかのように偽って(フォージェリ)、ログイン中のWebサイトAに送信する。(WebサイトBからWebサイトAがクロスサイトの関係)
  3. WebサイトAで、ログインユーザの意思とは別の操作をさせられる。

ログインしていることが前提となっている攻撃であり、ユーザ権限でできる操作が全て攻撃者に実行させられてしまいます。

2012年に発生した遠隔操作ウィルス事件は、このCSRFを使って、犯人が他人のAさんのWebブラウザから電子掲示板に犯行予告を書き込み、Aさんが犯人と疑われ検挙される被害が発生しています。

利用者として被害に遭わないためには、Webサイトにログインして作業を行う場合に、その作業だけに専念して、作業後はログアウトするようにすることが必要です。

平成31年度春期情報処理安全確保支援士試験での「CSRF(クロスサイト・リクエスト・フォージェリ)」

「Webサイト間の情報連携」を題材に「CSRF(クロスサイト・リクエスト・フォージェリ)」の問題が出題されました。採点講評によると、正答率が低かったようです。

それでは「CSRF(クロスサイト・リクエスト・フォージェリ)」の問題となった部分を見ていきましょう。

 M社は、従業員数200名の小売業である。コーポレートサイトであるWebサイトA(URLは、https://site-a.m-sha.co.jp/)と、自社の特定のブランドを扱うECサイト(以下、ブランドサイトという)を複数運営している。現在運営しているブランドサイトは、WebサイトBからWebサイトFの五つである。

WebサイトB(URLは、https://site-b.m-sha.co.jp/)は、ブランドBの商品を扱うECサイトで、会員数は10万名である。WebサイトBでは、Cookieを利用したセッション管理を行っている

会員情報は、各ブランドサイトで個別に管理している

売れ筋商品情報及び会員情報を取得する機能(以下、情報連携機能という)を実装することにした。

WebサイトBからWebサイトAへの情報連携を行うために、次の二つのWeb APIをWebサイトBに実装することにした。

  • WebサイトBの売れ筋商品情報を取得可能とするためのWeb API(以下、APIーXという)
  • WebサイトBの会員情報を取得可能とするためのWeb API(以下、API-Yという)

なお、Web APIで受け渡されるデータは、JSON(JavaScript Object Notation)形式にする。Cさんは、API-Yからブランドサイトの会員情報を取得する際、配信を希望する会員の同意を得たいと考えた。そこで、会員情報の取得には、会員のWebブラウザを経由して行う方式を採用することにした。

(図1抜粋)

(Y-1)(Webブラウザ→WebサイトA)会員が売れ筋商品情報配信の申込ページにアクセスする。(会員がWebサイトBにログインした状態のときにアクセスする)

(Y-2)(Webブラウザ←WebサイトA)申込ページに加え、WebサイトBのAPI-Yを呼び出すスクリプトZが返される。

(Y-3)(Webブラウザ)会員が申込を行う。

(Y-4)(WebブラウザのスクリプトZ→WebサイトB)会員情報を取得するリクエストがスクリプトZから送られる。

(Y-5)(WebブラウザのスクリプトZ←WebサイトB)会員情報が返される。

(Y-6)(Webブラウザ)会員情報がWebブラウザに表示される。

(Y-7)(Webブラウザ→WebサイトA)申込情報と会員情報が送られ、保存される。 

スクリプトZは、Same-Originポリシによって、FQDN、スキーム、ポート番号のいずれかが異なるリソースへのアクセスが制限される。そこで、Cさんは、この制限をう回するためにJSONP(JavaScript Object Notation with Padding)を用いることを開発部のD課長に提案した。

D課長:JSONPは、アクセス先を制限する機能を持たないので、その実装では問題がある。例えば、まず、会員情報を窃取するように攻撃者がスクリプトZを変更して、攻撃者のWebサイトのページに置く。次に、被害者に①特定の操作をさせた上で、そのページにアクセスさせると、攻撃者が被害者の会員情報を窃取できてしまう

設問1(3)本文中の下線①について、操作の具体的な内容を、20字以内で答えよ。

正解:WebサイトBへのログイン

【出典:情報処理安全確保支援士試験 平成31年度春期午後1問1(一部、省略部分あり)】

会員情報を窃取するには、ブランドサイトであるWebサイトBにアクセスする必要があります。

また、WebサイトBでは、Cookieを利用したセッション管理を行っています。

これらの情報から、攻撃者のWebサイトからスクリプトZを使ってWebサイトBにアクセスさせて、会員情報を窃取するという攻撃手法を想定することができます。

これには、ユーザがWebサイトBへログインした状態であることが前提となります。

以上の内容で、CSRFを知らなくても問題文から答えが導き出せるかもしれません。

ただ、CSRFを知っておくと攻撃の流れを思い浮かべることが容易になるので、問題文の内容がイメージしやすくなると思います。

CSRF(クロスサイト・リクエスト・フォージェリ)による、攻撃者が被害者の会員情報を窃取する流れを理解するようにしましょう。