特権を持つアプリケーションの開発は、運用中の Trusted Solaris システムとは別の、独立した保護環境で行う必要があります。未完成の特権を持つアプリケーションは本質的に信頼できないため、稼動しているシステムのセキュリティに害を及ばないようにする必要があります。そのためには、あらゆる特権アプリケーションについて、以降で紹介する内容を実行することをお勧めします。
安全なアプリケーションのパッケージ化についての詳細は、付録 B 「Trusted Solaris 7 インタフェースリファレンス」を参照してください。
アプリケーションが特権を使用する場合、システムセキュリティポリシーが侵害されます。特権を持つ処理はブラケット化し、機密情報に害が及ばないように制御してください。特権をブラケット化する方法の詳細は 「有効な特権のブラケット化」を参照してください。
アプリケーション内でシェルエスケープを使用すると、エンドユーザーが信頼性を損ねる場合があります。たとえば、メールアプリケーションの中には !command 行をコマンドとして解釈して実行するものがあります。メールアプリケーションがトラステッドプロセスである場合、特権を使用して動作します。エンドユーザーは、この機能を使用し、メールアプリケーションの特権を利用するスクリプトを作成できます。アプリケーションがトラステッド環境で動作する場合は、シェルエスケープの機能を除いてください。
アプリケーションに特権が与えられている場合、アプリケーションをコマンド行から直接実行することは避けてください。これは、エンドユーザーに特権を利用される可能性があるためです。たとえば、コマンドに続けて文書名の入力をエンドユーザーに許すアプリケーションが多く見受けられます。このようなアプリケーションに必須アクセス制御を無効にする特権が与えられていると、アプリケーションが外部アプリケーションに書き込む必要がある場合、通常は表示する特権がない文書をエンドユーザーが開いてしまう可能性があります。
特権アプリケーションの秘密チャネルを見つけ出して除いてください。秘密チャネルとは、意図されていないパスのことをいいます。秘密チャネルが利用されると、必須アクセス制御によって保護されずに情報が転送されます。たとえば、特権を持つマルチラベルのクライアントサーバーアプリケーションで、サーバーにサービス要求の待ち行列があるとします。特権のないクライアントがこの待ち行列に対し要求の追加や削除ができ、待ち行列のサイズに上限がある場合は、待ち行列の状態がいっぱいかそうでないかという情報が、秘密チャネルとして利用される可能性があります。