Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
異種OS機能連携による セキュアコンテナ実現の検討/comsys2022
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
370
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
6
1.2k
そのドキュメント、自動化しませんか?
yuksew
1
420
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
210
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
230
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
7
2.9k
文字起こし基盤の信頼性
abnoumaru
0
120
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
140
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
510
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
480
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
150
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
160
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Mind Mapping
helmedeiros
PRO
1
290
HDC tutorial
michielstock
2
750
Odyssey Design
rkendrick25
PRO
2
730
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
The Curious Case for Waylosing
cassininazir
1
440
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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