L4 より上の内容を適切に ringbuf へコピー


先週実施したこと

  • M1バトル参加
  • L4 より上の内容を適切に ringbuf へコピーする(途中)


L4 より上の内容を適切に ringbuf へコピーする

  • sk_buff を userspace からアクセスすることは難しい
  • 現状:bpf_skb_load_bytes を用いたコピーを試みている
    • bpf_skb_load_bytes はコピー先として eBPF の stack 上しか指定できないため、一度そこにコピーしてから ringbuf にコピーする必要がある
      • 小分けにして stack にコピー → ringbuf へコピー を繰り返す
    • 一時的なバッファにパケットの中身をコピーできた
      • ヘルパー関数 bpf_probe_read_kernel を利用して、一時的なバッファから ringbuf memory へのコピーを試みている


今後の予定

  • eBPF プログラムから BPF map へパケットを適切にコピーする
    • tcpdump, Wireshark のコピーの手法をソースコードで見てみる
  • SSLKEYLOGFILE 環境変数の指定で得られる TLS 共通鍵でキャプチャしたパケットを復号する
  • ルールの追加・削除をユーザができる CLI ツールを作成する