情報処理安全確保支援士試験 令和5年度 秋期 午後 問1
【出典:情報処理安全確保支援士試験 令和5年度 秋期 午後 問1(一部、加工あり)】
問1 Webアプリケーションプログラムの開発に関する次の記述を読んで、設問に答えよ。
Q社は、洋服のEC事業を手掛ける従業員100名の会社である。WebアプリQというWebアプリケーションプログラムでECサイトを運営している。ECサイトのドメイン名は”□□□.co.jp”であり、利用者はWebアプリQにHTTPSでアクセスする。WebアプリQの開発と運用は、Q社開発部が行っている。今回、WebアプリQに、ECサイトの会員による商品レビュー機能を追加した。図1は、WebアプリQの主な機能である。
ある日、会員から、無地Tシャツのレビューページ(以下、ページVという)に16件表示されるはずのレビューが2件しか表示されていないという問合せが寄せられた。開発部のリーダーであるNさんがページVを閲覧してみると、画面遷移上おかしな点はなく、図2が表示された。
WebアプリQのレビューページでは、次の項目がレビューの件数分表示されるはずである。
- レビューを投稿した会員のアイコン画像
- レビューを投稿した会員の表示名
- レビューが投稿された日付
- レビュー評価(1〜5個の★)
- 会員が入力したレビュータイトル
- 会員が入力したレビュー詳細
不審に思ったNさんはページVのHTMLを確認した。図3は、ページVのHTMLである。
図3のHTMLを確認したNさんは、会員Aによって15件のレビューが投稿されていること、及びページVには長いスクリプトが埋め込まれていることに気付いた。Nさんは、ページVにアクセスしたときに生じる影響を調査するために、アクセスしたときにWebブラウザで実行されるスクリプトを抽出した。図4は、Nさんが抽出したスクリプトである。
Nさんは、会員Aの投稿はクロスサイトスクリプティング(XSS)脆弱性を悪用した攻撃を成立させるためのものであるという疑いをもった。NさんがWebアプリQを調べたところ、WebアプリQには、会員が入力したスクリプトが実行されてしまう脆弱性があることを確認した。加えて、WebアプリQがcookieにHttpOnly属性を付与していないこと及びアップロードされた画像ファイルの形式をチェックしていないことも確認した。
Q社は、必要な対策を施し、会員への必要な対応も行った。
この攻撃で使われたXSS脆弱性について答えよ。
XSS脆弱性の種類を解答群の中から選び、記号で答えよ。:イ
(解答群)
ア DOM Based XSS
イ 格納型XSS
ウ 反射型XSS
XSS(クロスサイトスクリプティング)に関する知識問題です。
XSSは、攻撃者が準備したスクリプトを実行させ、複数のサイトにまたがった攻撃を行うものです。
XSSには複数の種類があり、スクリプトを配置する場所や実行させる方法が異なります。
- DOM Based XSS
DOM(Document Object Model)という仕組みによって、メールやWebサイトのリンクに配置されたURLをクリックすることでスクリプトが実行されます。 - 格納型XSS
サーバの掲示板などのデータベースにスクリプトが格納され、そのページを表示することでスクリプトが実行されます。 - 反射型XSS
メールやWebサイトのリンクに配置されたURLをクリックすることでスクリプトが実行されます。スクリプトがサーバに送られ、反射してブラウザに返ってくる動作です。
今回のXSS脆弱性は、「開発部のリーダーであるNさんがページVを閲覧してみると、画面遷移上おかしな点はなく、図2が表示された。」という記述から、格納型XSSであることが分かります。
WebアプリQにおける対策を、30字以内で答えよ。:レビュータイトルを出力する前にエスケープ処理を施す。
XSSへの対策についての知識問題です。
IPAのサイトに以下の記述があります。
「ウェブページに出力する全ての要素の対して、エスケープ処理を施す。」
ウェブページを構成する要素として、ウェブページの本文やHTMLタグの属性値等に相当する全ての出力要素にエスケープ処理を行います。エスケープ処理には、ウェブページの表示に影響する特別な記号文字(「<」、「>」、「&」等)を、HTMLエンティティ(「<」、「>」、「&」等)に置換する方法があります。また、HTMLタグを出力する場合は、その属性値を必ず「”」(ダブルクォート)で括るようにします。そして、「”」で括られた属性値に含まれる「”」を、HTMLエンティティ「"」にエスケープします。
したがって、今回の場合、レビュータイトルに埋め込まれたスクリプトを出力する際に、エスケープ処理を施すことが対策となります。
また、レビュー詳細についても同様な攻撃を受ける可能性があるので、こちらもエスケープ処理することが必要になります。