たった一文字のミスがとんでもないことに。

ドメイン名サーバシステムやコンテンツデリバリーネットワークを提供する企業のCloudflareが、ほんの僅かなコードのバグによって、パスワード、個人情報、メッセージ、クッキー、その他諸々の膨大な情報をインターネット中に流出していたことが判明しました。｢Cloudbleed｣と名付けられたこの脆弱性をご存知なかったという方は、続きを読んだ方がいいかもしれません。これはかなり深刻な出来事なのです。

Googleのセキュリティ分析チーム、Project ZeroのメンバーであるTavis Ormandy氏が脆弱性を報告した直後から、世界でも有数のオンラインセキュリティ企業であるCloudflareは即座に対策に動きました。彼らによれば、Ormandy氏の最初のツイートから44分後には漏洩を止めたそうです。

問題は、Ormandy氏からバグの報告を受けるまで、Cloudflareのサービスを使っていたウェブサイトは何ヵ月もデータが漏洩していたのです。同社によると、漏洩が始まったのは2016年の9月からだそうですが、彼らがコードを修正する前に悪質なハッカーが脆弱性に気付いて悪用していたのかは今のところ不透明です。

Cloudflareの顧客には様々な大手オンラインサービスが名を連ね、Uber、OKCupid、1Password（1Passwordはユーザーのデータは安全だと発表しましたが）、FitBitなども含まれています。つまり、センシティブな個人情報が想像を絶する量で漏れてしまった可能性があるのです。

Cloudbleedのように大きなセキュリティの脆弱性は、被害の全貌が見えてくるまでに時間がかかります。とりあえず私たちは、パスワードを変えるべきでしょう。もちろん全部。そして可能であれば二段階認証を導入しましょう。そこまでしなくても、と思う方はまだ続きを読んでください。この一件がどれだけ深刻で、なぜ徹底した防衛策が必要なのかがわかるでしょう。

そもそもCloudflareとは?

Cloudflareという名前には馴染みがないかもしれませんが、私たちが好んで使うオンラインサービスの多くは彼らの技術を使っているのです。Cloudflareは自分たちを｢オンラインパフォーマンス・セキュリティ企業｣と呼んでいます。元々はスパムの発信源を追うアプリだけでしたが、現在ではあらゆるサービスをウェブサイトに提供しています。例えばコンテンツデリバリーや、ドメイン名サーバシステム、更にDDoS攻撃に対する防衛などのセキュリティサービスも提供しています。

彼らがセキュリティ企業である、ということが今回の騒動をより皮肉にしています。様々な企業が、お金を払ってCloudflareにデータを守ってもらっているわけですからね。まさに今回は、その真逆が起きたわけです。

｢私の調査をCloudflareに知らせました。大手デートサイトのプライベートメッセージや、某有名チャットサービスの会話全文、パスワードマネージャーのデータ、アダルトビデオサイトの動画のフレーム、ホテルのブッキングなどのデータが発見されたのです。私が言っているのは、HTTPSリクエスト全文、クライアントIPアドレス、レスポンス全文、クッキー、パスワード、キー、データ、全てということです｣とOrmandy氏は勧告書に記します。また彼によれば、2月中の5日間だけで、3,438のドメインからデータが流出したそうです。

Cloudbleedの仕組み

少しでも事情が分かる人であれば、Cloudbleedは興味深いかもしれません。というのも、Cloudflareのコードのたった一文字が脆弱性につながったからです。悪質な行為があったというよりは単純なコーディングのミスのようですが、判明した事実から見るに、Cloudbleedは情報が特定のプロセスの最中に漏れるところが少しHeartbleedに似ています。被害の規模に関しても、多くのウェブサイトで使われている一般的なセキュリティサービスが影響を受けるので、Heartbleed並の規模になる可能性があります。

Cloudflareの公式ブログによると、そもそもの事の発端はHTMLパーサーを｢cf-html｣に変更したことでした。HTMLパーサーとは、コードを読み取って開始タグや終了タグなど必要な情報を抽出するアプリケーションです。これによってコードの変更が簡単になります。

Cloudflareがcf-htmlのソースと、以前から使っていたパーサー、｢Ragel｣のソースを自分たちのソフトウェアに対応させるために書き直したことで問題が発生しました。コードのちょっとしたミス（｢>=｣であるべきところが｢==｣だった）から｢バッファオーバーフロー｣が起こったのです。つまり、領域に限りがある、一時的なデータの格納場所である｢バッファ｣にソフトウェアがデータを書き込み続け、メモリを使い切ってしまった後に別の場所にデータを書き込んでしまうということです（より詳細な説明はCloudflareのブログにあります）。

簡単に言えば、Cloudflareのソフトウェアはデータを正しい場所に書き込んでいたのですが、そこが完全に埋まってしまったので、結局別の場所…例えば、全然違うウェブサイトにデータを書き込んでしまったのです。上記のとおり、データにはAPIキーやプライベートメッセージなども含まれます。しかもデータはGoogleや他の検索サイトにキャッシュされているので、Cloudflareはハッカーがそれらを見つける前に全て削除しなければなりません。

自分も被害に遭ったのか?

どのサイトが被害に遭ったのかは依然不透明です。Cloudflareによればデータ漏えいに繋がったリクエストはごく少数だったそうですが、6ヵ月もの間野放しになっていた以上、どれだけの情報が漏洩したのかはわかりません。さらに、あらゆるサイトでキャッシュされているということは、漏洩を止めた後も残ったデータを消すために全てのサイトと協力せねばなりません。問題はそれだけではなく、Cloudflareのサービスを使っていないサイトでも、Cloudflareユーザーが多く利用している場合、漏洩したデータがサイトに残っているかも知れないのです。

起業家でありセキュリティ専門家でもあるRyan Lackey氏は、ブログ投稿で参考になるアドバイスをしています。彼の会社、CryptoSealは2014年にCloudflareに買収されました。

CloudflareはUber、FitBit、OKCupidなどの大手ウェブサービスに技術を提供しています。なので、自分の使っているどのサービスがCloudflareを使っているのかを調べようとするより、この機会に全てのパスワードを変更すべきでしょう。また、今回のアップデート後にはモバイルのアプリを一度ログアウトし、再ログインしてください。それと、もし可能であれば、大切だと思うサービスには二段階認証を使うといいでしょう

パスワードを変えるのは本当に面倒な作業ですが、こういう問題のあるなしに関わらず定期的に変更すべきものです。また、できるものは全て二段階認証にしておくのは、ハッカーに対する最善の防護策です。もちろん、ネット上では本当にセキュアなものなど存在しないし、二段階認証を行っているものですらCloudbleedは漏洩してしまうかも知れませんが…。

Lackey氏によれば、今回の漏洩で一個人が被害を受ける確率は低く、フィッシングなどの方がより危険だそうです。またCloudflareは、漏洩の起きたサイトの多くは｢忘れられたWordPressブログ｣だとしています。しかしLackey氏は、この問題が最も恐ろしいのは、これがあくまで些細なレベルであるということだと言います。

｢これはCloudflareにとって最も小さなレベルの漏洩です。ということは、それより多少大きなレベルの漏洩でも、インターネット全体の脅威になりかねません｣とLackey氏。確かに、たった一文字の間違いでここまでの問題になるなら、一行のコードに問題が出たらどういうことになってしまうのでしょう?

Cloudflareのようなバックボーンのシステムに関して、私たちが対策出来ることはほぼありません。できることは、とにかく自己防衛に努め、定期的にパスワードを変えたり、二段階認証を導入したりして、ハッキングを未然に予防することくらいでしょう。なんかもう、サバイバルスキルを身に着けて山にでもこもらないと、完全なプライバシーはなさそうですねぇ…。

・気をつけて！ ブラウザの自動入力から個人情報がごっそり盗まれるかも

image: Cloudflare / Gizmodo

source: The Resister, agilebits, Cloudflare, Medium

Adam Clark Estes - Gizmodo US［原文 1, 2］

（scheme_a）