問題 29★★★

自社の会員サイトで、プロフィールが本人の意図に反して「全体に公開」へ変更される事例が相次いだ。 会員はいずれも、ログイン中に外部のゲームサイトでボタンをクリックしていた。変更の要求は 自社の設定画面から送られ、画面に埋め込んだ秘密の値の照合も通過していた。この攻撃として、 最も適切なものはどれか。

正解:イ

各選択肢の解説

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

    誤り。CSRFは、罠サイトが用意した要求を本人のブラウザから送らせる攻撃です。 要求は自社の画面を通らないので、画面に埋め込んだ秘密の値を持っておらず、照合で止まります。 照合を通過したのは、要求が本物の設定画面から送られたからです。

  2. イクリックジャッキング

    正解。ゲームサイトに自社の設定画面を透明にして重ね、ボタンの位置を合わせておけば、 会員は本物の画面を自分でクリックします。本物の画面なので秘密の値も正しく送られます。

  3. ウクロスサイトスクリプティング

    誤り。これは自社サイトの画面にスクリプトを埋め込み、閲覧者のブラウザで動かす攻撃です。 スクリプトなら秘密の値を読んで送れますが、動くのは自社の画面を開いたときです。 この場面の共通点は外部のゲームサイトでのクリックで、自社の画面の閲覧ではありません。

  4. エフィッシング

    誤り。これは本物に似せた偽のサイトに誘い、IDやパスワードなどを入力させてだまし取る手口です。 この場面では偽の画面は使われておらず、会員の情報も入力させていません。 操作されたのは自社の本物の設定画面です。

理解を深めるために

本物の画面を、見えないまま押させる

ゲームの「スタート」ボタンを押したつもりが、実はその上に透明なガラス板が置かれていて、 ガラス板に描かれた別のボタンを押していた、という仕掛けを想像してください。 押したのは本人で、押されたボタンも本物です。これがクリックジャッキングです。

なぜ秘密の値の照合では止まらないのか

  • 攻撃者は自分のサイトの中に、会員サイトの設定画面を枠(フレーム)として読み込み、透明にして重ねる
  • 会員はゲームのボタンを押したつもりで、重なった設定画面の「公開」ボタンを押す
  • 設定画面は本物なので、CSRF対策の秘密の値も画面に正しく入っており、照合を通過する

IPAの「安全なウェブサイトの作り方」は、根本的解決として、応答ヘッダ(X-Frame-Options)で 他のドメインのサイトの枠の中に読み込まれることを制限することや、処理の直前にパスワードを 再入力させることを挙げています。被害は「利用者情報の公開範囲の意図しない変更」など、 マウス操作だけで実行できる処理に限られる点を除けばCSRFと同様だとしています。

混同しやすいものとの違い

攻撃 要求を送ったのは 秘密の値の照合
クリックジャッキング 本物の画面を、本人がクリックして 通過する
CSRF 罠サイトの用意した要求を、ブラウザが自動で 止まる
クロスサイトスクリプティング 自社の画面に埋め込まれたスクリプト 対策の対象外(原因が別)
フィッシング (偽サイトに本人が入力し、情報を渡す) 関係しない

「本人がクリックした」「照合は通った」の2つがそろえば、本物の画面を重ねられたことを疑います。

前の問題へ次の問題へ