2002年1月,比尔·盖茨发布了可信赖计算技术,从根本上将微软的工作重点从创建功能丰富的操作系统,转移到保障用户的安全和隐私。盖茨先生在备忘录中解释说:
“过去,我们致力于让软件变得拥有更多新功能和特色,让整个平台具有丰富的可扩展性,以便为用户提供更多服务。在这一领域,我们已经作出了出色的工作,但除非用户信赖我们的软件,否则,所有的伟大功能都将变成无关紧要的。”
为了强调这一点,盖茨先生继续说:
“因此,当需要在新功能和安全之间进行选择时,现在我们必须选择安全。我们的产品必须可以立即使用,随着安全形式的发展变化,还必须不断地进行完善和改进。”
大多数人认为这种持续的努力获得了成功,特别是随着用户帐户控制(UAC)功能的到来。
什么是用户帐户控制
微软意识到,如果要建立可信赖计算技术,容许用户在所有时间都拥有系统管理员权限(安全方面的主要风险来源)是不可接受的。因此,从Vista操作系统开始,微软开始了调整。这些调整最终成为用户帐户控制功能,包含了如下所示的内容:
在可行的情况下,进行操作的权限将从系统管理员调整为标准用户。在这方面,最明显的一个例子就是给予标准用户调整时区设置的权限。
利用虚拟化技术在没有获得系统管理员权限的情况下协助程序运行。
对程序进行再处理,这样用户帐户控制功能就可以知道在什么情况下需要系统管理员权限。
确保在系统管理员权限下运行的程序和在标准用户权限下运行的程序是分离的。
用户帐户控制功能的工作原理
用户帐户控制功能是相当复杂的。因此,我推荐大家阅读微软公司的马克·鲁西诺伟奇发表在TechNet上的文章《深入了解WindowsVista的用户帐户控制功能》,在文中他对用户帐户控制功能的工作原理进行了详细的介绍。
在默认设置下,用户帐户控制功能会授予用户标准权限。如果一个程序需要系统管理员权限才能运行的话,用户帐户控制功能将询问用户是否提高该任务的权限。这样的调整可以防止恶意软件在自动安装的时间获取系统管理员权限。
系统管理员批准模式
用户帐户控制功能利用系统管理员批准模式(AAM)来处理权限的调整。AAM在用户的登陆日志中创建了两个配置文件,一个用来处理标准的用户权限,一个用来提供系统管理员权限。正如我前面提到的,UAC可以提升用户的权限。我并不知道这里存在两种类型的调整方式。一种叫作“即时权限提升”(OTS)型,另一种则是“同意”型。
用户使用的权限调整类型,取决于他是否属于本地系统管理员组。如果不属于的话,UAC将使用OTS型,这时请求需要获得属于本地系统管理员组的用户批准。如果用户属于本地系统管理员组的话,UAC将使用同意型的权限调整方式,请求当前用户许可。
看起来UAC是一个非常好的创意。它模仿自Linux的超级用户,同时操作起来更加便利。正如我所想的。进一步的深入研究发现了一些问题。
便利与安全
马克·鲁西诺伟奇和吉姆·阿尔钦(原微软成员)都承认,AAM模式的关注重点是方便,而不是安全。在关于AAM模式的文章中,阿尔钦先生提到:
“该功能(AAM)仅仅是为了方便系统管理员的操作而设计的。系统管理员可以利用该模式在不同的进程之间建立安全边界。在这种情况下,处在隔离中的进程是有可能被干扰的。”
阿尔钦先生进一步解释道:
“如果系统管理员在同一桌面上运行多个任务的话,那恶意软件就有可能从一个非提高进程中攻击或者干预权限提高的进程。”
这是我对此逻辑的理解。如果用户需要在配置文件中进行切换以获得系统管理员权限的话,我相信大多数用户只会切换一次,并永远不会再返回到使用标准用户权限的状态。不过,对于UAC来说,运行权限和程序分离是一条重要的原则。因此,这是否属于可信赖计算技术的一个缺陷。
鲁西诺伟奇先生在另一篇文章《深入了解Windows 7用户帐户控制功能》中解释了微软放弃使用进程隔离技术的原因:
“尽管这属于Windows Vista的一个早期设计目标,利用安全桌面系统的权限调整,Windows诚信机制和用户界面特权隔离来建立安全边界,对标准权限下的进程和系统管理员权限下的进程进行隔离,但有两个原因阻止了该目标的实现,它们是:可用性和应用程序兼容性。”
对于微软来说,公平地讲UAC是聊胜于无的。鲁西诺伟奇先生指出,UAC可以提供哪些帮助:
“因为恶意软件编写者的目标是拥有系统管理员权限的用户,在某种程度上恶意软件的目标是控制整个系统,因此,大多数恶意软件将无法正常使用。”
UAC和Windows 7
在Windows 7中,微软对UAC的工作方式进行了调整。在Windows7中,用户获得了更多的自主权。如果你需要更改用户帐户控制设置,选择用户帐户,进入控制面板,就会发现新选项。这里有四项设置:
最高安全权限:就是“总是提示”,等同于Vista的默认模式。
次级安全权限:是Windows 7的默认设置,在非Windows可执行文件要求权限提升的时间,会提示用户。
三级安全权限:类似次级安全权限。不同之处在于是在用户的桌面上进行提示,而不是安全桌面。
最低安全权限:在该设置下,UAC提供的所有保护功能都被关闭。
除了在UAC处理过程中,更多得听取来自用户的建议外,微软也开始使用“自动权限调整”技术,企图减少提交给用户的提示数量。限于自动权限调整的本质,微软非常重视那些可以利用权限升级的程序。他们在以下方面放宽了限制:
该可执行文件必须由Windows数字出版商签署。
该可执行文件必须位于一个Windows安全目录中。
方便更多,安全更少
看起来,微软并没有给予足够的重视,这引起了安全专家的关注。特别是在研究人员拉斐尔·里韦拉和郑龙开发出两种“概念证明”程序后,其中的一种可以禁用UAC,而另一种可以利用UAC的自动权限提升将攻击者所选择恶意软件的权限予以提升。
真相是什么
在研究UAC发生的变化时,我感觉到发生了一些变化。微软和安全分析师对UAC应该提供什么样的功能有着截然不同的看法。分析师希望微软的UAC应该象Linux一样控制管理权限。
微软并不这样认为。我让鲁西诺伟奇先生阐明了微软目前的观点:
“对于Windows7默认的UAC模式来说,底线是保证用户的体验,减少提示的数量,让他们可以控制修改系统的合法软件。UAC的目标是鼓励更多软件在运行的时间不需要获取系统管理员权限,广大软件开发人员选择在标准用户权限下开发软件。”
真的会是这么简单吗?UAC的真正目的是迫使软件开发人员在标准用户权限下编写代码。
最后的思考
我认为可信赖计算技术和盖茨先生负责的时间相比,并没有变化。你觉得呢?
【编辑推荐】