セキュリティのリスクが気になるアプリケーションを試験的に実行したいときは、外部ツールのサンドボックスを使うとリスクを大きく軽減することができる。いくつかあるサンドボックスの中でも、他のLinuxプログラムとの依存関係がまったくなく、軽くてオーバーヘッドの少ないSUIDプログラム「Firejail」はその使いやすさで人気が高い。Linuxの名前空間やseccomp-bpf(セキュアコンピューティングモード)を使い、ターゲットとなるアプリケーションをセキュアに隔離して実行することができる。
FirejailはCで書かれており、カーネルのバージョンがLinux 3.5以上の環境であれば問題なく動作する。Dockerなどのコンテナ環境や他のカーネル防御プログラムと併用することも可能で、コマンドラインのほかに、GUIツールの「Firetools」を使うこともできる。当然ながらオープンソース(GPL v2)で公開されており、GitHubからも必要なファイルを入手できる。
- Firejail security sandbox
- GitHub - firejail : Linux namespaces and seccomp-bpf sandbox
2015年11月の公開以来、Firejailはかなり頻繁にアップデートを行っており、この5月にはDebianパッケージでも利用可能になっている。
- パッケージ: firejail -アプリケーション環境を制限するためのサンドボックス
そして現在、Firejailが注力しているのがX11のサポートだ。Firejailの現時点(2016年5月)の安定版は2月にリリースされた0.9.38だが、次のバージョンである0.9.40では、サンドボックスとホスト間でのファイル転送、Ubuntu 14.04のサポートのほか、X11への対応が予定されている。X11のようなヘッドスレスシステムでセキュアな隔離環境を使えるようにするには依存関係に十分注意しなければならない。Firejailはこの課題を解決するため、サンドボックス環境を通常のX11サーバではなく、個別のアプリケーションへのリモートアクセスを可能にするXpra、もしくはXephyr上に構築する。こうすることでメインのXサーバからのキーボードロギングやスクリーンショットツールからのアクセスを防ぐことができる。
Linuxカーネルも開発が進むたびにセキュリティが強化されているが、Firejailはカーネルそのもののセキュリティ機構と組み合わせて使うことで、より安全性を高めることを開発の主眼としている。アプリケーションセキュリティを手軽に強化できるツールとして注目しておきたい。