Upgrade to Pro — share decks privately, control downloads, hide ads and more …

動的にallow/denyできる ファイルサンドボックスを作る

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Takaya Saeki Takaya Saeki
August 21, 2026
110

動的にallow/denyできる ファイルサンドボックスを作る

Kernel/vm東京No.19 の発表です @nullpo_head

seccomp-notifyとlandlockをつかってseccom-brokered sandboxを作ります

Avatar for Takaya Saeki

Takaya Saeki

August 21, 2026

More Decks by Takaya Saeki

Transcript

  1. 4

  2. シリコン製の 体 猿の手 週 先 た, はなんでもやってくれる 験し に 途中で

    本 当 エラーがあったようだ た っ あ . ん、最新のコマンドは . . 話 い 怖 ? Agent "No space left on device" $ rm -rf proj1 proj2 .. ... 8
  3. Seccomp-BPF プロセスにClassic BPFで書かれたルールを課す システムコール番号の許可リストor拒否リストを実装する root も user namespace もいらない 弱点

    パスをもとにファイルのフィルタリングは不可能 動的に許可・拒否を決定することはできない 16
  4. Cage Box: a seccomp-brokered sandbox https://github.com/nullpo-head/cage-box つくりました。Brokered Sandbox 方式(勝手に名付けた) プロセスがファイルアクセスをするたびに許可/拒否できる

    ルールファイルにより、プロセスがアクセスするファイルをあらか じめ宣言することもできる その仕組みとは・・・? 22
  5. 25

  6. 解決策: Landlockと組み合わせる ですべてを拒否する Landlock 外の broker が、代わりにファイルを開いて FD をターゲッ トプロセスにinjectすることになる

    Broker が明示的に開いたファイルしかアクセスされないことが保証 される これをSeccomp-Brokered Sandbox方式と勝手に呼んでいます Landlock 27
  7. 28

  8. Seccomp-Brokered Sandbox (seccomp notify + landlock) 方式: もUser namespaceも必要ない 動的にファイルアクセスをパスベースで許可/拒否できる

    TCP のホストベースでのフィルタリングも可能( Cage Box は未実 装) Root すごい!! 29
  9. TOCTOU パスは検査時とopenしたときで常に変わる e.g. symbolic link の置き換え Open -> get the

    realpath of the fd -> 許可 / 拒否 -> その fd を返す の 順でやる 33
  10. execve(path, ...) が代行できない ptrace を組み合わせて へと置き換える ( はFDを取る) それでも全拒否Landlockとexecveの組み合わせが悪い 紆余曲折ありFSのFDに対して

    できない memfd に execve 対象ファイルをコピーして注入して現在は実装 (proxy プロセスを起動する方式のほうがいいかもね ) Broker execveat execveat execveat 35
  11. まとめ2 Seccomp-Brokered Sandbox (seccomp notify + landlock) 方式: もUser namespaceも必要ない

    動的にファイルアクセスをパスベースで許可/拒否できる TCP のホストベースでのフィルタリングも可能( Cage Box は未実 装) Root すごい!! 38