第5回 「信頼されたPath」という考え方をLIDSで使う

面 和毅
サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/3/25

 第4回「VMwareでLIDSに触れてみよう」では、「ステート」という概念とVMwareイメージの使い方を紹介しました。今回は、LIDS-1系列で拡張された「Trusted Path Execution(TPE)」について説明します。

 Trusted Pathというセキュリティモデル

 Trusted Pathは、セキュリティモデルの中の伝統的な保護機能として知られています。これは、米国国防総省の「オレンジブック」によって提唱されたもので、

「ユーザーが端末からシステムに情報を伝達する際に使われるメカニズムで、ユーザーか『信頼されている(Trusted)ソフトウェア』のみが活性化することができて、ほかのソフトウェアによって模倣されることがないセキュリティモデル」

と定義されています。つまり、ユーザーが端末からプログラムを実行する際にこのメカニズムを適用することにより、「信頼されているユーザー」が実行した「信頼されているソフトウェア」のみが実行されるようにしようということです。

 このメカニズムがシステムに適用されていない場合を簡単に見てみましょう。会社で多くのユーザーが業務に使用しているLinuxサーバに、新たに重大なセキュリティホールが発見されたとします。このバグは、特権を持っていないユーザーであっても突くことができます。バグを悪用する手順は、ユーザーが、

(1)バグを突くソースを持ってきて
(2)コンパイルして
(3)ユーザーのホームディレクトリで実行する

だけで可能です。

 すべてのユーザーに対して「バグを突くソースを入手すること(1)」をさせないことは事実上不可能です(すべてのユーザーの行為を24時間/365日監視し続ければ可能かもしれませんが)。「入手したソースをコンパイルすること(2)」を禁止するのも同様に非常に困難です。仮にLinuxサーバ上からgccなどのコンパイラをすべて削除して使えなくしたとしても、外部でコンパイルしてサーバにコピーすることが可能だからです。

 しかし、「ユーザーのホームディレクトリで実行する(3)」段階で、システムが「信頼されているPathに存在している実行ファイルにしか実行を許可しない」となっていればどうでしょうか。/bin以下や/usr/bin以下のディレクトリをroot以外の書き込みを拒否するように保護して、そのディレクトリに存在しているソフトウェアの実行のみを許可するようにしてしまえば、(3)を防ぐことができます。いい換えれば、信頼されていないソフトウェア(/home以下や/tmp以下にある実行ファイル)の実行を拒否するということです。

 Trusted Pathのメカニズムは、明白に悪意のあるユーザーに対してはもちろん、悪意のない一般ユーザーによるシステムへの(意図しない)危険な行為を防ぐことができます。例えば、メールに付いてくるウイルスです。一般ユーザーが意図せずに、メールを開いただけで実行されるようなウイルスに対しても、それは信頼されたPathからの実行ではないので防ぐことが可能です。

 このように、Trusted Pathのメカニズムを用いて、ユーザーによって、勝手に、適当なプログラムを実行されることを防ごうというコンセプトを「TPE」と呼びます。

 一般的なTPEの考え方

 Trusted Pathのメカニズムは、過去にもLinuxや*BSDにパッチを当てて実現しようと試みられてきました。アンダーグラウンドのセキュリティマガジンとして知られている「Phrack Magazine」上では、Linuxカーネル2.0.33上やOpenBSD 2.4上に当てるパッチが公開されたことがあります。

 これらの実装をまとめるとTPEは、

1.Trusted Path(信頼されたPath)

狭い意味での信頼されたPathで、親ディレクトリがrootにより所有され、そのほかのGroupやAnonymousからWriteの権限を持っていない場合に信頼できるとされる

2.Trusted ACL(信頼されたACL)

信頼されたユーザーのリストで、このリストに載っている(rootを含めた)ユーザーが信頼できるとされる

3.Rule(ルール)

Trusted PathとTrusted ACLの組み合わせによる実行の許可/拒否を記しており、例えば表1のようなRuleに基づき、信頼できないユーザーによる信頼できないPathの実行を拒否する

 
Path
信頼されている 信頼されていない
User
信頼されている
信頼されていない
×
○は実行を許可、×は実行を拒否を意味する

といった3つの構成要素から成り立っています。

 このような一般的なTPEのコンセプトをLIDSに取り込むことにより、バイナリやライブラリが保護されている場合のみに実行を許可したり、モジュールの読み込みを許可するような拡張が「LIDS TPE」になります。

1/2

Index
「信頼されたPath」という考え方をLIDSで使う
Page1
Trusted Pathというセキュリティモデル
一般的なTPEの考え方
  Page2
LIDS TPEの考え方
実際にLIDS TPEを使ってみよう
LIDS TPEだけでは万能ではない


Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間