@techreport{oai:ipsj.ixsq.nii.ac.jp:00224737,
 author = {尾崎, 純平 and 高野, 祐輝 and 宮地, 充子},
 issue = {61},
 month = {Feb},
 note = {eBPF は Linux が提供する機能の 1 つで,専用の BPF コードを用いてカーネル内で動作するネットワーク機能をユーザの手で追加することができる.しかし,カーネルの動作に直接干渉するという特徴から,外部からのデータ参照には制限が存在する.そのため,eBPF の安全性検証には内部データを必要としない方法として文法的誤りやコード規則違反の有無を判別する静的解析が主流となっていたが,静的解析では対象としていない項目の追跡や文法的誤りを伴わない不具合の検証は行うことができず十分な検証環境は整えられていない.本研究はデータ送受信の中での BPF コードの動作の観測を行う方法として,2 つのホストを用いた双方向通信の中で仮想マシンの呼び出しを行うフレームワークを構築する.仮想マシンは前回の研究で構築したものを用いており,ユーザ空間内での BPF コードのデバッグを可能としている.各ホストではデバッグを行う BPF コードの登録と相手ホストへのパケット送信を行うことができ,パケット受信時には仮想マシンへと動作を移行し検証を行う.また,仮想マシンとホストを用いてカーネル内部の機能であった tail call 機能の再現を行っており,新たに連動する複数のプログラムに対する検証を可能としている., eBPF is one of the features provided by Linux that allows users to add networking functions that operate within the kernel using dedicated BPF code. However, because eBPF directly interferes with kernel operations, there are restrictions on data references from outside the kernel. For this reason, static analysis, which determines the presence or absence of grammatical errors and code rule violations, has been the mainstream method for verifying the safety of eBPF without requiring internal data. However, static analysis is not sufficient to track items not covered by static analysis and to verify defects without grammatical errors. This study constructs a framework for invoking a virtual machine in bidirectional communication using two hosts as a method of observing the behavior of BPF code in data transmission and reception. The virtual machine is the one constructed in the previous study, which enables debugging of the BPF code in the user space. Each host can register the BPF code to be debugged and send packets to the other host. When a packet is received, the operation is transferred to the virtual machine for verification. In addition, the tail call function, which was an internal function of the kernel, is reproduced using the virtual machine and hosts, enabling verification of multiple programs that are linked together.},
 title = {eBPF検証用の双方向通信フレームワークの提案},
 year = {2023}
}