Webトラッキングの大規模調査―Online tracking: A 1-million-site measurement and analysis
本稿は「情報セキュリティ系論文紹介 Advent Calendar 2016 - Adventar」9日目の記事である。
ACM CCS 2016で発表されたWebトラッキングに関する論文を紹介する。なお、本記事で用いられている図表はこの論文から引用したものである。
背景と前提知識
Webトラッキングとは、オンライン上でのユーザーの行動を追跡・分析する営みのことを言う。皆さんも、ショッピングサイトで閲覧したことのある商品(またはそれに関連するもの)の広告が、別のサイトで表示された経験があるのではないだろうか。そういった現象の裏ではWebトラキングの技術が使われている。
Webトラッキングのあまり知識がない場合は、過去に#ssmjpで発表を行った時の資料を参照されたい。
Webトラッキングはターゲット広告やアクセス解析等に活用さている一方で、ユーザーのプライバシー侵害や不正広告への悪用といったリスクもはらんでいる。学術界でも近年頻繁にWebトラッキング関連の論文が発表されており、大きく分類して以下の3つの論調がある。
・Webトラッキングのメカニズム解明(新たなFingerprinting手法の提案など)
・Webトラッキングの防御(Anti-Fingerprinting手法の提案、ユーザーのプライバシーを保護した広告システムの提案など)
・Webトラッキングの実態調査(Webクローラを用いた大規模調査など)
今回紹介する論文は3つ目のMeasurement系の論文の当たる。Measurement系の研究の意義は”Transparency”を高めることにあり、それによって何らかの示唆や提言を与えることを目指している。
論文紹介
- Title: Online Tracking : A 1-million-site Measurement and Analysis
- Authors: Steven Englehardt and Arvind Narayanan of Princeton University
- Conference: ACM CCS 2016
著者らはこの論文を紹介するためのWebサイトを公開している。
ちなみにACM CCSは、情報セキュリティ系の国際会議(Security Conference Ranking and Statistic)でRank1に位置する、いわゆるTop of Topのカンファレンスである。
※記事が長くなってしまったが、忙しい人には次の「3行で概要」と「Key Findings」だけを読んでいただけばざっくりと論文を理解できるかと思う。
3行で概要
Key Findings
OpenWPM
OpenWPMは著者らが開発した、実ブラウザとヘッドレスブラウザを用いて自動的にWebクロールを行うプラットフォームである。
OpenWPMの特徴は以下のとおりである。
- Browser automation: ブラウザをプログラムによって制御する
- Stateful crawls: セッションごとにCookieやLocal Storageを保存する
- Persistent profiles: セッションをまたいでCookieやLocal Strageを維持する
- Fine-grained profiles: Flash Cookieなどの補助的な個別の情報を保持する
- Advanced plugin support: ブラウザのプラグインを使用することができる
- Detect tracking cookies: Cookie Syncで使用されるCookieを検知する
- Monitor state changes: Cookieやブラウザ情報に対するアクセスを記録する
- JavaScript Instrumentation: JavaScriptが実行可能である
OpenWPMは過去のmeasurement研究で用いられたWebクローラよりも高機能に作られており、より網羅的かつ詳細な分析が可能になっている。
こういった実態調査のためのツールは研究コミュニティで広く共有されるべきとして、著者らはOpenWPMとそのログデータを公開している。
github.com
実態調査
OpenWPMを用いてAlexaのTop100万サイトをクロールし、Webトラッキングの実態調査を行う。Webサイトにアクセスした際のHTTP request/responseやJavaScriptの実行ログを収集する。今回はトップページにのみアクセスし、エラーハンドリングのために1サイトごとに90秒のタイムアウトを設けている。
前述したKey Findingsにならって実態調査の結果を示す。
トラッキングサイトのリンク数の分布は「ロングテール型」になる
トラッキングサイトにはファーストパーティ(ユーザーが直接アクセスするサイト)とサードパーティ(ファーストパーティからリンクされている外部のサイト)に分類されるが、調査の結果、2つ以上のファーストパーティからリンクされているサードパーティが81,000サイト抽出された。下図のようにリンク数の大きい順にサードパーティを並べると、ロングテール型のグラフになる。最もリンク数の多かったgoogle-analytics.comは、ファーストパーティ100万サイトのうち、約70%という非常に広い範囲にリンクされていることが判明した。また、全体の1%(1万サイト)以上にリンクされているサードパーティはわずか123/81,000サイトしかなく、10%(10万サイト)以上にリンクさているサードパーティに至っては、Google、Facebook、Twitter、AdNexusの4組織しか存在しなかった。このことから、ユーザーは日常的にアクセスするほとんどのWebサイトで同一の組織にトラッキングさている一方で、エンカウントするサードパーティの種類はかなり限定的であることがわかった。
トラッキング対策ツールであるGhosteryが有効に働く
GhosteryはサードパーティのCookieをブロックできるブラウザのプラグインであり、サードパーティによるトラッキングを防ぐことができる。
chrome.google.com
今回の調査では、Ghosteryを用いて、すべてのサードパーティCookieのうち99.6%のCookieをブロックでき(ブロックできなかったのは237サイト)、ツールの有効性を示した。
本論文では独自のロジックでサードパーティのProminence(目立ち具合、影響度)を定量化しており、Prominenceが小さいサードパーティ(マイナーなサードパーティ)であるほど、Ghosteryの検知漏れの割合が高いことが分かった。著者らによれば、Ghosteryの検知ロジックの中にはBlacklistを用いた手法が使わているらしく、マイナーなトラッキングサイトほどBlacklistから漏れやくなっているのではないかと分析している。
Cookie Syncingが以前よりも広く利用されるようになった
Cookie Syncingとは、前提知識のスライドにもある通り、ユーザーを識別するIDを複数のサードパーティで共有し、Same-Origin Policyを超えてトラッキングができる広告システムである。トラッカーAがトラッカーBとユーザーのIDを共有したいとき、トラッカーBへのリクエストURLの中、あるいはリファラURLの中にIDを埋め込む。したがって、HTTP Request/Response をモニターすることでCookie Syncingを検知できる。
調査の結果、最も顕著なCookie Syncingサードパーティであったdoubleclick.netは、118の他のサードパーティと108のユニークなCookieを共有していることが判明した。また、主要な(Prominenceが大きな)サードパーティの大多数は、少なくとも他の1つのサードパーティとCookieを共有していた。驚くべきことに、ProminenceがTop 50のサードパーティを無作為に2つ選択したとき、両者が互いにCookieを共有している確率は約85%であることが分かった。著者らは過去にも同様の調査を行い論文を発表しているが、今回のこの数字は過去のそれよりも高く、Cookie Syncingがより広範に利用されるようになったことを示唆している。
新たなFingerprintingの発見
Webトラッキングで言うところの”Fingerprint”とは、ブラウザの種類、インストールさているプラグインやフォントの種類、スクリーンのサイズといった、端末に固有の情報の組み合わせのこと言い、毎年のように新しいFingerprintが発見さている。今回の調査ではこれまで見つかっていなかった(公に発表されていなかった)Fingerprintを用いたトラッキングを発見している。いわば「ゼロデイFingerprinting」のようなものである。
発見されたFingerprintingは以下の4つである。
・Canvas Font Fingerprinting
Canvasでフォントを指定して文字を描画した際に、画像のサイズをもとにそのフォントがインストールされているかどうかがわかり、インストール済みフォントのリストが作れる。Canvasの画像データのハッシュ値を識別子とするCanvas Fingerprintとは区別される。
・Web-RTC Fingerprinting
Web-RTCで取得できるNAT配下のローカルネットワークのインターフェースやアドレスの情報がFingerprintとして利用されていた。
・AudioContext Fingerprinting
音声を発信するAPIを使うと音声信号がソフトウェア/ハードウェアに依存して微妙に変化することを利用して、フーリエ変換後の周波数情報をハッシュ化しFingerprintとして利用していた。
・Battery API Fingerprinting
デバイスのバッテリー残量情報を利用して短時間のユーザー識別を行っていた。たとえば、ユーザーがネットサーフィンの途中でシークレットブラウジングに切り替えた際(Cookieが無効になったとき)、バッテリーの減り具合から、シークレットブラウジング切り替え前後のユーザーを紐づけることができる。
所感
・良かった点
過去のWebトラッキングのMeasurement系の論文と比較しても、かなり網羅的かつ詳細な調査を行っている。トラッキングの手法にもさまざまな種類があるが(Cookieを使ったもの、Fingerprintを使ったものなど)、それぞれを検知するのに必要十分なログが取れるようにシステムを開発している。自分もWebクローラを開発した経験があるが、OpenWPMはかなりの労力と時間をかけて作られている印象を受けた。たとえば、任意のブラウザプラグインを動かしながらクロール(ログ記録)したり、JavaScriptの実行ログをすべて記録したり、といったことは、やろうと思ってもなかなかできないことである。しかも開発したツールや収集したデータが公開されており、さすがトップカンファレンスに採択されるだけの論文だなと思った。
また、これまでのMeasurement系の研究にはない試みとして、ゼロデイFingerprintingの発見に成功している。新しいFingerprintというのはこれまで我々が想像しなかったものになるのが常であり、今回見つかったFingerprintもどれもユニークなものばかりであり、大きな驚きがあった。
・いまひとつな点(コマカイ話)
トラッキングされていることはわかっていてもそれが実際にどれほど脅威になりうるのかということはイメージしにくいが、本論文ではトラッキングサイトの影響度(Prominence)を独自の方法で定量化しそれを指標として用いている。しかし、定量化の数式についての妥当性については言及がなく、個人的にはあまり最適とは言えない印象を持った(Paperを見てもらえばわかるが、Alexa最上位のサイトのスコアが異常に高くなり、Google一強にしか見えなくなる)。おそらく「指標が何もないよりよいだろう」という心情で決め打ちで作ったのだろうけど、今後改良の余地があると思う。
また、ゼロデイのFingerprintingの検知について、どうやって見つけたのか?というと、著者らによれば「JSの実行ログを見てりゃわかる」といった言いっぷりだったが、それだけではいくらProfessionalでも膨大なログから見つけるのは難しいとおもう。おそらく「このへんがFingerprintとして狙われるだろう」というヤマを張っておいて見つけたのだろうと推測する。ヒューリスティックな方法ではなく、ある程度自動的にゼロデイFingerprintingを検知できるような手法(例えば、同じサイトのJSコードの変化を継続的に監視するなど)が共有されればなおよいと思った。
他にも、トラッキング対策ツールを他のものともっと比較検証するとよいのではないか、など、まだまだコマカイ話はあるが、今回はこの辺にしておこうと思う。