低レベルコンテナランタイムは、Linuxのnamespace、cgroupなどを組み合わせてコンテナ環境を構築します。特に rootfs の切り替えや mount操作、パス解決はコンテナのセキュリティを左右する重要な処理です。
従来の mount() はパスベースで操作するため、パスの検証とマウントの間に TOCTOU 問題が生じる余地があり、2025年には runc や youki で関連する脆弱性が公開されました。
New Mount API では、open_tree() などを用いてマウント対象をFDとして扱い、パスを繰り返し解決せずに mount 処理を行えます。
さらに Linux Kernel 7.0 では性能面での改善としてopen_tree()に OPEN_TREE_NAMESPACE フラグが追加され、crun では pivot_root() に依存しない rootfs 構築も導入されています。
本セッションでは、youki へのコントリビュート経験をもとに、New Mount API、過去の脆弱性、rootfs 構築、コンテナランタイムの最新動向を紹介します。
株式会社スリーシェイク
SRE
2022年にスリーシェイクのSreake事業部にJoinし、主にAWS環境のSRE支援業務に携わっている。低レベルコンテナランタイムyoukiに日々コントリビュートしている。