FreeBSD Daily Topics

2011年9月1日Capsicumを知る - Chromeなど優れた事例、本格活用はこれから

9月末または10月のリリースが予定されているFreeBSD 9.0-RELEASEには新しいセキュリティ機能「Capsicum」が登場します。これでFreeBSDにおける主なファイル保護機構は3種類ということになります。Capsicumはケーパビリティの実装系のひとつと分類できるもので、既存の実装と相性がよく、少量のコードでアプリケーションやツールでケーパビリティを実現できるという特徴があります。

保護ドメインやアクセス制御リストなどの保護機構に慣れていると、この「ケーパビリティ」は理解しにくいところがあります。FDTではしばらく、Capsicumを理解するための概念的な説明や、実際の実装例などを紹介して「Capsicum」の機能を紹介していきます。

Chrome is best Capsicum test bed

Capsicumの最もわかりやすい適用事例のひとつは「Chrome」です。人気の高いブラウザであるChrome、またはそのオープンソース版であるChromiumは、マルチプロセスアーキテクチャで構築されています。ブラウザを複数のプロセスに分けて動作させるモデルで、それぞれのプロセスには特定のリソースにしかアクセスしないように制限がかけられています。

複数プロセスで、かつ、リソースアクセスを制限するというのは、実際に実装するとかなり手間な部分です。開発者の力量に左右される面も大きく、ChromeがWindows以外のプラットフォームに進出するのに長い時間がかかった原因のひとつにもなっています。

「Capsicum」でChromeのこの部分を実装すると、きわめて簡単にその目的を達成することができます。実際にその部分のコードを比較した場合、Chromiumにおける関連コードはFreeBSD Capsicumを使った場合がもっとも少ないことが判明しています。9.0-RELEASE以降は、Ports CollectionのChromiumも徐々に「Capsium」を使った実装を置き換わることになるとみられます。

ベースシステムのツールとしては、すでにhastd(8)がCapsicumを使うようにソースコードを変更していますが、ほかのツールはこれからです。Capsicumは処理の最後までファイルディスクリプタを新しく開いて処理するといったようなツールとは相性がいいとはいえません。どのツールのどのポイントでCapsicumを活用していけばいいのかは、FreeBSD開発者の「Capsicum」への理解度の向上とともに、これから取り組まれる課題となります。

おすすめ記事

記事・ニュース一覧