この記事は、体系的に学ぶ 安全なWebアプリケーションの作り方 第2版の**3章-2 「受動的攻撃と同一オリジンポリシー」**を中心に受動的攻撃についてまとめて個人的な興味部分を深掘りした内容です。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
2011年3月刊行 「体系的に学ぶ 安全なWebアプリケーションの作り方」の改訂版。
Webアプリケーションに生じうる脆弱性とそれを生まないための対策について、プログラマー向けに解説しているタイトルです。刊行から丸7年経過し、さまざまな環境が変わってきており、最新状況にあわせた上での改訂です。
Webアプリケーションに対する攻撃の分類
Webアプリケーションに対する攻撃は、能動的攻撃と受動的攻撃の2つに分類されます。
能動的攻撃
能動的攻撃(active attack)とは、攻撃者がWebサーバーに対して直接攻撃することを指します。具体例としては、SQLインジェクション攻撃が挙げられます。
受動的攻撃
受動的攻撃(passive attack)とは、攻撃者がサーバーを直接攻撃する能動的攻撃とは異なり、Webサーバーの利用者に罠を仕掛けることで、罠を閲覧したユーザーを通してアプリケーションを攻撃する手法です。今回の**3章-3 「受動的攻撃と同一オリジンポリシー」**で取り上げられるのはこちらの手法になります。
受動的攻撃
上部で紹介した受動的攻撃のうち、本著で紹介されているパターンは以下3つです。
単純な受動的攻撃
罠サイトに利用者を誘導するパターンです。いわゆる「怪しいサイト」を利用者が閲覧してマルウェアに感染するケースになります。流れは下図になります。
現実に起きている例としては、Adobe Acrobat Reader DC・Adobe Flash Player・JREなどのプラグインの脆弱性をついた攻撃が頻繁に起きているようです。
正規サイトを悪用する受動的攻撃
正規サイトの罠が仕込まれるケースです。流れは下記になります。
このケースは、攻撃者にとっては手間がかかるものの、正規サイトの利用者の多さや正規サイトから利用者の個人情報を盗むといったメリットがあります。
代表事例:ガンブラー(Gumblar)
2010年は「ガンブラー」が猛威、「有名サイトでウイルス感染」の時代にという2010年の記事で報道されている「ウイルス感染」はこちらの事例になります。
ガンブラー感染についての詳細は、IPAの終息しない「ガンブラー攻撃」、
その対策は?というpdfにて解説されていますが、ウェブ経由でパソコンにウイルスを感染させようとする攻撃手法の一種(Drive-by download)として知られています。
サイトをまたがった受動的攻撃
罠サイトと正規サイトをまたがった攻撃を行うケースです。流れは下図になります。
このパターンの攻撃としては、クロスサイト・リクエストフォージュリ(CSRF)・クロスサイト・スクリプティング(XSS)・HTTPヘッダ・インジェクションが典型例となります。
受動的攻撃に対するブラウザでの対策
ブラウザでは利用者のブラウザ上で悪意のあるプログラムが動かないよう、安全性を高めるために、サンドボックスという考え方が使われることがあります。Javascriptではこの考え方が採用されていて以下の機能が提供されています。
- ローカルファイルへのアクセスの禁止
- プリンタなどの資源の利用禁止(画面表示は可能)
- ネットワークアクセスの制限(同一オリジンポリシー)
同一オリジンポリシー
同一オリジンポリシーについて、mozilla web docsにて下記のように紹介されています。
同一オリジンポリシーとは、あるオリジンから読み込まれた文書やスクリプトについて、そのリソースから他のオリジンのリソースにアクセスできないように制限するものです。
同一オリジンである条件
- URLのホスト(FQDN)が一致
- スキーム(プロトコル)が一致
- ポート番号が一致
アプリケーション脆弱性と受動的攻撃
アプリケーション脆弱性がある場合に受けうる受動的攻撃として、XSS(クロスサイト・スクリプティング)攻撃があります。
Trend microの下記の記事では次のように説明されています。
https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/xss.html
クロスサイトスクリプティングとは、ユーザのアクセス時に表示内容が生成される「動的Webページ」の脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。動的Webページの表示内容生成処理の際、Webページに任意のスクリプトが紛れ込み、Webサイトを閲覧したユーザ環境で紛れ込んだスクリプトが実行されてしまいます。
更に体系的に学ぶには
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版をぜひ購入しましょう