Same-Originポリシ・クロスサイトリクエストフォージェリ【情報処理安全確保支援士試験 平成31年度 春期 午後1 問1 設問1】

情報処理安全確保支援士試験 平成31年度 春期 午後1 問1 設問1

問1 Webサイトのセキュリティに関する次の記述を読んで、設問1〜3に答えよ。

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

 WebサイトAは、ブランドサイト全体のポータルサイトでもあり、各ブランドのキャンペーン情報などを掲載している。会員専用の機能は有していない。

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

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

【各ブランドサイトからWebサイトAへの情報連携】

 今回、各ブランドサイトの売上数を基にした、ブランド別の売れ筋商品情報を、WebサイトA上で表示するとともに、希望があれば、各ブランドサイトの会員に電子メールでも定期的に配信することにし、そのために売れ筋商品情報及び会員情報を取得する機能(以下、情報連携機能という)を実装することにした。具体的な機能は次のとおりである。

機能1 WebサイトAが各ブランドサイトの売れ筋商品情報を取得する。

機能2 希望する会員に電子メールを配信するために、WebサイトAは、当該会員の会員情報を取得する。

    なお、配信の申込みは、WebサイトA上で行う。

 情報連携機能の実装は、開発部のCさんが中心になって進めることになった。まず初めにWebサイトBからWebサイトAへの情報連携を行うために、次の二つのWebAPIをWebサイトBに実装することにした。

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

・WebサイトBの会員情報を取得可能とするためのWebAPI(以下、API-Yという)

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

 WebサイトBからWebサイトAへの情報連携機能を図1に示す。

f:id:aolaniengineer:20200507170049p:plain

【情報連携機能の実装についての検討】

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

a:Same-Originb:FQDN、c:スキーム、d:ポート番号

 スクリプトZは、WebサイトAからWebブラウザに返され、WebサイトBにリクエストするものです。

 WebブラウザのJavaScript実行環境においては、あるWebサイトのスクリプトから、そのサイトとは異なるドメインのWebサイトのデータは読み込むことはできません。

 これをSame-Originポリシ(SOP、同一生成元ポリシ、同一オリジンポリシ)といいます。

 同一かどうかチェックするパラメータは、URLに含まれるスキーム、FQDN、ポート番号です。

 「WebサイトA(URLは、https://site-a.m-sha.co.jp/)」と「WebサイトB(URLは、https://site-b.m-sha.co.jp)」では、FQDNが異なり、同一オリジンではない(クロスオリジンという)ことになります。

Cさん:API-Yからの会員情報の取得にJSONPを用いるつもりです。

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

Cさん:JSONPの代わりに何の技術を用いればよいでしょうか。

D課長:CORS(Cross-Origin Resource Sharing)を用いるのがよいだろう。

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

①について、操作の具体的内容を、20字以内で答えよ。:WebサイトBへのログイン

 会員情報を窃取するには、ユーザがログインした状態であることが前提になります。

 この代表的な攻撃はクロスサイトリクエストフォージェリです。

 この問題の場合、被害者がWebサイトBにログインした状態で攻撃者のWebサイトにアクセスさせることで、偽スクリプトZを実行させます。これによりWebサイトBから被害者の会員情報を窃取できてしまいます。

 問題文に「WebサイトBでは、Cookieを利用したセッション管理を行っている。」とあるように、会員情報を識別するためにCookieを利用しているようです。