Why Cloudflare Bought Zaraz

本日、CloudflareがZarazを買収したことをご報告致します。Zarazの価値提案は、Cloudflareのミッションと合致しています。ZarazはWebをより安全で、より信頼性が高く、より速くすることを目的としています。そして、ZarazはCloudflare Workers上でそのソリューションを構築しました。言い換えれば、私たちがZarazをチームに招待するのは当然のことでした。

ゴミを出す人に注意する

Zarazの価値提案を理解するためには、人々が十分に注意を払っていない、ほとんどのWebサイトの最大のリスクの1つを理解する必要があります。そして、それを理解するために、例を使って説明します。

あなたがビジネスを運営しているところを想像してください。そのビジネスとは、例えば、薬局だとします。そこには従業員がいます。従業員には手順ややり方があります。彼らは契約社員で、雇用する前に身元調査をします。彼らは自分の仕事をきちんとこなし、あなたは彼らを信頼しています。しかしある日、誰もゴミを捨てないことに気付きました。そこであなたは、定期的にゴミを捨ててくれる人を探すようチームに依頼しました。

チームは忙しく、通常の業務に併せてこの指示を実行できる従業員はいません。しかし、ある勇敢な従業員が1つのアイデアを持っていました。彼は街へ出て、部外者を呼び止めました。「こんにちは」とその部外者に声をかけます。「あなたが毎日この道を歩いているのを見たことがあります。その時、ゴミを捨てに寄っていただけませんか?」

その部外者は「そうですね」と言い、「いいですよ?!」と答えました。

「それは素晴らしい」、そして従業員は続けます。「ビルに入れるバッジはこれです。ゴミ箱は薬局の安全区域の後ろにありますが、心配しないでください。バッジを使えば、そこに戻ることができます。あなたは信頼できそうです。よし、これはうまくいくぞ!」

そして、しばらくの間は予定通りでした。その部外者は毎日通りかかりゴミを捨てに行くという、期待通りの行動をとりました。そして、誰もゴミのことをあまり考えなくなりました。

しかし、ある日突然、薬局に泥棒が入ったのです。薬も盗まれ、患者の記録もありません。記録によると、薬局にアクセスするために使われたのはあの部外者のバッジでした。あなたは彼を探し出しましたが、彼は「最悪な事態ですが、私は関係ないんです。毎日薬局の前を通らなくなったので、私はずっと前にゴミの責任を他の人に譲ったんです」と話しました。

その後、特別なアクセス権を利用してあなたの信頼を裏切るような行為をした人物を追跡することはできませんでした。

王国への鍵

もちろん、これはおかしな話です。通りすがりの見知らぬ人を選んで、実店舗にアクセスさせる人はいないでしょう。しかし、バーチャルの世界では、これと同じようなことが常に起こっているのです。

毎日、フロントエンドの開発者、マーケティング担当者、そしてセキュリティチームまでもが、サードパーティのスクリプトをWebページに直接埋め込んでいます。これらのスクリプトは基本的なタスクを実行します。例えるなら、ゴミ出しのようなものです。正しく動作していれば、サイトに高度な機能をもたらし、マーケティングのコンバージョンを追跡し、分析を提供し、不正行為を阻止する上で貴重な存在となります。しかし、万が一悪用された場合、重大な問題を引き起こし、データを盗まれる可能性もあります。

スクリプトの設定が悪いと、ページのレンダリング速度が遅くなるということがよくあります。スクリプトをノンブロッキングにする方法はありますが、残念なことに、開発者が必ずしもベストプラクティスに従わないという現実があります。遅いWebサイトを見ると、その最大の原因は、埋め込まれているすべてのサードパーティスクリプトであることがよくあります。

しかし、これよりもずっと悪い状況になることもあります。Cloudflareで、私たちはそのような状況を実際に見てきました。2019年のことですが、あるハッカーがCloudflareが利用しているサードパーティのサービスを侵害し、cloudflare.comのページに読み込まれるサードパーティのJavaScriptを変更しました。彼らの目的は、ログインクッキー、ユーザー名、パスワードを盗むことでした。彼らは、ユーザー名とパスワードのフィールドを自動的に作成し、オートコンプリートを行うまでに至りました。

実際に注入されたコードのスニペットを以下に示します。

        var cf_form = document.createElement("form");
        cf_form.style.display = "none";
        document.body.appendChild(cf_form);
        var cf_email = document.createElement("input");
        cf_email.setAttribute("type", "text");
        cf_email.setAttribute("name", "email");
        cf_email.setAttribute("autocomplete", "username");
        cf_email.setAttribute("id", "_email_");
        cf_email.style.display = "none";
        cf_form.appendChild(cf_email);
        var cf_password = document.createElement("input");
        cf_password.setAttribute("type", "password");
        cf_password.setAttribute("name", "password");
        cf_password.setAttribute("autocomplete", "current-password");
        cf_password.setAttribute("id", "_password_");
        cf_password.style.display = "none";
        cf_form.appendChild(cf_password);

幸いなことに、この攻撃はチームによって非常に迅速に捕捉されたため、被害は最小限にとどまりましたが、サードパーティのJavaScriptの危険性が非常に高いものであることを浮き彫りにしています。クリック数をカウントするために設計されたコードが、なぜパスワードフィールドの作成まで許されるのでしょうか?

簡単に言うと、サードパーティのJavaScriptは、Webにとってセキュリティ上の悪夢なのです。一見単純な1行の変更(「このJavaScriptを追加するだけで、無料でページビューを追跡できます!」)のように見えますが、単にあなたが制御できない悪意のあるコードへの扉を開いてしまうことになるのです。

さらに悪いことに、サードパーティ製のJavaScriptは、他の知らないサードパーティ製のJavaScriptを読み込むことができ、また読み込んでしまいます。あなたがコードを埋め込むことを選択した会社を信頼していたとしても、おそらく彼らが何を含むことを選択したのか(あるいはそれについてさえ!)信頼していないでしょう。

さらに悪いことに、これらのスクリプトはいつでも変更することができます。セキュリティの脅威は移り変わるものです。Cloudflareを狙った攻撃者は、サードパーティを侵害し、Cloudflareのみを攻撃するようにサービスを修正し、アンチデバッグ機能を搭載して、開発者にハッキングを見破られないようにしようとしました。仮にあなたがCIOで、これでもまだ怖いと思わない場合は、Web開発チームに、あなたのWebサイトにどれだけのサードパーティのスクリプトがあるか質問してみてください。そのスクリプトはすべて信頼できるでしょうか?

単純な作業を処理するためにサードパーティのスクリプトを追加することは、文字通り、通りすがりの部外者を引き連れ、自分のオフィスに物理的にアクセスさせ、1日に1回ゴミを空にするために立ち寄ってもらうのと同じことです。物理的な世界では完全に危険な行為ですが、Web開発ではよくあることなのです。

部外者へのサンドボックス化

Cloudflareの解決策は徹底的なものでした。サードパーティのスクリプトをすべてWebサイトから削除するよう命じたのです。Cloudflareのさまざまなチームが懸念していました。特にマーケティングチームは、実施中のキャンペーンが成功したかどうかを評価するために、これらのスクリプトを使用していました。しかし当社では、マーケティングキャンペーンなどを可視化することよりも、自身のサービスにおける完全性を保護することの方が重要であると判断したのです。

Zarazの開発チームと出会ったのはこの頃でした。彼らは、そのような抜本的な選択は必要ないと主張しました。その代わりに、ページに挿入するスクリプトの動作を厳密に制御することができたらどうでしょうか。万が一、スクリプトに侵入されたとしても、見る権限のないものにはアクセスできないようにする。スクリプトが失敗したり、動作が遅くなったりしても、ページのレンダリングを妨げないようにすることができます。

私たちは過去半年間、Zarazのテストに費やしてきましたが、これは魔法のようなものです。Zarazは、柔軟で拡張性の高いWebの長所を生かしつつ、CIOやCISOが、サードパーティのスクリプトプロバイダーが侵害されても、セキュリティインシデントにつながらないという安心感をもって、夜も安心して眠れるようにしてくれるのです。

細かいことを言えば、もしCloudflareがZarazを実行していれば、2019年に見られた危険なスクリプトによる脅威は完全かつ自動的に排除されたはずです。攻撃者がユーザー名とパスワードのフィールドを作成する方法はなく、ユーザーのブラウザに保存されているクッキーにアクセスすることもできないのです。攻撃対象は完全に取り除かれたのです。

本日、Zarazの仕組みと、Webプレゼンスの安全性、信頼性、高速性を確保するためにZarazを使用している企業の事例をご紹介する記事を2つ公開しました。Zarazについては、企業のお客様はすぐにご利用いただけます。その他のお客様は、本日からダッシュボードで無料のベータ版にアクセスできます。

あなたがサードパーティのスクリプト開発者で、スクリプトを適切に保護していない場合、Zarazがより多くのWebに展開されるにつれて、あなたのスクリプトは動かなくなることに注意してください。現在、Cloudflareは全Webサイトの20%近くを保護していますが、近い将来、Zarazの技術によってすべてのWebサイトが保護されるようになるとかんがえています。当社は、お客様のサイトで動作するすべてのスクリプトが、最新のセキュリティ、信頼性、そしてパフォーマンスの基準を満たしていることを確認したいと考えています。そこに至るまでに支援が必要な場合は、ぜひ[email protected]までお問い合わせください。皆様を支援する準備をしてお待ちしています。

Zarazがどのように機能するか、またInstacartのようなお客様がどのようにZarazを利用してより良いWebプレゼンスを構築しているか、ぜひご一読ください。

Zarazを搭載することは素晴らしいことであり、より良いインターネットの構築を支援するというCloudflareの使命を促進します。ようこそチームにお越しくださいました。そして、Zarazをよろしくお願いします!Webをより良くするこの技術を、ぜひ手に取ってみてください。