Cloudbleed:大手ウェブブランドがCloudflareのバグにより「暗号キーや個人情報を漏洩」

Table of Contents

Cloudbleed:大手ウェブブランドがCloudflareのバグにより「暗号キーや個人情報を漏洩」

更新: Google の研究者が発見した Cloudflare のバグにより、有名ウェブサイトからユーザーのプライベート セッション トークンや個人情報が他人のブラウザに漏洩した可能性があります。

後でわかるように、Cloudflare のソフトウェア ソース コード内の1 つの文字 (「 >」ではなく「 」) が、セキュリティ上の失態を引き起こしました。=

Cloudflareは、企業がウェブサイトやオンラインサービスをインターネット上に展開できるよう支援しています。プログラミング上のミスにより、数ヶ月にわたり、Cloudflareのシステムは特定の状況下で、一部のウェブページにサーバーメモリのランダムなチャンクを挿入する問題が発生していました。つまり、Cloudflareを利用したウェブサイトにアクセスした場合、ブラウザページの下部に、他者のウェブトラフィックの一部が埋め込まれている可能性がわずかながらあります。

例えば、CloudflareはUber、OK Cupid、Fitbitなど、数千ものサービスをホスティングしています。Cloudflareでホスティングされているサイトにアクセスすると、見知らぬ人のUber、OK Cupid、Fitbitセッションから機密情報が漏洩する可能性があることが判明しました。レストランで、清潔なテーブルに着席したはずなのに、メニューだけでなく、前の客の財布やハンドバッグの中身まで渡されるようなものだと想像してみてください。

この漏洩は、ウェブページに特定の不均衡なHTMLタグの組み合わせが含まれていたことがきっかけで発生しました。この不均衡がCloudflareのプロキシサーバーを混乱させ、たとえHTTPSで保護されていたとしても、他者のデータが漏洩する原因となりました。また、漏洩のきっかけとして、ウェブページが特定のCloudflareサービスを使用している必要もありました。

リーク…不運なユーザーのFitbitセッションが、別の訪問者のウェブブラウザに紛れ込んでしまう。クリックして拡大(出典:Google Project Zero)

通常、この挿入された情報はウェブページのソース内やページの下部に隠れてほとんど気付かれませんが、セキュリティ研究者によっていくつかの漏洩が発見され、漏洩したデータは Google や Bing のキャッシュや、ウェブを巡回する他のボットの手に渡りました。

タイムライン

この失態は、GoogleのProject Zeroセキュリティチームの英国人バグハンター、タヴィス・オーマンディ氏が先週、サイドプロジェクトに取り組んでいた際に発見しました。彼は、Google検索エンジンがクロールしたキャッシュページの中に、セッショントークンやAPIキー、Cookie、パスワードなど、大量のデータが含まれていることを発見しました。これらの情報は、他人になりすましてサービスにログインするために利用される可能性があります。

「発見された例は非常にひどいので、私は週末の予定をいくつかキャンセルし、日曜日にオフィスに出勤して、クリーンアップするためのツールの作成を手伝いました」と、同氏は本日、この問題を説明する勧告の中で述べた。

「Cloudflareには作業内容を報告しました。大手出会い系サイトのプライベートメッセージ、有名チャットサービスのメッセージ全文、オンラインパスワードマネージャーのデータ、アダルト動画サイトのフレーム、ホテルの予約情報など、あらゆる情報を見つけています。完全なhttpsリクエスト、クライアントIPアドレス、レスポンス、Cookie、パスワード、キー、データなど、あらゆる情報です。」

オーマンディ氏は、Googleチームが迅速に個人情報の削除に取り組み、Cloudflareも対応チームを編成したと述べた。彼は暫定的に、漏洩の原因はCloudflareのScrapeShieldアプリケーションであると特定した。このアプリケーションは、ボットがウェブサイトから情報を大量にコピーするのを阻止するために設計されたものだが、問題はそれよりも深刻であることが判明した。

Cloudflareは数ヶ月にわたり、顧客のHTTPSセッションを漏洩させています。Uber、1Password、FitBit、OKCupidなど。https://t.co/wjwE4M3Pbk

— テイビス・オーマンディ (@taviso) 2017 年 2 月 23 日

木曜日の午後、Cloudflare はこの問題に関する非常に詳細なインシデントレポートを公開しました。Cloudflare の電子メール難読化、サーバー側除外、自動 HTTPS 書き換え機能が原因だったことが判明しました。

この問題は、同社がエッジサーバー向けに新しいHTMLパーサーを開発することを決定した際に発生しました。このパーサーはRagelで記述され、機械生成のCコードに変換されていました。このコードには、ページ上のHTMLタグの不整合によって発生するバッファオーバーフローの脆弱性がありました。プログラムがメモリを上書きするのを防ぐはずの、ポインタチェックの不具合は以下です。

/* 生成されたコード。p = ポインタ、pe = バッファの終わり */
if ( ++p == pe ) _test_eof に移動します。

実際に起こるのは、otherwherepが より大きくなることpeで長さチェックが回避され、バッファが余分な情報でオーバーフローしてしまうことです。これが最終的に上記のウェブセッションリークにつながります。このバグはRagelのせいではなく、Cloudflareのステートマシンツールの使い方に起因していると言われています。

「このバグの根本的な原因は、バッファの終端への到達が等価演算子を使ってチェックされ、ポインタがバッファの終端を超えて進むことができたことだった」と、クラウドフレアのエンジニアリング責任者ジョン・グラハム・カミング氏は同社のインシデント報告書で述べた。

「== の代わりに >= を使用してチェックを行っていた場合、バッファの末尾を飛び越える動作が検出されていたでしょう。」

Graham-Cumming 氏によると、データが漏洩するには、最終バッファが不正なスクリプトまたは img タグで終了し、長さが 4 KB 未満 (そうでない場合、Nginx はクラッシュします) であり、3 つの関数が実行されている必要があるとのことです。

新しい cf-html パーサーは、2016 年 9 月 22 日に Cloudflare の自動 HTTP 書き換え機能に追加され、今年 1 月 30 日にサーバー側除外アプリに追加され、2 月 13 日に同社の電子メール難読化機能に部分的に追加された。電子メール難読化のケースでのみ、重大なメモリ漏洩が発生したようで、これがオーマンディ氏の注意を引いた。

Cloudflareは、比較的新しい機能にはキルスイッチを備えており、オーマンディ氏からの連絡を受けてから47分以内にメール難読化機能を停止しました。自動HTTPS書き換え機能についても、3時間強後に同様の措置を取りました。サーバーサイド除外機能は停止できませんでしたが、同社は3時間以内にパッチを開発したと述べています。

Cloudflareシステムのログによると、漏洩が最も多かったのは2月13日から18日の間でしたが、その期間でもCloudflare経由のHTTPリクエスト330万件のうち1件しか漏洩データが発生しませんでした。プロキシサーバーのバグは3438のドメインと150のCloudflare顧客に影響を与えたと伝えられています。同社は、検索エンジンのキャッシュが確実に消去されるまで問題の公表を控えたと述べています。オーマンディ氏は、これらのキャッシュには漏洩した機密情報がまだ残っていると考えています。

オーマンディ氏はまた、Cloudflareのバグ報奨金プログラムの最高賞品がTシャツであることにも言及した。このウェブ界の巨人は、将来的にこの点を再考するかもしれない。®

完全な開示: The RegisterはCloudflareの顧客です。Cloudflareでホストされている他のサイトはこちらに掲載されています。影響を受けたウェブサイトのいずれかをご利用の場合は、今すぐログアウトするか、セッショントークンを無効化し、必要に応じて新しいAPIキーを取得して再度ログインすることをお勧めします。

3月1日に追加更新

CloudflareのCEO、マシュー・プリンス氏は、Cloudbleedの影響についてブログでさらに詳しく述べ、漏洩した機密情報の量という観点から、この失態の深刻さを軽視しようとしています。プリンス氏は、パーサーのバグによって漏洩したデータはほんのわずかだと見積もっています。コード監査企業のVeracodeは現在、Cloudflareの情報源を精査しています。

Discover More