年末年始でセキュリティ分野を学習し、年明けにウェブ・セキュリティ基礎試験(通称:徳丸基礎試験)を受験することにしました。
そこで勉強した内容を備忘録としてまとめます。
今回はクリックジャッキングについて、概要や原因・一般的な対策をまとめます。
クリックジャッキングとは何なのか?
クリックジャッキングは、利用者が攻撃対象サイトの特定のボタンなどをクリックするよう誘導して不正な操作をさせる攻撃手法です。
iframe要素とCSSを駆使してユーザーを欺き、本来クリックしたかった要素と別の要素をクリックさせます。
クリックジャッキングはどこでどうやって発生するのか?
クリックジャッキングは、攻撃者が作成した偽ページの上に攻撃対象のサイトページが埋め込まれることで発生します。
このとき埋め込まれた攻撃対象のページはiframe要素とCSSによって透明化されています。
なので利用者から見ると偽ページのボタンを押したつもりが、実はその上を覆っている攻撃対象のサイトのボタンをクリックした状態となり、本人も気づかないまま意図しない操作が実行されてしまうんです。
攻撃対象のページとしてはアカウント情報の変更や決済、投稿ページなどが一般的です。
クリックジャッキングとCSRFの違い
クリックジャッキングもCSRFも「利用者が気づかないうちに意図しない操作を実行する」点では似ています。
そこで両者の違いを整理してみました。
- ユーザーのアクション:
クリックジャッキングはクリックなど利用者が何らかのアクションを実行したことは認識しているが、実際には別の操作が行われている。CSRF攻撃の場合、利用者にアクションを実行した自覚はないが、裏では攻撃者による不正なリクエストが勝手に実行されている。 - 攻撃の実行方法:
クリックジャッキングはiframe要素とCSSを駆使してユーザー自身がリクエストを送るよう操作を誘導する。CSRF攻撃はユーザーが認証されているセッションを利用して、ユーザーの意図しないリクエストを送信することで発生する。 - セッションの活用:
クリックジャッキングはセッションの状態に関係なく発生するが、CSRF攻撃はユーザーのブラウザ上のセッション情報を利用する。
クリックジャッキングはどうやったら防げるのか?
クリックジャッキングはHTMLの仕様を悪用した攻撃のため、アプリケーション側での対策は困難です。
ブラウザ側の支援が必要になります。
具体的にはHTTP通信のレスポンスヘッダに「X-Frame-Options」を含めることで対策可能となります。
X-Frame-Optionsとは?
X-Frame-Optionsは、ブラウザがページを <frame>
、<iframe>
、<embed>
、<object>
の中に表示することを許可するかどうか示すために使用するオプションです。
X-Frame-Optionsの値は2つの選択肢のどちらを取ります。
- DENY:
どんなページもフレーム内に表示させない。<frame>
や<iframe>
を使っていないサイトではこっちを指定する。 - SAMEORIGIN:
ページ自体と同じオリジンのフレーム内でのみ表示される。サイトの一部ページで<frame>
や<iframe>
を使っているけどホストが1つの場合はこっちを指定する。
X-Frame-Optionsはクリックジャッキング対策をしたいページでだけ指定すればOKですが、全てのページに適用しても問題ありません。
クリックジャッキングの保険的な対策
クリックジャッキングの対策としてはX-Frame-Optionsの指定が最大の対策です。
それ以外の保険的な対策として、処理の実行後に、登録済みメールアドレスに通知メールを送信することも役立ちます。
万が一クリックジャッキング攻撃を受けたとしても、利用者が攻撃を素早く認識し、被害を最小限に食い止めることができるからです。
まとめ
クリックジャッキングの概要と対策について理解できました。
コメント