リンカーとライブラリ

セキュリティ

セキュアプロセス (「セキュリティ」を参照) では、$ORIGIN 文字列の拡張は、それがトラストディレクトリに拡張されるときに限り許可されます。他の相対パス名は、セキュリティリスクを伴います。

一見すると、$ORIGIN/../lib のようなパスは一定の場所 (実行可能プログラムの場所で特定される) を指しているように見えますが、それは正しくありません。$ORIGIN を使ってセキュアプログラムを活用するために必要なものは、同じファイルシステム内の書き込み可能なディレクトリです。

次の例は、$ORIGIN がセキュアプロセス内で任意に拡張された場合、上記の事例がどのようにして起こるかを示しています。


% cd /worldwritable/dir/in/same/fs
% mkdir bin lib
% ln $ORIGIN/bin/program bin/program
% cp ‾/crooked-libc.so.1 lib/libc.so.1
% bin/program
..... using crooked-libc.so.1

ユーティリティ crle(1) を使用すれば、$ORIGIN を使用するセキュアアプリケーションに適用されるトラストディレクトリを指定できます。この方法を使用する場合には、管理者は、ターゲットディレクトリを悪意のある侵入から適切に保護する必要があります。