やさしいネットワークとセキュリティ

情報処理安全確保支援士、ネットワークスペシャリスト、技術士として、資格取得を目指す方に有益な情報を発信します。

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

 情報処理技術者試験、情報処理安全確保支援士試験の午後問題を通じて、情報セキュリティの知識を体系的に蓄積していきましょう。

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

 今回は、「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を利用しているようです。