こちらの記事は以下の書籍を参考に執筆しました
受動的攻撃と能動的攻撃
能動的攻撃
攻撃者が直接Webサーバに対して攻撃することです。
受動的攻撃
攻撃者がWebサイトの利用者をとうして攻撃することです。
Webサイトに罠を仕掛け、罠を閲覧してたユーザを通して攻撃をします。
以下主な受動的攻撃の例を上げていきます。
単純な受動的攻撃
攻撃者がいわゆる「怪しいサイト」を用意し、ユーザが閲覧してマルウェアに感染する場合です。
正規サイトを悪用する受動的攻撃
これはサイトに罠が仕掛けられている場合です。
以下の順番で行われます。
- 攻撃者が正規サイトを攻撃して仕掛けを仕込む
- 罠が仕掛けられたサイトを利用者が閲覧する
- マルウェア感染、情報漏洩、不正操作などが起こる。
1だけを見ると能動的攻撃ですが、2、3は受動的攻撃であり、1はこれの準備であると言えます。
単純な受動的攻撃よりも手間がかかりますが、攻撃者にとって以下のようなメリットがあります。
- 罠サイトに誘導する手間がかからない
- 正規サイトは利用者が多いので被害が拡大する可能性が高い
- 正規サイトの機能を不正利用することにより攻撃者にメリットが得られる。
- 利用者側の個人情報を盗むことにより攻撃者にメリットが得られる。
正規サイトに罠を仕込む手法は以下の4つが用いられます。
- FTPなどのパスワードを不正入手してコンテンツを書き換える。
- Webサーバの脆弱師をついた攻撃によりコンテンツを書き換える。
- SQLインジェクション攻撃によりコンテンツを書き換える。
- SNSなどの利用者が投稿できるサイト機能のクロスサイト・スクリプティング脆弱性を悪用する。
サイトをまたがった受動的攻撃
罠サイトを正規サイトをまたがった攻撃です。
- 利用者側が罠サイトを閲覧する
- 罠サイトから仕掛けを含むHTMLをダウンロードする
- HTMLのし掛けが作動して正規サイトに攻撃のリクエストを送信する。
- 正規サイトからJavaScriptなどの仕掛けを含むレスポンスが返る。
ブラウザはどのようにして受動的攻撃を防ぐか
サンドボックス
ブラウザ上ではjavasctipやJavaアプレット等、サイトを閲覧した状態でプログラムを実行する機能が提供されています。javascriptなどは安全性を高めるために以下の考え方に基づいています。
- 利用者に配布元を確認させた上で利用者が許可した場合ものみ実行する
- プログラムの「できること」を制限するサンドボックスと言う環境を用意する
前者は一般的なアプリ-ケーションに用いるには利用者の負担が大きく、セキュリティ上の問題が出やすいため、提供元からのサポートが終了しつつあります。
サンドボックスはプログラムができることに制約があり、悪意のプログラムを作ろうとしても利用者に被害が及ばないよう配慮されます。
javascriptのサンボドックスでは以下のように機能が制限されます。
- ローカルファイルへのアクセスの禁止
- プリンタなどの資源の使用禁止
- ネットワークアクセ酢の制限(同一オリジンポリシー)
ネットワークについては厳しい成約があり、この制約を同一オリジンポリシーと呼びます。
同一オリジンポリシー
javascript等のクライアントスクリプトからサイトをまたがったアクセスを禁止するセキュリティ上の制限であり、ブラウザのサンドボックスに用意された制限の1つです。