Microsoft は Windows 用の eBPF 実装を準備しました

Microsoft は、Windows 用の eBPF サブシステムの実装を公開しました。これにより、オペレーティング システムのカーネル レベルで実行される任意のハンドラーを起動できるようになります。 eBPF は、カーネルに組み込まれたバイトコード インタープリタを提供します。これにより、ユーザー空間からロードされるネットワーク操作ハンドラーの作成、アクセスの制御、およびシステムの動作の監視が可能になります。 eBPF は、リリース 3.18 以降 Linux カーネルに組み込まれており、受信/送信ネットワーク パケット、パケット転送、帯域幅管理、システム コールの傍受、アクセス制御、およびトレースを処理できるようになります。 JIT コンパイルの使用により、バイトコードはその場でマシン命令に変換され、コンパイルされたコードのパフォーマンスで実行されます。 eBPF for Windows は、MIT ライセンスの下でオープン ソースです。

eBPF for Windows は、既存の eBPF ツールと併用でき、Linux 上の eBPF アプリケーションに使用される汎用 API を提供します。 とりわけ、このプロジェクトでは、標準の Clang ベースの eBPF コンパイラを使用して C で書かれたコードを eBPF バイトコードにコンパイルし、Linux 用にすでに作成された eBPF ハンドラを Windows カーネル上で実行することができ、特別な互換性レイヤーを提供し、標準の Libbpf をサポートします。 eBPF プログラムと対話するアプリケーションとの互換性のための API。 これには、XDP (eXpress Data Path) およびソケット バインド用の Linux のようなフックを提供し、ネットワーク スタックおよび Windows ネットワーク ドライバーへのアクセスを抽象化するレイヤーが含まれます。 計画には、標準 Linux eBPF プロセッサとの完全なソース コード レベルの互換性の提供が含まれます。

Microsoft は Windows 用の eBPF 実装を準備しました

Windows 向けの eBPF 実装の主な違いは、もともと VMware の従業員とカナダとイスラエルの大学の研究者によって提案された代替バイトコード ベリファイアを使用していることです。 ベリファイアは、ユーザー空間内の別個の隔離されたプロセスで実行され、BPF プログラムを実行する前にエラーを特定し、潜在的な悪意のあるアクティビティをブロックするために使用されます。

Windows 用 eBPF は検証のために、抽象解釈に基づく静的分析手法を使用します。これは、Linux 用 eBPF 検証ツールと比較して、誤検知率が低く、ループ分析をサポートし、優れたスケーラビリティを提供します。 この方法では、既存の eBPF プログラムの分析から得られた多くの典型的な実行パターンが考慮されます。

検証後、バイトコードはカーネル レベルで実行されるインタプリタに転送されるか、JIT コンパイラを介して渡され、その後、結果として得られるマシン コードがカーネル権限で実行されます。 eBPF ハンドラーをカーネル レベルで分離するには、HVCI (HyperVisor-enforced Code Integrity) メカニズムが使用されます。このメカニズムは、仮想化ツールを使用してカーネル内のプロセスを保護し、デジタル署名を使用して実行コードの整合性を確認します。 HVCI の制限は、解釈された eBPF プログラムのみを検証でき、JIT と組み合わせて使用​​できないことです (パフォーマンスまたは追加のセキュリティのいずれかを選択できます)。

出所: オープンネット.ru

コメントを追加します