Edgioポッドキャスト:ゼロデイ脅威の特定と緩和
Andrew Johnson(アンドリュー・ジョンソン): 今日は、デジタルビジネスに影響を与えているセキュリティトレンドについて詳しく説明します。 このエピソードの司会進行は、アンドリュー・ジョンソンです。 本日は、ゼロデイ脅威について、具体的にどのように特定して緩和するかについて説明します。 本日の解説は、エンジニアリング担当副社長のDave Andrews Edgio(デイヴ・アンドリュース)氏とEdgioの主任研究員であるMarcel Flores(マルセル・フローレス)氏が参加します。ようこそデイブ そしてマルセル、Edgioでの役割について、少し教えていただけますか?
デイヴ・アンドリュース: もちろんです。 私はエンジニアリング担当副社長です。エッジプラットフォームや、エンジニアリングの観点から見た多くの中央インフラストラクチャを担当しています。
アンドリュー・ジョンソン: ありがとうございました
マルセル・フローレス: 私はマルセル・フローレスです。 私はEdgio Labsの主任研究員で、Edgioの研究グループに所属しています。 私のチームは、厳格な研究開発を行い、より広範なシステムおよびネットワーク研究コミュニティと連携することで、ネットワークのパフォーマンス、信頼性、および運用を向上させることに取り組んでいます。
ゼロデイとは何か?
アンドリュー・ジョンソン: 本日は参加いただきありがとうございます。今回はゼロデイ脅威について話し合いますが、まずはゼロデイ脆弱性と攻撃が何かについて、リスナーの皆さんに基本的な背景をお話しします。ここで言う「ゼロデイ」とは何か?基本的に、アプリケーション、ビジネス、サービスはソフトウェアで構成されており、そのソフトウェアはオープンソースコードや商用コードベース、さまざまなプロトコルなどから成り立っています。完璧なソフトウェアは存在せず、時折、そのコードに脆弱性が検出されます。ゼロデイとは、脆弱性が発見されてからパッチが提供されるまでの期間、またはその対策が講じられるまでの期間を指します。したがって、開発者は脆弱性を知ったら、できるだけ早くパッチを適用するか、またはそのソフトウェアの顧客やユーザーが悪用を防ぐために取れる対策を教えます。しかし、私が話したように、これはなくならない問題です。CVE(共通脆弱性と露出)の数は毎年約25%増加しており、2022年は2021年に比べて増加しています。脆弱性が見つかることは驚くべきことではありません。コードベースを迅速にスキャンするAIツールがありますし、脆弱性を見つけるための財政的インセンティブも、良い行為者にも悪い行為者にも存在します。良い行為者の側では、バグ報奨金プログラムがあります。
例えば、AppleがiPhoneのコード修正を頻繁に行っているのをご存じでしょう。善良なホワイトハットリサーチャーがこれらの開発者にエクスプロイトを提出し、悪意のある行為者もまた脆弱性を悪用しています。そういった背景が少し分かっていただけたと思いますが、最近話題になったものとしては、HTTP2/Rapid ResetやLog4j、Spring4Shell、数年前にはApache Struts 2の脆弱性がアメリカ国内外で大規模なデータ漏洩を引き起こしました。これがゼロデイ脅威についての簡単な背景ですが、次にデイブにエッジオと顧客をゼロデイ脅威からどのように保護しているかについてお聞きしましょう。
Edgioはゼロデイ脅威から自社と顧客をどのように保護しますか?
デイヴ・アンドリュース: もちろんです セキュリティとは本質的に多層防御のことだと思います 特定の対策だけに頼ることはありません。複数の防御層を組み合わせて確実に実施することが重要です。もし一つや二つの層が不完全であっても、他の層が保護してくれるため、全体としての防御が成り立つわけです。ですので、一つの対策が失敗しても他に五つの対策が待機していて守ってくれます。まずは、準備という概念から考えてみましょう。その準備には少なくとも3つの異なる側面があります。私が最初に思いつくのは「セキュリティ基準の維持」という側面です。良好なセキュリティ基準の維持は非常に重要で、関心領域を縮小するのに大いに役立ちます。では、「セキュリティ基準の維持」とは具体的に何を意味するのかというと、主に2つの要素があります。1つはソフトウェアを常に最新の状態に保つこと、つまり定期的なパッチ適用です。これは世界で最も退屈な作業かもしれませんが、最も重要で効果的な防御手段の一つと言えるでしょう。これにより、アンドリューが話していたように、良心的なホワイトハットの研究者が見つけた脆弱性を開示し、ベンダーがそれを修正し、修正版を展開することができます。
基本的に知られている攻撃手法を利用しているソフトウェアから得られるすべての利益を享受できます。退屈だからといって必ずしも簡単なわけではありません。特にエッジオのような規模で働いていると、定期的に全てのソフトウェアをアップグレードする際に伴うリスクを管理することは非常に困難です。後ほど見るように、それをより安全で容易にするための多くの運用上の対策を行っています。しかし、この対策は「セキュリティ基準の維持」という範疇にかなり明確に位置付けられます。次にこの範疇に入るのがスキャンです。ここでの重要なポイントは、悪意のある行為者が見つける前に問題の兆候を積極的に探すことです。
この取り組みには様々な形態があります。内部のセキュリティチームや情報セキュリティチームが担当することもありますし、外部の専門業者にスキャンを依頼することも、またその両方を組み合わせることもあります。多くの組織では、バグ報奨金プログラムを活用して、ホワイトハットのルートを選んでほしいと奨励します。これにより、脆弱性を見つけて、私たちや特定の関係者に報告することができ、それが積極的に悪用される前に修正されます。このような活動は、「修正可能なものは先に修正する」という方針の一環として位置付けられます。つまり、インターネットやソフトウェアを一般的により安全にするために、コミュニティ全体が行っている良い仕事を活用するのです。そして、自社のアプリケーションを積極的に見て、脆弱性を見つけて可能な限り先手を打って修正します。
次に、準備に関する次のセクションについては、マルセルにバトンタッチしますが、それは可観測性について説明します。
マルセル・フローレス: ありがとうデイブ このようなケースの多くでできるもう1つの重要なことは、ネットワークやインフラストラクチャで何が起こっているのかを確認できることです。 これは大きく二つのカテゴリーに分けられますが、基本的なアプローチは同じであり、明確にすることが重要です。 ネットワークに入ってくるリクエストや、それらのリクエストの特徴、形状、通常時と特定のイベント時の状態を理解することが重要です。インターネット上でのコミュニケーションは、フルスタックオペレーションで行われるため、各リクエストがアプリケーション層だけでなく、より低いレベルのプロトコルを通過することを念頭に置く必要があります。
各要求は、アプリケーション層と下位レベルのプロトコルの両方を通過します。 ですから、スタックの下で何が起こっているのかを監視することが重要です。 また、下位レイヤーレベルのシステムからの複雑な動作や応答が、これらのアプリケーションレイヤーの動作では十分にキャプチャされていない可能性があることを理解してください。 そのため、両方の要素を追跡し、両方のケースで何が起こっているのかを観察できるようにすることが重要です。 特に、トラフィックが変化するとき、つまり予想に反するトラフィックが観察されたときの理解が鍵となります。たとえば、HTTPのPOSTリクエストがGETリクエストに比べて突然増加するなど、通常と異なるアプリケーションリクエストの特徴が見られることがあります。
これはHTTP2のようなプロトコルの複雑な部分や、さらに下位レベルのことかもしれません。TCPソケットがどうなっているか、そのレベルでのプロトコルの相互作用がどのように行われているかを考えることが特に重要です。DDoS攻撃のように特定の脆弱性を悪用しようとする攻撃を考えるときにはなおさらです。これらの脆弱性に対する「可観測性」は、何が起こっているかを見るための指標を持つことだけでなく、これらの振る舞いを掘り下げて理解し、適切に区分けする能力も含まれます。特定のユーザー層が特定のトラフィックを生成しているかどうかを理解することで、何がどのように発生しているかを具体的に把握できます。
アンドリュー・ジョンソン:: それは興味深いですね。 では、これらの異なるタイプの行動やゼロデイと思われるものを観察した後、運用上どのようなステップを踏むことができるでしょうか。
ゼロデイ脅威を軽減するために、どのようなステップを実行すべきか?
デイヴ・アンドリュース: はい、それについてお答えします。マルセルが話した2つの要素は本当に基礎となります。最初の1つは、トレンドを見ることで、これは一方の視点から見ると、全体的なものを集約して見ることになります。全体的にどう見えるか、そして変化を非常に迅速に特定できるようにすることがそのポイントです。第二の部分は、深掘りして、どのレベルで何が変わったのか、それがリスクであるかどうかを理解する能力に関連します。インターネットはまさにワイルドウェストで、常に変化が起こっています。新しい振る舞いが常に発生していますが、それらすべてがセキュリティ問題とは限りません。したがって、より広範な集約された情報を持つことで、もっと微妙な問題を理解し、何が変わったのか、なぜ変わったのかを明確にし、その判断を下すことができます。たとえば、「大丈夫、これは新しい顧客が何かをしているだけだ。」または、「これは実際に問題があるかもしれない。調査が必要だ。」という判断が下せます。
そこから一歩離れて、何が起こったのか、それが問題かどうかについての理解を深めます。そして、何をすべきか?
具体的にはどのように対応するか?そして、私たちが「運用上の敏捷性」と呼んでいるこの領域について、いくつかの高レベルのテーマを考えています。それは応答性、安全性、そして冗長性です。それぞれに少し時間を割いて説明しますが、応答性とはその名の通りです。セキュリティの観点から問題が発生した場合、時間は非常に重要です。攻撃者に大混乱を引き起こす時間を最小限に抑え、清掃のための最大限の時間を確保するために、セキュリティ問題を非常に迅速に解決することが求められます。私たちの目標は、セキュリティ問題だけでなく、すべての種類の運用変更を行う際に、インフラの99.99%に5秒以内に到達することです。
それが目標です。常にその目標を達成できるわけではありませんが、多くのサブシステムはその目標を満たしています。安全性は運用の敏捷性と考えるには少し変わったテーマかもしれません。この点について少し詳しく説明します。非常に迅速に対応するということは、完璧な可観測性と問題が何であるかの完璧な理解を前提として、変更に対する反応を完璧に予測できるということです。それは素晴らしいことですが、理解が不完全な場合もあり、非常に迅速に問題を悪化させる可能性もあります。
誰も望まないことですが、安全性に関する全体のポイントは、システムやプロセス、自動化など、多くの要素を導入して、事態を悪化させないようにすることです。これは非常に高レベルな数点に集約されます。最初に、予防的なモデリングが挙げられます。これは特に基本的なキャパシティプランニングに非常に重要です。例えば、何らかの理由で機器を本番環境から外してパッチを適用する必要がある場合、サービスを再起動する必要があるためです。非常に迅速に対応しようとすると、現在経験している負荷に対して多くの機器を本番環境から外してしまうリスクがあります。これは事前に知ることができます。
そのため、ワークフローシステムと統合された多くのモデリングシステムを持っており、できるだけ早く全てをパッチするようなリクエストが来た場合でも、すぐにすべてのサーバーを本番環境から外さないようにしています。基本的な安全システムを構築し統合することで、自らの足を撃つことから自分自身を守ることができます。したがって、その観点から物事を悪化させないという前提で、純粋なキャパシティプランニングやインフラの観点からも、私たちは変更がアプリケーションレベルやそれが何であれ、意図した効果を持つことを知りたいと思っています。
このために私たちは、「コールマイン」と呼ぶシステムを活用しています。これについては以前ブログや公の場で話したことがありますが、基本的には「カナリア」と呼ばれるものを使用します。
ここでのポイントは、どんなに状況が切迫していても、全世界的に一斉に何かが起こることはありません。何かを実行するためには最低2段階が必要です。まず、インフラのサブセットに導入します。通常、最も顕著に問題が発生している、または最も目立つインフラストラクチャです。それが期待通りの動作をすることを確認し、その後すぐにより広範囲に展開します。つまり、全体的な問題がグローバルレベルで解決されるかを検証します。
したがって、「コールマイン」とカナリアはメトリクスと監視システムと密接に統合されており、一目で何が起こっているかを相関させることができます。これにより、リアルタイムのフィードバックが得られ、私たちが行っている変更が実際に問題に対処していることを示します。
これは非常に便利です。現在、私たちは内部で準備を進めており、後に顧客とその設定変更のために製品化する予定ですが、基本的に完全自動化されたメトリクス分析を行っています。現在のところ、このような変更を行う際には、人間がそこに座ってそれを見て、正しいことが起こっているか、関心のあるメトリクスが正しい方向に動いているかを確認する必要があります。そして基本的にカナリアを進め、システムに「素晴らしい、最初のフェーズに合格しました。全てが良好です。カナリアのグローバルフェーズに進んでください」と伝えます。これはセキュリティ運用変更だけでなく、システム全体を通じてすべての変更にこのシステムを活用します。
そして、情報が多くなるにつれて、私たちのセールスポイントに対する可視性が高まり、メトリクスや情報が増えていきます。これにより、人間がチェックしなければならないデータが増加し、その負担が限界に達しています。そのため、人間はミスをしやすくなっています。グラフやチャートが多すぎるため、人々は疲れやすく、完璧ではないためです。そこで私たちは「バードウォッチャー」というシステムを導入します。これは基本的にカナリアを監視し、変更が行われるにつれてメトリクスに対して洗練された統計分析を行い、それが成功か失敗かを示します。このシステムは「コールマイン」と統合されており、カナリアが期待通りに機能しているかどうかを自動的に知ることができます。
また、期待していない悪影響が出ていないかも確認でき、そのロールアウトは人間の介入なしに進行します。これにより、私たちの対応速度がさらに速く、より安全になることを非常に楽しみにしています。私たちが安全性について話すときに考慮する主なことは、問題を迅速かつ安全に解決できる能力です。最後に触れたのは冗長性で、これは比較的自明です。私たちは可能な限り多くの変更に対して基本的に2重のパスを利用し、展開します。2重のパスとは、基本的に速い「ベストエフォート」と遅い「信頼性の高い」の2つの経路を意味します。私たちは世界中の非常に異なる場所に広大なインフラを運用しており、数秒で100%の信頼性を持って全てにアクセスすることは現実的ではありません。どこかで常に何かしらの問題が発生しています。
そのため、私たちはこれらをセキュリティの深層防御のように重ね合わせます。速いパスを利用してできるだけ多くに素早くアクセスし、見逃したものには、もう少し遅いが信頼性の高い冗長パスを使用し、成功するまで繰り返しトライします。具体的な数値を挙げると、速いパスは私たちのインフラの約99.9%に5秒未満で変更を加えることができます。この99.9%は繰り返し可能で信頼性があります。そして、遅い信頼性の高いパスは60秒のオーダーで動作し、基本的に成功するまでトライし続けます。これら二つを組み合わせることで、最良の両方を得ることができます。そして、システムの一部が完全にダウンしても、全てがダウンしているわけではなく、最大で5分後には必要な状態になります。これにより、私たちは求める信頼性とともに、対応力と機動性を実現します。また、冗長性を確保するために楽しい工夫もしています。システムをどのように起動するかということですが、多くのシステムにはチャットボットが統合されており、非常に簡単に操作できます。
世界中のどこからでも誰でもスマートフォンで操作できます。その他にも多くのシステムがAPIを備えており、多くのサブシステムにはCLIがあります。したがって、これらのタスクを開始する方法が一つだけではないようにすることは、何が起こっているか、または特定のシステムが問題を経験しているかに関わらず、常に運用上の機動性を手元に保つ方法の一例です。私たちは必要な制御と運用能力を確保しています。これらのことは一般的に多目的ですが、私は言ったように、できるだけ多くの場面でこれらを活用します。自社のインフラワークフローから始まり、機器をプロダクション環境から外してパッチを適用することから、顧客の設定変更に至るまで、すべてが同じコアシステムを活用し、積極的に利用しています。したがって、私たちが顧客に提供する製品は信頼性が高く非常に堅牢です。
アンドリュー・ジョンソン: 素晴らしいですね、デイブ。そしてマルセル、セキュリティチームが実践に役立てることができるベストプラクティスや考慮事項について話してくれてありがとう。そのアドバイスは本当に有難いです。エッジオと私たちの顧客を保護するために、実際のゼロデイ脅威の面白い例に確かに直面していることを知っています。これらのベストプラクティスの良い事例や応用について、少し話していただけますか?
ゼロデイの例:HTTP2/Rapid Reset
(デイヴ・アンドリュース) もちろんです 最も関連性が高い、または最近の興味深い事例として、以前にも触れたHTTP2/Rapid Reset攻撃があります。これは非常に興味深い経験でした。エッジオの視点から見た話ですが、この攻撃が発生したときについてのブログを書きました。HTTP2/Rapid Resetは、HTTP2サーバーライブラリの実装が、HTTP2 RFC(プロトコル仕様)における一般的な推奨事項をライブラリ自体にコード化したことから生じたゼロデイ攻撃です。これは特定の接続上で同時に飛行可能なストリームの数が仕様で100と記述されていたことに関連しています。H2の興味深い側面として、多数のリクエストを単一のTCPソケットで多重化すること、およびリクエストをキャンセルする能力が、この非常に興味深い脆弱性またはDDoS脆弱性につながりました。攻撃者が探しているのは、攻撃者にとっては少ないコストで、攻撃対象にはより多くのコストがかかる何かです。それがHTTP2ラピッドリセットで見つかりました。これは、攻撃者が単一のパケットに非常に迅速に多数のリクエストを開始し、それを繰り返しキャンセルするというものでした。
サーバーは単一のパケットを送信するだけではなく、リクエストを作成し、多くの場合、攻撃者が要求したアセットを取得するためにプロキシ接続を開始する必要があります。そして最終的にはリクエストが発生したことを記録する必要があります。攻撃者がこれらのリクエストの開始とキャンセルを非常に迅速に生成できたため、それにより生じるコストは生成するコストよりも高くなりました。その結果、これはDDoSの脆弱性となりました。私たちのような業界の他の多くの人々も、その攻撃に遭遇しました。
ほぼ同時に多くのプロバイダが攻撃を受け、それが特に興味深いものとなりました。攻撃の規模が広がったことは非常に興味深いものでした。攻撃を開始したときの攻撃者の考えを理解したいと思います。なぜなら、彼らは同時に非常に多くのプロバイダを攻撃していたからです。他のプロバイダと話し始めたとき、私たちはその攻撃を発見し、マルセルが話していたような可観測性によって何が起こっているのかを特定しました。そして、対策を構築し始めました。その対策は、何が正確に起こっているのかを把握するためにさらに多くの可観測性を追加し、それに応じて運用上の制御を構築するというものでした。
実際の対策は、特定のソケットでクライアントがリクエストをリセットする回数を追跡し、その割合が事前に定義されたしきい値を超えた場合にその接続を終了するというものでした。つまり、攻撃者がこれらのリクエストを継続的に送信することを許さず、攻撃を軽減するために上限を設定するという考えです。その対策を構築し、展開し、実施し、実際にそれらの攻撃を防ぐことができたと検証した後にブログを公開しました。その後、業界の人々から、「ブログを見ました。私たちもその影響を受けており、責任ある開示に取り組んでいます」との連絡がありました。そこで、業界のグループと協力して、責任ある開示の流れを進め、HTTP2ライブラリやHPDサーバーを実装している関係者がパッチを生成し、展開する時間を確保しました。これにより、脆弱性が広く公表される前に対応が可能となりました。
非常に興味深い流れでした。私たちはこの問題に非常に迅速に対応できました。これは、私たちが定期的に行っている運用の可視性及び敏捷性のおかげです。大きな変更を加える必要がなく、たとえば、「このライブラリをアップグレードする必要があり、10バージョン遅れています」という状況ではありませんでした。実際には、私たちは1バージョン遅れているだけで、定期的なパッチ適用によってリスクが減少しています。そのため、低リスクのしきい値を維持しながら非常に迅速に対応することができました。そして、その攻撃を迅速に軽減するためにロールアウトを行いました。そして、攻撃が他の多くの人々に影響を与えていることを知らないまま、ブログを公開しました。これは、私たちの顧客だけでなく業界全体に情報を広めるための試みの一環です。Edgioに固有のものではなかったことがわかりました。
アンドリュー・ジョンソン: それは本当に面白いですね。 世界中のセキュリティコミュニティが協力して、全員の成果を改善していることを内部から見ると、素敵ですね。 マルセル何か付け加えたいことは?
マルセル・フローレス: ちょっと付け加えたいのですがこの例は興味深いものでした最初の観測可能性は確かにデイブが言っていたように奇妙な振る舞いを示していました このような下位レベルのプロトコル機能とCDNの上位レベルの動作の相互作用は、本当に予期しない動作を生み出しました。 ここで何が起こっているのか理解するためには深刻な不均衡が存在することを理解することも必要でした。これは顕著でした。これらは私たちが収集していたメトリクスでしたが、このように比較したことはありませんでした。この結果の一部として、私たちは座って、既に持っている可観測性をこの問題の検出に適したものにどのように組み合わせるかを考えました。そして、既存のデータを少し異なる視点から見ることで、私たちの可観測性の範囲を実際に改善することができました。
アンドリュー・ジョンソン: 素晴らしいですね。それを心に留めておくことは良いことです。ありがとう、マルセル。そろそろ締めくくりですね。他に共有したい推薦事項はありますか?高レベルで非常に良いものをいくつかカバーしたと思います。
セキュリティ体制を強化するための推奨事項
デイヴ・アンドリュース: 良い質問ですね。一般的な推奨事項としては、セキュリティ基準の維持が非常に重要です。可観測性に焦点を当てることも重要で、特に強調したいのは支援を提供できる人々を見つけることです。エッジオのような会社は確実に支援できるという重要な価値を提供します。私やマルセルのようなチームがこれに取り組んでおり、様々な攻撃クラスが人々に影響を与えないように積極的に防止しています。ですから、支援を提供できる人々を見つけることが重要です。コミュニティが提供する多くのツールや技術が、あなたの仕事を容易にすることができます。インターネットに関して言えば、WAF(ウェブアプリケーションファイアウォール)は非常に基本的でありながら、最も重要な防御策の一つです。WAFが適切に実装されれば、敏捷性と安全性を組み合わせる能力を提供します。エッジオのWAFはデュアルモードで運用され、新しいルールを本番環境のマシンにデプロイしてトラフィックを観察することができます。これにより、何が起こっているかを確認できます。Log4jに対する対応を例に挙げると、私たちはそのルールを非常に迅速に開発し、検証することができました。ルール更新をプッシュして、アラートモードで実際のマシンにデプロイし、攻撃と一致するかどうかを確認しました。これにより、顧客に対して攻撃を受けていない、または受けていることを示し、その後、データに基づいた決定を行い、そのルールをブロッキングモードに設定して実際に攻撃を防ぎました。これにより、対応の速度、安全性、冗長性、信頼性を全て組み合わせることができます。支援できる人を見つけることが私の主な推奨事項です。
アンドリュー・ジョンソン: 非常に理にかなっています。ありがとう、デイブ。ゼロデイに対応する際、時間は重要です。これらの特化したソリューションを持つことはもちろん、より重要なのはこのプロセスを支援できる人々を持つことが、攻撃者に対する扉を閉ざす鍵となります。それでは、皆さん、今日は参加していただきありがとうございました。リスナーの皆さんにも感謝します。次回のエピソードでお会いしましょう。ありがとうございました。