Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

安全性

在安全进程中,对其依赖项及运行路径的评估应用了一些限制,以避免产生恶意依赖项替换或符号插入。

对于某个进程来说,如果 issetugid(2) 系统调用返回的结果为 True,运行时链接程序会将该进程归类为安全进程。

对于 32 位目标文件,运行时链接程序已知的缺省可信目录为 /lib/secure/usr/lib/secure。对于 64 位目标文件,运行时链接程序已知的缺省可信目录为 /lib/secure/64/usr/lib/secure/64。实用程序 crle(1) 可用于指定适用于安全应用程序的其他可信目录。使用此技术的管理员应确保已对目标目录进行了适当的保护,以防受到恶意入侵。

如果 LD_LIBRARY_PATH 系列环境变量对安全进程有效,则仅将此变量指定的可信目录用于扩充运行时链接程序的搜索规则。请参见运行时链接程序搜索的目录

在安全进程中,将使用应用程序或其任何依赖项指定的运行路径。但是,运行路径必须是完整路径名,即路径名必须以 "/" 开头。

在安全进程中,仅当 $ORIGIN 字符串扩展为可信目录时,才允许对其进行扩展。请参见安全性。但是,如果 $ORIGIN 扩展与一个已提供依赖项的目录匹配,则该目录是隐式安全的。该目录可用于提供其他依赖项。

在安全进程中,LD_CONFIG 会被忽略。但是,会使用安全应用程序中记录的配置文件。请参见 ld(1)–c 选项。记录的配置文件必须使用全路径名,即路径名必须以“/”开头。使用 $ORIGIN 字符串的已记录配置文件仅限于已知的可信目录。在安全应用程序中记录配置文件的开发者应确保配置文件目录受到适当的保护,以避免恶意侵入。如果缺少记录的配置文件,则安全进程将使用缺省配置文件(如果该配置文件存在)。请参见 crle(1)

在安全进程中,LD_SIGNAL 会被忽略。

在安全进程中使用 LD_PRELOAD 或 LD_AUDIT 环境变量可装入其他目标文件。必须将这些目标文件指定为完整路径名或简单文件名。完整路径名仅限于已知的可信目录。不含 "/" 的简单文件名在定位时将遵循前述搜索路径限制。简单文件名只能解析为已知的可信目录。

在安全进程中,将使用前面描述的路径名限制来处理组成简单文件名的所有依赖项。以完整路径名或相对路径名表示的依赖项按原样使用。因此,安全进程的开发者应确保作为这些依赖项之一引用的目标目录受到适当的保护,以避免恶意侵入。

在创建安全进程时,不要使用相对路径名来表示依赖项或构造 dlopen(3C) 路径名。此限制适用于应用程序及所有依赖项。