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
380
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
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
300
RAG を使わないという選択肢
tatsutaka
1
270
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
160
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.2k
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
530
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.4k
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
400
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
230
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
140
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.2k
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Agile that works and the tools we love
rasmusluckow
331
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Music & Morning Musume
bryan
47
7.2k
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