コンテンツのなりすまし(Content Spoofing)とは?攻撃の仕組みと対策を徹底解説
コンテンツのなりすまし(Content Spoofing:コンテンツ・スプーフィング)とは、悪意ある攻撃者が、テキストやHTMLの注入(インジェクション)を利用して、正規のサイトに見せかけた偽のウェブページをユーザーに表示させる攻撃手法です。
検索機能などでWebアプリケーションがユーザーの入力データを適切に処理していない場合、攻撃者はこの弱点を突き、ユーザーが気づかないうちにURLへ追加のパラメータを挿入できます。その結果、ユーザーはオリジナルのページとほぼ同じ外観の別ページへ誘導され、そこで氏名やパスワード、カードの暗証番号といった機密情報の入力を求められます。入力された情報が漏えいすれば、金銭的損害や個人情報の流出など、深刻な被害につながる恐れがあります。
2種類の基本的なインジェクション手法
- HTMLインジェクション
- テキストインジェクション
HTMLインジェクション
HTMLインジェクションは、URLのパラメータを通じて不正なHTMLコードを注入し、ページの表示内容を改ざんする攻撃です。典型的な攻撃の手順は以下の通りです。
- 攻撃者が脆弱性のあるWebアプリケーションを特定する。
- 攻撃者が、細工したURL(テキストやHTMLが注入されたもの)を、主にメールなどの手段でユーザーに送りつける。
- ユーザーがそのURLをクリックすると、正規のサイトそっくりに見える攻撃者のページへ誘導される。
- 偽ページ上で、ユーザー名・パスワード・カードの暗証番号(PIN)などの入力を求められる。
- 入力された情報は攻撃者のサーバーへ送信される。
具体例
一部のサイトでは、divタグの中身などのHTMLコンテンツをURLパラメータとして受け渡しています。これは重大な脆弱性になり得ます。例えば、次のようなURLがあったとします。
www.testing.com/siteAdcontent?divMessage=<h1>Click Here!!</h1>このURLは、次のように自由に改ざんできてしまいます。
www.testing.com/siteAdcontent?divMessage=<hack><h1>Do not Click!!</h1></hack>テキストインジェクション
テキストインジェクションは、URLパラメータの値を書き換えることで、ページに表示されるテキストメッセージを差し替える攻撃です。リクエストパラメータ経由でエラーメッセージなどを表示する仕組みを持つサイトで発生します。典型的な攻撃の手順は以下の通りです。
- 攻撃者が脆弱性のあるWebアプリケーションを特定する。
- 攻撃者が、URLで渡されるパラメータの値を改ざんする。
- 不正に加工されたページへのリンクが生成される。
- 正規のWebページが、改ざんされたパラメータに従って虚偽の情報を表示してしまう。
具体例
次のようなログイン用のURLがあるとします。
www.testing.com/loginAction?userName=abc&password=123ここに、errorMessageパラメータを追加した次のようなURLを作ることが可能です。
www.testing.com/loginAction?errorMessage=PasswordEmptyこのURLにアクセスすると、本来とは異なる虚偽の内容を表示するページへ誘導され、ユーザーに混乱や不信感を与える恐れがあります。
コンテンツのなりすましへの対策
- URLパラメータやユーザー入力はすべて「信頼できないデータ」として扱い、サーバー側で厳格に検証・無害化(サニタイズ)する。
- HTMLとして出力する際はエスケープ処理を徹底し、パラメータ由来の値がそのままHTMLとして解釈されないようにする。
- エラーメッセージなどの表示内容は固定文字列に限定し、パラメータから動的に組み立てない設計にする。
- ユーザーに対しては、機密情報を入力する前にアドレスバーのドメインやHTTPS接続の有無を確認するよう啓発する。
-
HTMLのonwheelイベント属性とは?使い方とサンプルコードをわかりやすく解説
onwheelイベント属性は、ユーザーがHTML要素の上でマウスホイールを上下に動かしたときに発生し、指定されたスクリプト(JavaScript)を実行します。本記事では、HTMLドキュメントにおけるonwheelイベント属性の基本的な使い方を、サンプルコードと実行結果つきでわかりやすく解説します。 構文 onwheelイベント属性の基本的な記述方法は以下の通りです。 <tagname onwheel="script">コンテンツ</tagname> それでは、HTMLのonwheelイベント属性の具体的な使用例を見ていきましょう。 使用例 以下のサ
-
MongoDBにおけるコードインジェクション(NoSQLi)の脅威と対策を徹底解説
初出:2019年3月5日 アプリケーション開発者、データベース管理者(DBA)、あるいはあらゆる分野の技術者にとって、コードインジェクションは常に意識しておくべき脅威です。 クラウド環境は堅牢に保ち、データベースへのアクセスも厳しく制限している――しかし、アプリケーションのコードはどうでしょうか。「NoSQLはSQLより安全」と考えられがちですが、NoSQLi(NoSQLインジェクション)のNoは「インジェクション不可能」という意味ではありません。NoSQLも他のデータベースと同様に、コードインジェクションに対して脆弱になり得ます。コードインジェクションへの備えを怠るのは、玄関にセキュリティ