事例の概要#

Playpenは、Torのonionサービスとして運営されていた児童の性的虐待画像を共有する掲示板である。米司法省の発表によれば、2014年8月に開設され、運営者と15万人を超える会員がこのサイトを使っていた。被害を受けた子どもたちへの配慮から、この記事ではサイトの中身には一切触れない。扱うのは、FBIが訪問者の実IPをどうやって得たかという捜査手法の構造と、そこから一般の利用者が引き出せる防御だけである。

この事件が匿名性の教材として特異なのは、Torの通信経路そのものは最後まで破られていない点にある。第8巡回区控訴裁判所の判決(United States v. Horton)は、FBIがサーバーを掌握してサイトの通信を監視できる状態になっても、利用者は依然としてTorの暗号化に隠されていたと書いている。サーバーを押さえても、訪問者が誰なのかは分からなかった。

そこでFBIは、サイトを閉じずに運営を続け、ログインした訪問者のコンピュータに「NIT(Network Investigative Technique)」と呼ぶコードを送り込んだ。NITは訪問者のコンピュータに識別情報を集めさせ、Torを通さずにFBIのサーバーへ送らせた。特定の4経路の総論でいう「エンドポイント侵害」の代表例であり、4経路のうち道具の欠陥が直接の入口になるのはこの経路だけだ。

タイムライン#

時期出来事出典
2014年8月運営者がPlaypenをTorのonionサービスとして開設司法省発表、FBI
2014年9月FBIが捜査を始めるHorton判決
2014年12月外国の捜査機関から、Playpenの実IPが米国内を指しているとの情報がFBIに届く。FBIは、運営者自身の不手際で実IPが露出したと説明しているEFF、FBI
2015年1月FBIがサーバーに到達し、サイトの内容をバージニア州東部地区の政府施設のサーバーへ移すHorton判決
2015年2月19日運営者が自宅の捜索を経て逮捕される司法省発表
2015年2月20日バージニア州東部地区の治安判事がNITの令状を発付Horton判決、Levin判決
2015年2月〜3月FBIがサイトを約2週間運営し、ログインした訪問者にNITを送るLevin判決、EFF
2016年2月17日ワシントン州の連邦地裁がMichaud事件で、NITのコード全体を弁護側に開示するよう政府に命じるMozillaの参加申立書
2016年5月11日Mozillaが同事件に参加を申し立て、脆弱性を被告より先にMozillaへ開示するよう求めるMozillaの参加申立書
2016年9月16日陪審が運営者を有罪と評決司法省発表
2016年11月30日Tor Browser利用者を狙った別のFirefox脆弱性(MFSA2016-92)の修正版が公開されるMozilla、Tor Project
2016年12月1日連邦刑事訴訟規則41条(b)(6)が施行され、所在が技術的手段で隠された端末へのリモート捜索令状が認められるHorton判決、Levin判決
2017年3月政府がNITの詳細を開示せず、Michaud事件の起訴が取り下げられるAP
2017年5月1日運営者に禁錮30年の判決司法省発表
2017年7月24日第8巡回区がHorton事件で、令状は治安判事の権限を超えていたが善意の例外により証拠は排除しないと判断Horton判決
2017年10月27日第1巡回区がLevin事件で、善意の例外を理由に証拠排除の決定を取り消すLevin判決

規模を示す数字は、出典ごとに範囲と時点が違う。EFFによれば、政府は世界中で1,000台を超えるコンピュータにNITを感染させたことを認めており、少なくとも137件の事件が起こされた。137人という数は2017年3月のAP報道とも一致する。司法省は2017年5月の発表で、米国内で少なくとも350人が逮捕されたとしている。国外の逮捕数は、同じ発表では520人以上、FBIの記事(2017年5月4日時点)では548人で、数字がそろわない。

特定はどうやって進んだか#

サーバーを押さえても利用者は見えなかった#

onionサービスでは、訪問者とサーバーの間に複数のTorリレーが挟まり、サーバー側から見えるのはTorの回線だけになる。Horton判決が書いているとおり、FBIはサイトを自ら運営する立場になっても、訪問者の実IPを通信から直接読み取ることはできなかった。通信の経路としてのTorは、この事件で破られていない。

なお、サーバーの所在が割れたのは訪問者側の問題ではない。FBIの説明では、2014年12月に運営者が不手際(原文は「slipped up」)でサイトの実IPを露出させたことが発端だった。具体的に何を誤ったのかは、FBIの記事には書かれていない。こちらは総論の4経路でいう「運営者のOPSEC失敗」にあたり、onionサービスを運営する側の対策の話になる。本記事が追うのは、そこから先、訪問者がどう特定されたかである。

NITが集めた7項目#

第1巡回区のLevin判決によれば、令状がFBIに取得を認めた情報は次の7つだった。

  1. コンピュータの実際のIPアドレスと、NITがそれを判定した日時
  2. 他のコンピュータのデータと区別するためにNITが生成した固有の識別子
  3. OSの種類・バージョン・アーキテクチャ
  4. そのコンピュータにNITがすでに届いているかどうか
  5. ホスト名
  6. 有効なOSのユーザー名
  7. MACアドレス

IPアドレスだけではない点に意味がある。IPアドレスは回線の契約者を指すが、ホスト名やOSのユーザー名、MACアドレスは、後で押収したコンピュータが確かにその1台だったと照合する材料になる。Horton判決は、NITがIPアドレスを超えて「コンピュータの中身」を取り出した以上、令状が必要な捜索にあたると判断している。

NITが動いた構造#

公開資料が説明しているのは、ここまでの構造である。Levin判決によれば、NITはFBIが運営するサーバーに設置され、サイトのコンテンツに追加の命令を付け加えた。ユーザー名とパスワードでログインした訪問者がそのコンテンツを読み込むと、命令も一緒にダウンロードされ、訪問者のコンピュータに7項目をFBIのコンピュータへ送らせた。EFFはNITを、展開ごとに識別子を作って配る部分、脆弱性を突いて入り込む部分(エクスプロイト)、情報を集めて送る部分(ペイロード)の3つに分けて説明している。送信はTorネットワークの外で行われ、データは暗号化も認証もされていなかったという。

エクスプロイトが突いた脆弱性について、EFFは「Tor Browserに同梱されたFirefoxのコード」の脆弱性だったと「考えている」と書くにとどめている。Mozillaは2016年5月の参加申立書で、この脆弱性がFirefoxのコードにある未知の、まだ修正されていないかもしれない脆弱性だと考える理由があると述べ、政府はそれがMozillaの製品に関わるかどうかさえ答えなかったと記している。翌年、Michaud事件では政府がNITの詳細を開示するより起訴の取り下げを選んだとAPは報じている。参照できた公開資料の範囲では、どの脆弱性が使われたかは特定されていない。

なぜ実IPが送れたのか#

ここからは、上の事実から読み取れる構造についての当サイトの整理である。Tor Browserが実IPを隠せるのは、ブラウザの通信をTorのプロキシに通す設計になっているからだ。ところが、ブラウザの欠陥を突いたコードがコンピュータの上で動き出すと、そのコードはブラウザの設定に従う必要がない。OSのネットワーク機能をそのまま使えば、Torを通らない普通の接続を自分で開ける。EFFのいう「Torネットワークの外で」の送信は、この構造で説明がつく。

つまり、Torという「経路」は健全なまま、経路の手前にある「端末」が乗っ取られた。端末が自分の実IPを知っていて、外へ直接つながる経路を持っている限り、端末が乗っ取られた時点で経路の匿名性は意味を失う。

どうすれば防げたか#

最初に断っておくと、Playpenで使われた脆弱性は公開資料の範囲では特定されていない。だから「最新版に更新していれば防げた」とは言えない。Mozillaが申立書で書いたとおり、修正前の未知の脆弱性だった可能性がある。この事件から引き出せる防御は、一つの対策で止めるという発想ではなく、入口を狭め、入られたときの被害を小さくする層の重ね方になる。

対策この型の攻撃に対して何を変えるか限界
Tor Browserの更新修正済みの脆弱性を突かれる期間を短くする修正前の未知の脆弱性には効かない
セキュリティレベル(Safer / Safest)スクリプトなど攻撃に使われやすい機能を止め、狙える面を減らす機能を止めた範囲にない脆弱性は残る。多くのサイトが正しく表示されなくなる
JavaScriptの無効化ブラウザの攻撃の多くが前提にする実行環境を取り除くPlaypenのコードが何を前提にしていたかは公開資料では確認できない
Whonix(ゲートウェイとワークステーションの分離)ワークステーションのVMが乗っ取られても、そのVMは実IPを知らず、外へ直接出る経路もない設計ゲートウェイ、ホストOS、ハードウェアの侵害までは防げない
Tails(すべての通信をTorに通すOS)アプリが直接外へ通信する経路を塞ぐアプリを乗っ取った攻撃者が追加の脆弱性を使えば、匿名性が崩れうると開発元自身が書いた例がある

2016年の脆弱性で見る「更新」と「セキュリティレベル」の効き方#

Playpenの脆弱性は公開されていないが、同じ型の攻撃が2016年に表に出ている。Mozillaは2016年11月30日のアドバイザリMFSA2016-92で、FirefoxのSVGアニメーションの処理にあった解放済みメモリの使用(CVE-2016-9079)を公表し、この脆弱性を使ったエクスプロイトが、WindowsのFirefoxとTor Browserの利用者を狙って実際に使われているのが見つかったと書いた。誰が使ったのかについて、アドバイザリは何も述べていない。

Tor Projectは同じ日にTor Browser 6.0.7を公開し、この脆弱性はすでにWindowsで実際に悪用されていると説明した。OS XやLinux向けの同種のエクスプロイトは把握していないが、元の欠陥はそれらにもあるとも書いている。そして、セキュリティスライダーを「High」に設定していた利用者は、この脆弱性から安全だったと考えられるとした。

この件は、更新とセキュリティレベルの役割分担をよく示している。悪用が見つかった時点で修正はまだ存在せず、更新は「見つかった後」の窓を閉じる手段だった。悪用が始まってから修正が届くまでの間、守りになったのはセキュリティレベルの設定だった。現在のTor Browserでは、セキュリティレベルはStandard・Safer・Safestの3段階で、Saferでは非HTTPSのサイトでJavaScriptが無効になり、SafestではすべてのサイトでJavaScriptが既定で無効になる。2016年当時の「High」と現在の段階の細かな対応は、本記事では確かめていない。設定の使い分けはTor Browser実践ガイドで扱っている。

実IPを持たない構成#

更新とセキュリティレベルは、攻撃が入ってくる確率を下げる対策だ。これに対して、入られた後に何が送り出されるかを変えるのが構成の対策である。

Whonixは、Torへの接続を受け持つ「ゲートウェイ」と、ブラウザなどのアプリを動かす「ワークステーション」を別々の仮想マシンに分ける。Whonixの説明では、ワークステーションは自分の外部IPアドレスを知らず、root権限を持つマルウェアでも利用者の実IPは見つけられない。Whonixは同じページで、過去のTor Browserの欠陥による漏えいからWhonixの利用者は守られていたとも述べている。ただしこれは開発元の説明であり、ゲートウェイやホストOSが侵害された場合までを保証するものではない。

Tailsは、インターネットへのすべての接続を、後から入れたソフトも含めてTorに通すと説明している。ただし、Tailsは1台のOSの中でアプリとTorを動かす構成で、Whonixのようにアプリの動く環境から実IPを切り離す設計とは違う。Tails 6.12の発表は、Tails 6.11以前では、すでにTails内のアプリを乗っ取った攻撃者が、Onion CircuitsとTor Browserのラッパーの脆弱性を突けば、匿名性が崩れる("might lead to deanonymization")おそれがあったと書いている。アプリが乗っ取られた時点で保護が保証されるわけではなく、Tailsが守るのは、乗っ取られていないアプリの通信がTorの外に出ないことまでだ。Tailsはほかに、ウイルスに感染したコンピュータからインストールした場合や、キーロガーのような悪意あるハードウェアが付いたコンピュータでは、利用者を守りきれないとも明記している。

どちらの構成も、NITが送ろうとした7項目のうち「実IP」を外へ出しにくくすることを狙っているが、保護が成り立つ範囲は違う。Whonixは、ワークステーションのVMが乗っ取られても実IPがそのVMの中にないことを設計の前提にしている。Tailsは、すべての通信をTorに通すことで直接の経路を塞ぐが、乗っ取られたアプリが別の脆弱性と組み合わさった場合まで防げるとは開発元も言っていない。各OSの選び方はOS選びの記事にまとめた。

脅威モデル別の教訓#

この経路が他の3経路と違うのは、利用者の行動の失敗ではなく、道具の欠陥が入口になる点だ。ただし、欠陥を突く側には費用がかかる。Playpenでは、FBIがサイトそのものを運営し、令状を取り、未知の可能性がある脆弱性を使った。その脆弱性を守るために、政府は起訴を一つ取り下げることまで選んでいる。

一般の利用者にとって、この事件から取り込むべきことは単純で、続けることの方が難しい。Tor Browserを自動更新のまま使い続け、知らないサイトを開くときはセキュリティレベルを上げる。アドオンを足さず、ブラウザの外で開くファイルにも注意する。

ここから先は推測になる。PlaypenとMFSA2016-92の2件は、どちらも特定のサイトの訪問者に向けて使われたとみられ、未知の脆弱性という高価な道具を一般の利用者に無差別に使う動機は乏しいと考えられる。ただし、悪用が公になった脆弱性は、修正されるまでの間に誰でも使える道具になりうる。更新とセキュリティレベルの設定は手間が小さく、脅威モデルを問わず省く理由がない。

国家機関を相手にしうる記者や活動家、研究者にとっては、この経路の優先度が上がる。2016年12月の規則改正で、米国では所在が技術的手段で隠された端末に対するリモート捜索の令状が明文で認められた。Playpenの令状が争われた管轄の問題は、法の側で解消されている。この立場なら、更新とセキュリティレベルに加えて、Whonixのように実IPを端末に持たせない構成までを検討するのが合理的だ。ブラウザの欠陥は、利用者がどれほど慎重に振る舞っても突かれうるからである。

onionサービスを運営する開発者にとっての教訓は、サーバーが押さえられれば、そのサイト自体が訪問者を狙う配布元になりうるという点だ。Playpenで、FBIは押収したサーバーのコンテンツに命令を付け加えるだけでNITを届けた。正当なサービスであっても、サーバーが第三者に乗っ取られれば同じ構造が成り立つ。運営者は、サーバーの所在を守る対策に加えて、自分のサイトが訪問者に何を配っているかを検証できる状態を保つ必要がある。

出典#