WindowsのeBPFをセキュアに保つための戦い

多くの場合、イノベーションによって機能が向上し、さらにはセキュリティも向上します。ただし、導入は徐々にゆっくりと進みます。そして多くの場合、それは直線的な速度ではなく、指数関数的な速度で増加するため、十分に調査される機会が得られない脆弱な面を残します。採用率が急速に拡大すると、次の大きなゼロデイを見つけるために、これらの成熟した攻撃面を調査するために、セキュリティ研究者と攻撃者の間で競争が始まります。Trellix では、このレースに勝つために懸命に取り組んでいます。私たちは常に、業界を席巻しようとしているテクノロジー、機能、ライブラリなどは何かと自問自答しています。1年後、5年後、さらには 10年後、攻撃者たちは何を発見し悪用しようとするのでしょうか?

日々の調査研究を紹介するために、シニア プリンシパル セキュリティ リサーチャー Richard Johnsonは、2022年のBlack Hatの中で、Windows の eBPF に関する詳細な研究を発表しました。プレゼンテーションでは、今後の攻撃対象領域におけるセットアップ、監査、ファジング、および発見された脆弱性について説明します。eBPF が Windows にあることはご存じでしたか? それはまだデフォルトではありませんが、今後その予定であり、まさにそれがこの研究が非常に重要である理由です。


eBPFとは

Extended Berkeley Packet Filter (eBPF) は、前身の BPF (Berkeley Packet Filter) のアップグレードとして、2014 年 12 月に Linux カーネルに導入されました。eBPF は、「eBPF プログラム」と呼ばれる特別なアプリケーションを、カーネル ソース コードを書き換えることなく、カーネル内の信頼できるサンドボックス環境で実行できる仮想 CPU アーキテクチャおよび仮想マシンです。これは、カーネル ソースを変更するか、カーネル モジュール全体をメモリにロードする必要があるという従来の要件から大幅に改善されています。eBPF を使用すると、追加のオペレーティング システム レベルの機能を実行時に効率的に統合できるだけでなく、それ以前の方法よりも高いパフォーマンスを実現できます。


なぜ便利なのか

最も基本的なレベルでは、意思決定と行動にはデータが必要です。取得できるデータがより完全で詳細であればあるほど、より適切な意思決定またはアクションを実行できます。eBPF は基本的に、これまで以上に少ないオーバーヘッドでより詳細な情報を収集するメカニズムを提供します。場合によっては、eBPF プログラムがカーネルとユーザーランドの両方のトレース ポイントにアタッチできることで、以前はトレースが非常に困難だったランタイム環境を可視化できるようになります。また、プロセス イベント、ネットワーク接続、名前空間の変更などに関するカスタム テレメトリを収集して、より多くの情報に基づいたアクションを実行できるようにすることもできます。Linux ベースのシステムでは、サービス拒否保護などの分野でこれが成果を上げていることをすでに確認しています。


Windows 用の eBPF

2021 年 5 月、Microsoftはebpf-for-windowsと呼ばれる新しいオープンソース プロジェクトについて発表しました。このプロジェクトの目標は、eBPF のテクノロジを Windows 10 および Windows Server 2016 以降に統合することです。このコンセプトは、Linux カーネルに現在提供されているのと同じ可視性とパフォーマンスを Window カーネルにもたらし、可能な場合はさらに拡張することです。これはまた、eBPF を完全なクロス プラットフォーム テクノロジーにすることを示すeBPF Foundationの創設のきっかけにもなりました。この間、Microsoft は主要な eBPF プログラムの Windows への最初の移植、Cilium レイヤー 4 ロード バランサーを完了しました。セキュリティ第一の企業として、コンポーネントの強化とプロジェクトへのファズ テストの追加にも取り組み始めました。

Microsoftがこのテクノロジーの採用を拡大することを約束し、これに取り組むことで、攻撃者が調査する刺激的な攻撃対象になることが明らかになりました。Guillaume Fournier が 2021 年の Black Hat の講演で Linux 上の eBPF について示したように、十分な時間と動機があれば、このテクノロジーを利用してルートキットを作成することが可能です。Windows バージョンの eBPF はまったく新しいものであり、既存の Linux eBPF サンドボックス コードを使用することはできません。したがって、私たちのチームは、Windows に焦点を当てた、または eBPF エコシステムにとって新しいコンポーネントを調査することに重点を置き、Windows 上の eBPF がカーネルでのコード実行の「安全性を保証」できるという表記を検証することにしました。


初期の重大な発見

このフレームワークの列挙と監査中に、私たちのチームは、悪用に成功すると、管理者権限で任意のコードが実行されるヒープベースのバッファ オーバーフローの脆弱性を発見しました。Windows プロジェクトの eBPF には、 EbpfApiというユーザー ライブラリが含まれています。このライブラリは、ELF オブジェクト ファイルから eBPF プログラムをロードし、それらを eBPF サービスに送信します。EbpfApi は、付属の BPFTool と Netsh プラグインによって使用され、管理者権限を持つユーザーが実行中のカーネルにプログラムをロードできるようにします。前述のように、eBPF は信頼できるサンドボックス化された実行環境と見なされており、これらのプログラムは検証済みであり、システム上で任意のコードを実行することなく安全に実行できることが期待されています。この脆弱性により、そのセキュリティ境界が破られ、ヒープメモリの破損により、管理者権限で任意のコードが実行される可能性があります。私たちの計算では、この脆弱性は CVSS 3.0 スコア 7.8 であることは確実です。この問題は Microsoft に報告され、Microsoft はすぐにオープン ソース プロジェクトの修正をリリースし、現在のコード リリース ツリーで修正されています。


まだ始まったばかり

多くの場合、脆弱性調査の成功は、発見された脆弱性に対する調査結果の影響によって定義されます。それはいくつのシステムに影響を与えるのか。また認証されていないリモートコード実行についてなのか。確かに考慮すべき重要な指標の1つですが、唯一の指標であってはなりません。この場合、Windows で eBPF の最先端のコード ベースを実行しているマシンはほとんどない可能性が高く、本質的にリモートの問題ではありません。ただし、将来的に大規模なインストール ベースに含まれる可能性がある新しいテクノロジーの基本的な構造は壊れています。重要なのは、悪意ある攻撃者による悪用の可能性さえない開発段階で欠陥が修正されたことです。Trellix と他のチームが Windows 用の eBPF の脆弱性を調査、発見、報告を継続し、将来に向けより安全な環境を構築していきます。

本記事およびここに含まれる情報は、啓蒙目的およびTrellixの顧客の利便性のみを目的としてコンピュータ セキュリティの研究について説明しています。Trellixは、脆弱性合理的開示ポリシーに基づいて調査を実施しています。記載されている活動の一部または全部を再現する試みについては、ユーザーの責任において行われるものとし、Trellixおよびその関連会社はいかなる責任も負わないものとします。

※本ページの内容は2022年8月11日(US時間)更新の以下のTrellix Storiesの内容です。
原文:The Race to Secure eBPF for Windows
著者:Douglas McKee