Cloudflareプロキシに対するリクエストのごく一部で、無関係なリクエストからパスワードなどの機密情報を含む可能性のあるデータがリークする、バッファオーバーフローのバグが発生した。‘Cloudbleed’と命名されたこの問題を発見して報告したのは、GoogleのProject Zeroに所属する脆弱性研究者のTavis Ormandy氏だ。バグフィックスの適用とサーチエンジンのキャッシュのクリアが実施されたことを受けて、CloudflareのJohn Graham-Cumming氏が、事の詳細を説明したブログ記事を公開した。一部の機密データがリークしたものの、Cloudflareの創設者でCEOのMathew Prince氏は、‘現実的な影響は間一髪で回避できたと思う’、とツイートしている。
釈明のブログ記事、および同社CEOのMathew Prince氏からユーザに宛てたEメールでは、Nginxの別インスタンスで分離して使用されていたことを理由に、SSL秘密鍵が無事であったことが強調されていた。今回のリークは、ユーザのリクエストを処理するためにCloudflareが使用しているNginxプラグインの組み合わせによって発生した。新たなプラグインを導入したことにより、フォーマットの不正なHTMLに関する特定の機能を含むリクエストの一部において、古いプラグインが潜在的に抱えていた問題を顕在化させたのだ。
今回の問題は、2017年2月13日から18日のCloudflareプロキシを経由した、3,330,000HTTPリクエストに付いて1つのリクエストに影響を与えたと推定されている。これはオッズとして‘宝くじ当選’に匹敵する、とセキュリティ専門家のTroy Hunt氏は自身の記事‘Pragmatic thoughts on #CloudBleed’で述べている。ただし、この問題には2つの面がある – ひとつは、リークを起こすサイトがリークバグを顕在化させたサイトの無実の犠牲者であること、もうひとつは、サイトがリークの犠牲であるかどうか(これはCloudflareを使用したサイトと参照ユーザの両方に当てはまる)に関して、‘チケットをチェックする’方法が存在しないことだ。氏は、ブログなどの公開サイトの参照やホストが心配する必要のないことに関して、説得力のある主張をしているが、デートや口座などの機密情報を持つサイトの状況は同じではない。AgileBitsがワンパスワードが安全であったことの証明に腐心する一方で、Monzoは、潜在的に影響を受けるのがAPIを使用する開発者のごく一部である点を指摘している。
サーチエンジン上のキャッシュデータ – 161ユニークドメインからの770リクエストが捕捉されている – の削除が完了するまで、Cloudflareは警告を差し控えていた。この削除は、検索エンジンのキャッシュに存在するプライベートデータの悪用を防止する目的で行われたものだ。CloudflareとGoogleが当初から協力して作業にあたったにも関わらず、この問題の対処方法には疑問の余地がある上に、削除作業は当初考えていたほど簡単ではなかった。
Graham-Cumming氏のブログ記事は、同社の事後対応において包括的なログが大きく活用されたことが、問題の範囲と規模、是正措置の特定を可能にした点を指摘している。間一髪で回避できたというPrince氏の見解が実現したのは、Cloudflareと同社の顧客であるサービス提供者だけでなく、Webユーザ全般のおかげでもあるのだ。Cloudflareは全Webトラフィックの10%以上を提供していると推定されているので、私たちのほとんどは、Cloudflareに関わるものを使用せずに1日を過ごすことはないと言える。バグがこれほど明確でなかったならば、遠からず発覚することにはなったにせよ、Cloudflareとその顧客が被るダメージははるかに大きなものになっただろう。Webユーザとアクセスするサービスとの間で’中間者’として動作する、Cloudflareのようなサービスを利用することによって生じるリスクは、それを利用しない場合 – 集団免疫が集団感染の土台となる可能性 – との比較によって把握する必要がある。このコインの反対側は、自社のインフラストラクチャで発生したこのような障害に対して、Cloudflareが今回行なったような迅速かつ徹底的な対応が可能な組織は極めて少ない、という点だ。同社がグローバル機能フラグ(global feature flag)を利用したことなどによって、問題を発生させたスタック部分を短時間で更新することが可能になったのだ。
このような問題の後で生じる共通的な疑問は、‘パスワードを変更すべきか?’というものだ。(リスク回避という)コンセンサスからはイエス – 後悔よりも安全、ということになる。しかし現実には、何らかの機密情報が悪用可能な形でリークした可能性は極めて低い(マルウェアなど他の方法によって同じような機密情報がリークする確率よりもはるかに低いだろう)。Cloudflareを含む広範なセキュリティコミュニティは、今回の件で多くのことを学んだ。しかしながら、セキュリティクリティカルなインフラストラクチャにおいて、C言語のような安全でない言語が引き続き利用される以上、同じような問題が再び起きることは間違いない(そしてその中心には、そう、gotoがある)。
この記事を評価
- 編集者評
- 編集長アクション