webアプリケーションに対する攻撃は、能動的攻撃と受動的攻撃に分類される。
能動的攻撃(active attack)とは、攻撃者がwebサーバに対して直接攻撃すること。
ex.SQLインジェクション
受動的攻撃(passive attack)とは、攻撃者がサーバを直接攻撃するのではなく、webサイトの利用者に罠を仕掛け、 罠を閲覧したユーザを通してアプリケーションを攻撃すること。
罠サイトに利用者を誘導する。典型例は怪しいサイトを閲覧してマルウェア(ウイルスなどの不正プログラム)に感染すること。 ブラウザ本体や、Adoce Acrobat Reader DC, Adobe Flash Player, JREなどのプラグインの脆弱性をついた攻撃が発生している。
攻撃者はあらかじめ正規サイトを攻撃してマルウェアを仕込む。
正規サイトの利用者が仕掛けを含むコンテンツを閲覧し、マルウェアに感染する。そして情報漏洩や不正操作などが行われる。
正規サイトを悪用した受動的攻撃は、単純なパターンに比べ手間がかかるが、攻撃者にとってメリットが大きい。そのメリットは下記の通り。
正規サイトに罠を仕込む手法は次の4種
罠サイトと正規サイトをまたがった攻撃。
このパターンの特徴は、正規サイトにログインしている利用者のアカウントを不正利用していること。
3
のリクエストでセッションクッキーを正規サイトに送信するため、利用者が正規サイトにログイン状態であれば、ログインした状態で攻撃される。3
のリクエストでwebアプリケーションを攻撃するタイプがクロスサイト・リクエストフォージェリ(CSRF)、4
のレスポンスによりブラウザを介して攻撃するタイプがクロスサイト・スクリプティング(XSS)やHTTPヘッダ・インジェクション
ブラウザ上では、JavascriptやJavaアプレットなどサイトを閲覧した状態でプログラムを実行する機能が提供されている。悪意のあるプログラムが動かないよう、javascriptなどは安全性を高めるための機能を提供している。その基本的な考え方には次の2種類がある。
前者はActiveXコントロールや署名付きアプレットで採用されている考え方だが、利用者の負担とセキュリティの観点からサポートが終了されつつある。
サンドボックスは、javascriptやJavaアプレット、Adobe Flash Playerなどで採用されている考え方で、プログラムができることに制約がある。
ex.) Javascriptのサンドボックス
ネットワークについては完全な禁止ではないが、厳しい制約がある。この制約を同一オリジンポリシーと呼ぶ。
同一オリジンポリシー(same origin policy
)はとはJavaScriptなどのクライアントスクリプトからサイトをまたがったアクセスを禁止するセキュリティセキュリティ上の制限。
ブラウザは一度に複数のサイトのオブジェクトを扱うことができる。iframe
などがその例。
同一オリジンとは下記のすべてを満たすこと
FQDN; Fully Qualified Domain Name
)が一致しているクッキーに対する条件はスキームとポート番号は関係ないので、javascriptの制限のほうが厳しい。
同一オリジンポリシーによる保護対象はiframe内のドキュメントだけではない。
Ajax
の実現に使用されるXMLHttpRequest
オブジェクトでアクセスできるURLにも同一オリジンポリシーの制限がある。
ただしXMLHttpRequest
については、相手側の許可があれば、同一オリジンでなくとも通信可能なCORS
という規格が策定された。
同一オリジンポリシーにより受動的攻撃を防止しているが、アプリケーションに脆弱性があると受動的攻撃を受ける場合がある。その代表例がクロスサイト・スクリプティング(XSS)攻撃。
javascript以外でクロスドメインのアクセス許可がされているもの