在安全的进程中,只有将 $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 的可信目录。使用此技术的管理员应确保已对目标目录进行了适当的保护,以防受到恶意入侵。