## 概要
Linux は、コンテナ仮想化の基盤となるオープンソース OS カーネルである。Linux コンテナは namespace と cgroup によりプロセス・ファイルシステム・ネットワーク・ユーザ空間を分離するが、**ホスト OS カーネルを共有**するため、Linux カーネル自体の脆弱性が全コンテナとホストに影響する攻撃面となる。(Source: [[@2023__APSys__Reducing Attack Surface with Container Transplantation for Lightweight Sandboxing]] §1, §2)
## 本論文での位置づけ
APSys ’23 の Container Transplantation 論文は、Linux カーネル固有の脆弱性(CPU 処理、メモリ処理、ファイル処理)を分類し、これらを悪用した攻撃が FreeBSD 上で実行できないことを実証した。Linux コンテナを FreeBSD カーネルへ移植することで、Linux カーネル実装に依存する脆弱性を自然的に無力化する。(Source: [[@2023__APSys__Reducing Attack Surface with Container Transplantation for Lightweight Sandboxing]] §2, §5.1)
## カーネルの系譜と性能機能(詳解 システム・パフォーマンス第2版)
Linuxは1991年にリーナス・トーバルズがIntel PC用のフリーOSとして開発を開始した。Unix・Multicsのシステムコール・マルチタスク・仮想メモリ、BSDのページング仮想メモリ・デマンドページング・FFS・TCP/IPスタック・ソケット、Solarisのvfs・NFS・ページキャッシュ・スラブアロケータ、Plan 9のリソースフォーク(rfork)を基礎として発展した。ドキュメント化されたシステムコール数はLinux 5.3.0で493個に達し、UNIX Version 7の48個から大幅に増加している。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 3 オペレーティングシステム]] §3.4, §3.3)
CFS(Completely Fair Scheduler)・cgroup・epoll・RCU・perf・透過的ヒュージページ・TCP BBR・io_uring・マルチキューI/O・PSIなど、性能関連機能の多くはLinux 3.1から5.8の間(本書初版〜第2版)に追加された。近年は拡張BPFという新しいカーネルモードプログラム実行環境を取り込み、カーネルモデル自体を拡張している。KPTI(メルトダウン対策、4.14)はNetflix本番ワークロードで0.1〜6%の性能低下を招いた。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 3 オペレーティングシステム]] §3.4.1, §3.4.3, §3.2.1)
## 関連
- ソース: [[@2023__APSys__Reducing Attack Surface with Container Transplantation for Lightweight Sandboxing]] / [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 3 オペレーティングシステム]]
- エンティティ: [[Docker]] / [[FreeBSD]] / [[Linuxulator]]
- 概念: [[Container Transplantation]] / [[コンテナ仮想化]] / [[Capability-based Security]] / [[BPF]] / [[eBPF]] / [[コンテキストスイッチ]] / [[システムコール]]