Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
異種OS機能連携による セキュアコンテナ実現の検討/comsys2022
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
await
December 05, 2022
Technology
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
異種OS機能連携による セキュアコンテナ実現の検討/comsys2022
comsys2022で発表したスライド
await
December 05, 2022
Other Decks in Technology
See All in Technology
おい、エージェントを使って終わらせろ
nwiizo
0
200
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
390
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
280
Sigmaで作る業務アプリ
kazushiro_honma
0
140
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
210
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
120
Omarchy Quattro の日本語設定周り
simosako
2
170
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
150
Railsのように考える: See through the Master
snoozer05
PRO
0
100
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
130
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
440
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
180
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
900
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Heart Work Chapter 1 - Part 1
lfama
PRO
9
36k
Unsuck your backbone
ammeep
672
58k
So, you think you're a good person
axbom
PRO
2
2.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Transcript
異種OS機能連携による セキュアコンテナ実現の検討 2022/12/5 ComSys2022 鈴木進太郎 公立はこだて未来大学 中田裕貴 さくらインターネット 松原克弥 公立はこだて未来大学
コンテナを活用したクラウドサービス コンテナ型仮想化(コンテナ)はプロセスベースの仮想化技術である VMに比べ高速な起動や軽量な実行環境作成が特徴 Platform as a service (PaaS) - Heroku
- Google App Engine Function as a service (FaaS) - AWS lambda - Google Cloud Function 2
コンテナ型仮想化におけるリソース隔離 - コンテナごとに独立したOS環境 - プロセスやネットワークをはじめとするOSリソースを分離 - コンテナごとに利用できるリソース制限 - CPU利用率やメモリなど コンテナ
- ホスト間の共有部を減らすことで、 悪意のあるコンテナによるリソース専有や妨害行為を防いでいる 3
コンテナはOSカーネルを共有 - コンテナ自体やカーネルの脆弱性を利用した攻撃を防ぐ コンテナにサンドボックス(追加の隔離)を適用して コンテナ間の隔離を堅牢にする必要がある コンテナにおけるサンドボックスの重要性 4 サンドボックスの適用により コンテナへの攻撃を回避
サンドボックスを適用したコンテナの課題 オーバーヘッドの増加 [1] - 仮想マシン利用 (kata container) - システムコール検査 (gvisor)
コンテナ特性である「軽量さ」が損なわれる 5 [1] Yuki Nakata, Katsuya Matsubara, Ryosuke Matsumoto Proc. of the 14th IEEE/ACM International Conference on Utility and Cloud Computing (UCC) (15) 1-10 2021年12月
本研究の目的 コンテナの軽量さを最大限に維持しつつ、OSカーネル共有に起因する脆弱性を 回避できるセキュアコンテナの実現 ※セキュアコンテナ: サンドボックスを適用しコンテナ間の隔離を堅牢にしたコンテナ 6
実現するセキュアコンテナ 定義1 Linuxコンテナが持つリソースの制限・隔離機能をもつ 独立したOS環境の提供 - CPUやメモリの利用制限 - ファイルやディレクトリのアクセス制限 - プロセス情報の隔離
- ユーザ情報の隔離 - ネットワークの隔離 7 クラウドサービスではコンテナ を独立した環境として提供
実現するセキュアコンテナ 定義2 OSカーネルの脆弱性を利用した攻撃に対する回避手段をもつ 対象とする攻撃 - Linuxカーネルの実装に起因する脆弱性を利用した攻撃 - 権限昇格や不正メモリアクセスなどの攻撃 対象外の攻撃 -
ハードウェア自体の脆弱性を利用した攻撃 8
実現するセキュアコンテナ 定義3 サンドボックスを用いた追加の隔離機構をもつ - システムコールやライブラリ関数の目的外使用による攻撃を防止 - コンテナ内で実行するアプリケーションの脆弱性の影響範囲を最小化 サンドボックスの適用 - ファイルやソケットに対する最粒度なアクセス制御
- アプリケーションに必要のないファイルやソケットの操作を制限 - システムコールやライブラリ関数実行の検査 - アプリケーションに必要ない関数の利用を制限 9
本研究の提案 異種OS上でLinuxコンテナを互換実行 - LinuxアプリケーションはLinuxカーネル上で動作する想定で作成される - Linuxコンテナ、LinuxアプリケーションをLinuxカーネル以外で実行 カーネルの脆弱性を利用した攻撃を回避 (定義2) セキュリティ機構を用いた軽量なサンドボックスの実現 サンドボックスを用いた追加の隔離
(定義3) 10
異種OSの選定条件 1. Linuxアプリケーションが実行可能 - LinuxコンテナではLinuxアプリケーションが動作 - Linuxアプリケーションを互換実行する機能を持つ 2. Linuxと同等の隔離技術をもつ -
LinuxコンテナはLinuxの機能に依存 - Linuxと同等のリソース制限・隔離機能(定義1)を持つ 3. コンテナに利用できるセキュリティ機能を持つ - サンドボックスの要件を満たすようなセキュリティ機構を持つ 11
アプローチ: 異種OSとしてFreeBSDを採用 1. FreeBSD LinuxulatorというLinuxバイナリ互換実行機能がある 2. FreeBSD jailというコンテナ型仮想化技術が利用できる 3. FreeBSD
Capsicum/Casperというセキュリティ機構を持つ FreeBSD上でセキュアコンテナ実現可能性について検討 - PaaSやFaaSにおける利用を前提 12
FreeBSD アプリケーション (Linuxバイナリ) Linuxulator Linuxシステムコール インタフェース Linux Rootfs / proc
usr … libc libXX libYY lib システムコール実 行 FreeBSD システムコール Linuxアプリケーション互換実行の実現(アプローチ1に関連) Linuxulator - FreeBSDで利用できる Linuxのエミュレータ - Linuxバイナリの ネイティブ実行が可能
FreeBSD アプリケーション (Linuxバイナリ) Linuxulator Linuxシステムコール インタフェース Linux Rootfs / proc
usr … libc libXX libYY lib システムコール実 行 FreeBSD システムコール Linuxアプリケーション互換実行の実現(アプローチ1に関連) Linuxulator - FreeBSDで利用できる Linuxのエミュレータ - Linuxバイナリの ネイティブ実行が可能 ライブラリの参照はLinux Rootfs から行う
FreeBSD アプリケーション (Linuxバイナリ) Linuxulator Linuxシステムコール インタフェース Linux Rootfs / proc
usr … libc libXX libYY lib システムコール実 行 FreeBSD システムコール Linuxアプリケーション互換実行の実現(アプローチ1に関連) Linuxulator - FreeBSDで利用できる Linuxのエミュレータ - Linuxバイナリの ネイティブ実行が可能 FreeBSDとLinuxの システムコール対応付け
FreeBSD アプリケーション (Linuxバイナリ) Linuxulator Linuxシステムコール インタフェース Linux Rootfs / proc
usr … libc libXX libYY lib システムコール実 行 FreeBSD システムコール Linuxアプリケーション互換実行の実現(アプローチ1に関連) Linuxulator - FreeBSDで利用できる Linuxのエミュレータ - Linuxバイナリの ネイティブ実行が可能 Apache、MySQL、Redis などが動作[2] PaaS, FaaSで十分利用可能 アプリケーションからは Linux環境に見える [2] freebsd.org. [LinuxApps]. https://wiki.freebsd.org/LinuxApps, (アクセス: 2022-12-5)
FreeBSDにおける隔離環境の実現 (1/2) (アプローチ2に関連) リソース制限機能 - rctl、cpusetを用いてLinuxと同等の機能 リソース隔離機能 - FreeBSD jailを用いる
(FreeBSDで利用できるコンテナ型仮想化技術 ) - プロセス - ユーザ Linuxとは仕様が異なるため、 これら差異の対策を検討 17 制限機能 Linux FreeBSD CPUの利用時間 cgroup cpu rctl cputime CPUのコア数制限 cgroup cpuset cpuset 利用できるメモリ制限 cgroup memory rctl memoryuse 隔離機能 Linux FreeBSD プロセス namespace △ jail ユーザ namespace 対応なし ディレクトリ chroot jail ネットワーク namespace/veth vnet Linux, FreeBSDにおけるリソース制限機能 Linux,FreeBSDにおけるリソース隔離機能
FreeBSDにおける隔離環境の実現 (2/2) (アプローチ2に関連) リソース隔離要件 プロセス隔離 コンテナごとにPIDなどの、プロセス情報が独立している必要がある LinuxやUnixではPID 1はinitプロセスである必要がある ユーザ隔離 コンテナ間で重複したユーザ名やUID/GIDを利用できる
ユーザ隔離を行わない場合、 プロセス間通信やシグナルなどUIDをベースに処理を行う機能に影響が出る 18
FreeBSDにおけるプロセス隔離 実現検討 FreeBSDとLinux共に プロセス情報は分離 PIDの番号付けが異なる - jailではホストとjail間で連番 - Linuxではコンテナ内で1から始まる 19
FreeBSDにおける隔離環境の実現に関連 jail内でのpsコマンド実行 PaaS, FaaSにおけるほとんどのアプリケーションは特定のPIDに依存していない PaaSやFaaSで利用するにあたりこの差異は問題ないと考える Linuxコンテナでのpsコマンド実行
FreeBSDにおけるユーザ隔離 実現検討 20 FreeBSDにおける隔離環境の実現に関連 FreeBSDとLinuxでユーザ名は重複可能 UID/GIDの管理方法が異なる - jailではホスト, jail間で UID/GIDは共通
- Linuxではコンテナの中と外で 異なるUID/GIDを設定 UID/GIDが重複するとシグナルやプロセス間通信に影響がでる 各jailに対して割り当てるUID/GIDの範囲を重複しないように設定する必要がある PaaSやFaaSで利用するにあたりこの差異は対策可能と考える Linux: ユーザ隔離における UID/GID FreeBSD: ユーザ隔離における UID/GID
コンテナへのFreeBSDセキュリティ機構適用 実現検討 (アプローチ3に関連) Capsicum FreeBSDで利用できるcapabilityを用いたアクセス制御機構 アプリケーションが自発的に権限を制限し, 実行可能な範囲を制御する Capsicumで提供されるサンドボックスでは, 全プロセスで共有利用するリソース(グローバル空間)へのアクセスを制限 -
ファイル - プロセスID - IPC など 21
FreeBSD Capsicumサンドボックス サンドボックスによる制約 - ファイルやソケットなどのopenが不可 - 一部システムコールの発行に制限 - さらに、利用できるシステムコールの制限をかけることができる -
サンドボックスの隔離は子プロセスにも引き継がれる - Capsicumの適用はアプリケーションがコードで対応する必要がある Capsicumを利用して, Linuxコンテナに対してサンドボックスの適用を実現 22 例: pingにおけるソケットに対する操作の制 限 [3] 異種OSのセキュリティ機構適用の実現 (課題3に関連) [3] RTEMS(2011) rtems-libbsd[ping.c] https://github.com/RTEMS/rtems-libbsd/blob/master/freebsd/sbin/ping/ping.c (アクセス: 2022-12-5)
FreeBSD Casperによる代理実行 Capsicumサンドボックスの制限では一部アプリケーションは動作が困難 一部グローバル空間へのアクセス検査と代理実行機能を提供 特徴 - casperを利用した代理アクセスは専用の関数を利用 - 引数に渡す値に制限をかけることができる Casperを利用したシステムコールやライブラリ関数の実行検査を実装
23 異種OSのセキュリティ機構適用の実現 (課題3に関連) 例: pingにおけるcasper関数の利用 [3] [3] RTEMS(2011) rtems-libbsd[ping.c] https://github.com/RTEMS/rtems-libbsd/blob/master/freebsd/sbin/ping/ping.c (アクセス: 2022-12-5)
コンテナへCapsicum/Casper適用の課題 アプリケーションが自ら適用する設計 - 通常であればコードの改変を行う - サンドボックスの適用 - サンドボックスに入る前に必要なファイルを開いておく - casper関数の利用
- Linuxulatorを利用するため、FreeBSD上でLinuxバイナリの改変が困難 バイナリの改変をせず、Capsicum/Casperを透過的に適用する必要がある 24 異種OSのセキュリティ機構適用の実現 (課題3に関連)
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir Linuxulator システムコール 変換 リンカ 事前に開いた リンカでリンク FDから バイナリ実行
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 アプリケーションに必要バイナリ、ファイル、 ディレクトリなどを予め開いておく Linuxulator システムコール 変換
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 アプリケーションに必要バイナリ、ファイル、 ディレクトリなどを予め開いておく Linuxulator システムコール 変換 libpreopen 予めファイルやディレクトリを開いておき、 open()呼び出し時はすでに開いてあるファイルをアプリケー ションに渡す アプリケーションから呼び出された open()は内部でopenat() に変換される
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 サンドボックスが子プロセスに 引き継がれることを利用 親プロセスでサンドボックスに入っておき、 子プロセスでアプリケーションを起動 Linuxulator システムコール 変換
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 サンドボックス内ではバイナリにアクセスができない (ファイルのオープンができないため) 予めバイナリを開いておき、FDからexecを行う Linuxulator システムコール 変換
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 ライブラリも通常のアクセスができなくなる 予めリンカ自体もファイルとして開いておく Linuxulator システムコール 変換
FreeBSD Capsicumの透過的な適用 コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス アプリケーション バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr システム コール実行 … workdir Linuxulator システムコール 変換 リンカ 事前に開いた リンカでリンク FDから バイナリ実行
FreeBSD Capsicumの透過的な適用(ファイルアクセス) コンテナランタイム プロセス作 成 Jail・rctl適用 コンテナプロセス Capsicumサンドボックス バイナリ・ファイル・
ディレクトリを開く Linux Rootfs / App bin lib サンドボックス化 usr アプリケーション open(…) … workdir リンカ 事前に開いた リンカでリンク FDから バイナリ実行 libpreopenにより open()からopenat()に変換 open()はlibpreopenによりopenat()に変換され、 すでに開かれているファイルへのアクセスとなる Linuxulator システムコール 変換
コンテナランタイム 1コンテナ FreeBSD Capsicum +Casperの透過的適用による動的なリソースアクセス プロセス作 成 コンテナプロセス Capsicumサンドボックス
Linux Rootfs / App bin lib usr アプリケーション アクセス … workdir リンカ 呼び出し 内容の検査 libcasper 関数呼び出しのフック・ casperへのリダイレクト Casperプロセス FreeBSD上の OSリソースへの アクセス OSリソース リンカの仕組みを使い、自作ライブラリを利用 グローバル空間のアクセスを含む関数を 内部でcasperライブラリを経由
コンテナランタイム 1コンテナ FreeBSD Capsicum +Casperの透過的適用による動的なリソースアクセス プロセス作 成 コンテナプロセス Capsicumサンドボックス
Linux Rootfs / App bin lib usr アプリケーション アクセス … workdir リンカ 呼び出し 内容の検査 libcasper 関数呼び出しのフック・ Casperへのリダイレクト Casperプロセス FreeBSD上の OSリソースへの アクセス OSリソース Casperにより関数呼び出しの内容の検査 アクセスの代理実行を行う
予備実験: Linuxulator利用によるカーネル脆弱性の回避 Linuxulatorを利用することで、Linuxカーネルの脆弱性を回避できるか調査 権限昇格が可能な脆弱性のうち、攻撃コードが公開されているもの対象 Linuxulatorで脆弱性を利用した攻撃を試す テスト環境 35 環境 OS環境 CPU
メモリ ネイティブ FreeBSD 13.1 Intel i5-4278U 16GB
予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 36 CVEID Linuxulator 備考
CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655 △ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃
CVEID Linuxulator 備考 CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655
△ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃 予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 37 Linuxulatorでは攻撃に2日かかっても成功せず
CVEID Linuxulator 備考 CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655
△ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃 予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 38 Linuxulatorではプログラムの実行はできるが、攻撃は失敗
CVEID Linuxulator 備考 CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655
△ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃 予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 39 Linuxulatorではライブラリが不足しており 攻撃コードのコンパイルが不可能
CVEID Linuxulator 備考 CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655
△ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃 予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 40 Linuxulatorではライブラリが不足しており 攻撃コードのコンパイルが不可能
CVEID Linuxulator 備考 CVE-2016-5195 ◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655
△ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃 予備実験: Linuxulator利用によるカーネル脆弱性の回避 ◯: 攻撃を防げた △: 実行またはコンパイルができない 41 Linuxulatorではライブラリが不足しており 攻撃コードのコンパイルが不可能
予備実験: Linuxulator利用によるカーネル脆弱性の回避 42 Linuxulatorでは攻撃を回避することができた FreeBSDでのLinuxアプリケーション互換実行において、 脆弱性回避は十分可能である CVEID Linuxulator 備考 CVE-2016-5195
◯ Copy-on-Writeの脆弱性を利用した攻撃 CVE-2016-9793 ◯ sock_setsockopt()の脆弱性を利用した攻撃 CVE-2016-8655 △ CAP_NET_RAWを利用したuse-after-free攻撃 CVE-2017-6074 △ DCCPプロトコルを用いたuse-after-free攻撃 CVE-2017-1000112 △ UFO(UDP Fragmentation Offload)の脆弱性を利用した攻撃
予備実験: Linuxulatorのパフォーマンス測定 Linuxulatorを用いてアプリケーションを実行した際のオーバーヘッドを検証UnixBench を利用したシステムパフォーマンスの計測 計測条件 - 複数あるテスト項目のうち、システムコールに関連するものが対象 - 各テスト50回計測した平均を示す -
各テスト項目で1コアと4コア、両方の場合を計測 - LinuxとLinuxulator(FreeBSD)の環境を比較 43 OS環境 CPU メモリ Linuxulator (FreeBSD 13.1) Intel Core i5-4278U 16GB Linux 5.15.0 (Ubuntu 22.04)
UnixBenchを利用したパフォーマンステスト 44
UnixBenchを利用したパフォーマンステスト 45 コア数が変わっても 環境の優位差は変化しない
UnixBenchを利用したパフォーマンステスト 46 Linuxulatorが優位 Linuxが優位
UnixBenchを利用したパフォーマンステスト 47 Linuxulator利用におけるオーバーヘッドは許容できる
まとめ 48 課題: コンテナにおけるセキュリティと軽量さの両立 目的: コンテナの軽量さを最大限に維持しつつ、OSカーネル共有に起因する 脆弱性を回避できるセキュアコンテナの実現 提案: 1. 異種OS上でLinuxコンテナを互換実行
a. FreeBSD jailによるLinuxコンテナのリソース制限・隔離機構の実現 b. LinuxulatorによるLinuxアプリケーションの互換実行 2. 異種OS独自のセキュリティ機構の適用 a. FreeBSD Capsicum/CasperをLinuxコンテナへ透過的適用
今後の課題 - 実装と評価 - ユーザ隔離におけるUID/GIDが重複しないような処理 - Linuxコンテナに対してCapsicum/Casperの透過的適用を行う コンテナランタイムの完成 - 実アプリケーションを対象とした性能評価
49