secure computing mode (略 seccomp) は、Linuxカーネル における コンピュータセキュリティ機構の一つである。

seccomp
Original author(s) Andrea Arcangeli
初期リリース March 8, 2005; 18 years ago (2005-03-08)
言語 C
Operating system Linux
Type Sandboxing
ライセンス GNU General Public License
Webサイト overview.wiki[1]

解説

編集

seccomp は、プロセスが危険なシステムコールを呼び出せない「安全」な状態に不可逆的に移行させる。ただし、exit(), sigreturn(), 既に開いているファイルディスクリプタに対する read()/ write() を除く。

それ以外のシステムコールが実行されると、カーネルはそのイベントをログに記録するだけでシステムコールを実行しないか、SIGKILL もしくは SIGSYS [2] [3] でプロセスを強制終了させる。

すなわち、seccomp はシステムリソースの仮想化を行うのではなく、プロセスをリソースから完全に独立させる。

seccomp は 引数に PR_SET_SECCMP を指定した prctl(2) システムコールによって実現される。または Linuxカーネル 3.17 以降 [4] では、seccomp(2) システムコール [5] が使われる。

seccomp-bpf は secomp の拡張機能である [6]

これは以下のようなソフトウェア等で利用されている:

seccomp-bpf は古くなった古い systrace [注釈 1] と同等の機能を実現するが、柔軟性とパフォーマンスが良くなる。

歴史

編集

seccomp は、2005年1月に Andrea Arcangeli によって最初のバージョンが開発された。 これは、パブリックグリッド・コンピューティングで使用するために開発された 当時は、信頼されていない compute-bound を安全に実行する手段として意図されていた。

seccomp は、2005年3月8日にリリースされたカーネルバージョン 2.6.12 の Linuxカーネルメインライン にマージされた[9]

seccomp or seccomp-bpf を利用するソフトウェア

編集
  • Android は、Android 8.0 Oreo 以降において、zygote において seccomp-bpf フィルタを利用する [10]
  • systemdサンドボックス オプションは、seccomp に基づいている。[11]
  • QEMU (Quick EMUlator) は、KVM と組み合わせた最新の仮想化のコアコンポーネントにおいて、--sandbox パラメータで seccomp を利用する [12] [要検証]
  • Docker は、隔離されたコンテナ内部でアプリケーションを実行できるようにするソフトウェアである。Docker は、 --security-opt パラメータを利用して、seccomp プロファイルをコンテナに関連付け可能である。
  • Arcangeli の CPUShare は、しばらくの間 seccomp を使う既知の唯一のソフトウェアであった[訳語疑問点] [13]。 2009年2月に執筆されrた, Linus Torvalds は seccomp が実際 [訳語疑問点]によって利用されているかどうかについて疑問を表明している.[14]。 しかし、Google のエンジニアは、Google が Google Chromeウェブブラウザを サンドボックス 化するために、seccomp を利用することを検討していると解答している [15][16]
  • Firejail は オープンソースの Linux サンドボックスプログラムである。Firejail は、Linux 名前空間英語版、Seccomp 及び その他のカーネルレベルのセキュリティ機能を、Linuxのサンドボックス化 および Wine アプリケーションのために利用する[訳語疑問点] [17]
  • Chrome はバージョン 20 の時点で、Adobe Flash Playerをサンドボックス化するのに seccomp-bpf を利用している[要検証] [18]
  • Chrome はバージョン 23 の時点で、レンダラーをサンドボックス化するのに seccomp-bpf を利用している[19]
  • Snap はアプリケーションサンドボックスの形状を指定する。そのために snapd が seccomp, AppArmor、その他のセキュリティ構造に変換するインターフェイスを利用する[訳語疑問点] [20]
  • vsftpd英語版 はバージョン 3.0.0 の時点で、seccomp-bpf サンドボックスを利用している [21]
  • OpenSSH は バージョン 6.0 以降で、seccomp-bpf をサポートしている [7]
  • Mbox は seccomp-bpf と共に ptrace を使う。これにより、ptrace 単体よりも少ないオーバーヘッドで安全なサンドボックスを作成する[22] [要検証]
  • LXD : コンテナ用の Ubuntu の "ハイパーバイザ" [23][24] [要検証]
  • Firefox および Firefox OS は seccomp-bpf を利用している [25][要検証] [26]
  • Tor は、バージョン 0.2.5.1-alpha 以降で、seccomp をサポートしている [27]
  • Dropbox が開発した JPEG 画像を圧縮するツール Lepton はseccomp を利用している[28]
  • Kafel は、読み取り可能なポリシー[訳語疑問点] を seccomp-bpf の バイトコード に変換する 構成言語[訳語疑問点][29]
  • Subgraph OS英語版 は seccomp-bpf を利用している [30][31]
  • Flatpak は seccomp を利用して プロセス分離英語版 を行う [32] [要検証]
  • Bubblewrap は Flatpak から開発された軽量サンドボックスアプリケーションである [33] [要検証]
  • minijail[34] プロセス分離のために seccomp を利用する [35][要検証]
  • SydBox は、ptrace サンドボックス化のランタイムとセキュリティを向上させるために seccomp-bpf を利用する [36] 。 ptrace は、Exherbo Linux ディストリビューションにおいて、パッケージビルドをサンドボックス化するのに使われる [要検証]
  • File (ファイルタイプを決定する Unix プログラム) は、seccomp を利用してランタイム環境を制限する [37]
  • Zathura英語版 (最小限のドキュメントビューワ) は、seccomp フィルタを利用して、異なるサンドボックスモードを実装している [38]
  • Gnome Tracker (Gnome Desktop Environment 環境用のインデキシングおよびプレビューアプリケーション) は、seccomp を利用して、メディアファイルの解析脆弱性の 自動的な悪用[訳語疑問点] を防止する [39]

脚注

編集

注釈

編集
  1. ^ Linux ではもはやサポートされなくなった

出典

編集
  1. ^ code.google.com/archive/p/seccompsandbox/wikis/overview.wiki
  2. ^ Corbet, Jonathan (2015年9月2日). “A seccomp overview”. 2023年3月29日閲覧。
  3. ^ Documentation/prctl/seccomp_filter.txt”. 2023年3月29日閲覧。
  4. ^ Linux kernel 3.17, Section 11. Security”. kernelnewbies.org (2013年10月5日). 2023年3月29日閲覧。
  5. ^ seccomp: add "seccomp" syscall”. kernel/git/torvalds/linux.git - Linux kernel source tree. kernel.org (2014年6月25日). 2023年3月29日閲覧。
  6. ^ Corbet, Jonathan (2012年1月11日). “Yet another new approach to seccomp”. lwn. 2023年3月31日閲覧。
  7. ^ a b Openssh 6.0 release notes”. 2023年4月2日閲覧。
  8. ^ Tinnes, Julien (2012年11月19日). “A safer playground for your Linux and Chrome OS renderers”. The Chromium Blog. 2023年3月31日閲覧。
  9. ^ [PATCH seccomp: secure computing support]”. Linux kernel history. Kernel.org git repositories (2005年3月8日). 2013年4月15日時点のオリジナルよりアーカイブ。2013年8月2日閲覧。
  10. ^ Seccomp filter in Android O”. Android Developers Blog. 2023年4月1日閲覧。
  11. ^ systemd.exec — Execution environment configuration”. freedesktop.org. 2023年4月1日閲覧。
  12. ^ Otubo, Eduardo (2017年9月15日). “QEMU Sandboxing new model pull request”. qemu-devel mailing list archive. 2023年4月1日閲覧。
  13. ^ van de Ven, Arjan (2009年2月28日). “Re: [stable [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole]”. Linux Kernel Mailing List. 2023年4月6日閲覧。
  14. ^ Torvalds, Linus (2009年2月28日). “Re: [PATCH 2/2 x86-64: seccomp: fix 32/64 syscall hole]”. Linux Kernel Mailing List. 2013年8月2日閲覧。
  15. ^ Gutschke, Markus (2009年5月6日). “Re: [PATCH 2/2 x86-64: seccomp: fix 32/64 syscall hole]”. 2013年8月2日閲覧。
  16. ^ Gutschke, Markus (2009年5月6日). “Re: [PATCH 2/2 x86-64: seccomp: fix 32/64 syscall hole]”. Linux Kernel Mailing List. 2013年8月2日閲覧。
  17. ^ Firejail” (英語). Firejail. 2023年4月6日閲覧。
  18. ^ Evans, Chris (2012年7月4日). “Chrome 20 on Linux and Flash sandboxing”. 2023年4月3日閲覧。
  19. ^ Tinnes, Julien (2012年9月6日). “Introducing Chrome's next-generation Linux sandbox”. cr0 blog. 2023年4月2日閲覧。
  20. ^ Snap security policy”. 2017年2月4日時点のオリジナルよりアーカイブ。2023年4月2日閲覧。
  21. ^ Evans, Chris (2012年4月9日). “vsftpd-3.0.0 and seccomp filter sandboxing is here!”. 2023年4月3日閲覧。
  22. ^ MBOX”. 2014年5月20日閲覧。
  23. ^ LXD an "hypervisor" for containers (based on liblxc)” (4 November 2014). 2014年11月8日閲覧。
  24. ^ Where We're Going With LXD”. 2014年11月8日閲覧。
  25. ^ Destuynder, Guillaume (2012年9月13日). “Firefox Seccomp sandbox”. Mozilla Bugzilla. 2023年4月4日閲覧。
  26. ^ Destuynder, Guillaume (2012年9月13日). “Firefox Seccomp sandbox”. Mozilla Wiki. 2023年4月4日閲覧。
  27. ^ Tor ChangeLog”. 2023年4月4日閲覧。
  28. ^ Lepton image compression: saving 22% losslessly from images at 15MB/s”. Dropbox Tech Blog. 2023年4月3日閲覧。
  29. ^ Kafel: A language and library for specifying syscall filtering policies”. 2023年4月1日閲覧。
  30. ^ Subgraph OS”. Subgraph. 2023年4月2日閲覧。
  31. ^ LoganCIJ16: Future of OS”. YouTube. 2021年12月21日時点のオリジナルよりアーカイブ2023年4月2日閲覧。
  32. ^ The flatpak security model – part 1: The basics”. 2017年1月21日閲覧。
  33. ^ bubblewrap”. 2018年4月14日閲覧。
  34. ^ Chromium OS Sandboxing - the Chromium Projects”. 2023年4月1日閲覧。
  35. ^ Minijail [LWN.net]”. lwn.net. 2017年4月11日閲覧。
  36. ^ core/trace/use_seccomp”. dev.exherbo.org. 2021年5月31日閲覧。
  37. ^ File application Sandboxing”. GitHub. 2023年4月7日閲覧。
  38. ^ Zathura seccomp implementation”. 2023年4月8日閲覧。
  39. ^ Gnome tracker seccomp implementation”. 2023年4月8日閲覧。