Microsoftは、拡張Berkeley Packet Filter(eBPF)サポートをWindowsに導入するために取り組んでいます
2分。 読んだ
上で公開
MSPoweruser の編集チームの維持にどのように貢献できるかについては、開示ページをお読みください。 続きを読む
ZDNetレポート Microsoftは、Linuxセキュリティツールの拡張Berkeley Packet Filter(eBPF)をWindows10に導入するために取り組んでいます。
このツールは現在、Windows SubSystem for Linuxで実行できますが、Microsoftはネイティブサポートに取り組んでおり、ツールがカーネルコンテキストでコードを実行するため、あらゆる種類のセキュリティが複雑になります。
ただし、eBPFはネットワークのフィルタリング、分析、管理、およびシステムコールのフィルタリングとプロセスコンテキストのトレースに広く使用されており、Cilium、Falco、Traceeなどの複数のセキュリティアプリケーションの基盤を形成しているため、この作業は価値があります。 ハッブルやピクシーなどのKubernetes観測プログラム、およびClangなどのツールチェーン。
ebpf-for-windowsプロジェクトは、いくつかの既存のeBPFオープンソースプロジェクトを取得し、それらをWindowsで実行するための「接着剤」を追加することを目的としています。
図に示すように、既存のeBPFツールチェーン(clangなど)を使用して、さまざまな言語のソースコードからeBPFバイトコードを生成できます。 バイトコードは、任意のアプリケーションで使用することも、Libbpf APIを公開する共有ライブラリを使用するNetshコマンドラインツールを介して使用することもできますが、これはまだ進行中です。
eBPFバイトコードは、ユーザーモードで保護されたプロセス(カーネルコンポーネントが信頼するキーによって署名されたユーザーモードデーモンを信頼できるようにするWindowsセキュリティ環境)でホストされる静的ベリファイア(PREVAILベリファイア)に送信されます。 バイトコードがすべてのベリファイアチェックに合格した場合、(カーネルモード実行コンテキストのuBPFから)インタープリターにロードするか、(uBPF JITコンパイラーを介して)JITコンパイルして、カーネルモード実行にネイティブコードをロードすることができます。コンテキスト(ただし、HVCIについては下部のFAQを参照してください)。
カーネルモード実行コンテキストにインストールされたeBPFプログラムは、さまざまなフック(現在、XDPとソケットバインドフックのXNUMXつのフック)に接続し、パブリックWindowsカーネルAPIを内部的にラップするeBPFシムによって公開されるさまざまなヘルパーAPIを呼び出すことができます。 Windowsの既存のバージョンでのeBPFの使用。 今後、フックとヘルパーが追加されます。
最終的には、Windows開発者が再コーディングせずにオープンソースのeBPFプログラムを使用できるようにするeBPF用のWindows固有のホスティング環境になります。
チェックアウトします GitHubのebpf-for-windowsプロジェクトはこちら.