注意:对我来说,基本问题是能够访问我(Win 7pipe理员用户)在运行升级程序时设置的networking共享。 通常情况下,升级的程序将无法访问我的非升级networking共享。
根据微软的registry设置EnableLinkedConnections将允许升级进程访问当前login(非boost)的浏览器进程的networking共享。
这个解释是有道理的:
[…]如果您是Administrators组的成员并login,则UAC将您的帐户分配给非特权用户。 当您右键单击“命令提示符”并以pipe理员身份启动时,此运行上下文与您得到的上下文完全分离。 正如您可能已经注意到的那样,在一个环境中连接的networking驱动器在另一环境中是不可见的。 […]
此论坛主题询问此设置打开的漏洞。 给出的答案链接到关于禁用UAC提示的文章 (或者我理解)。
现在的问题是,假设我们没有在域环境中运行,registry设置EnableLinkedConnections在Windows 7系统上执行或允许的是什么。
编辑:我特别感兴趣的一件事是这个设置是否只影响networking驱动器(的可见性)或者是否有其他的影响。
没有对Windows的源代码访问,很难说任何不是猜测的东西。 除了这个免责声明之外,这里是我能够通过阅读这个来搜集的:
UAC在login时创build两个安全令牌:包含用户完整组成员资格的提升令牌 ,以及具有“Administrators”组成员资格的受限令牌 。 每个标记都包含一个明确的本地唯一标识(LUID),用于标识login会话。 他们是两个单独和不同的login会话。
从Windows 2000 Server SP2开始,映射的驱动器(在对象pipe理器名称空间中表示为符号链接)使用创build它们的标记的LUID进行标记(您可以在此KBase文章中find对此行为的一些微软引用,您可以在此博客文章中了解更多关于该function的机制)。 该function的要点是通过一个login会话创build的映射驱动器不能访问另一个login会话。
设置EnableLinkedConnections值触发LanmanWorkstation服务和LSA安全子系统(LSASS.EXE)中的行为,以使LSA将由任一用户令牌映射的驱动器复制到另一个令牌的上下文中。 这允许使用提升的标记映射的驱动器对于受限制的标记和相反的标记是可见的。 这个特性的行为没有任何特殊的地方与非域环境有关。 如果您的用户在非域环境中使用“pipe理员”帐户运行,默认情况下,其限制令牌和高级令牌将具有独立的驱动器映射。
就漏洞而言,来自微软的官方文档似乎缺乏。 在2007年的一次关于UAC的讨论中,我确实发现了 一个微软员工 的评论和回应 。既然答案来自当时被称为“UAC架构师”的Jon Schwartz,往往认为他的答案有可信度。 以下是他对以下问题的回答:“…我还没有find任何信息来描述技术上实际发生的事情,或者是否会打开任何forms的UAC漏洞,您能评论吗?
从技术上来说,它会带来一个小小的漏洞,因为非恶意软件现在可以将驱动器号码映射到高级环境中,除非您最终为您的环境量身定做,否则应该是低风险的。
就个人而言,我想不出一种“利用”这个漏洞的方法,因为用驱动器映射“boost”boost的令牌仍然需要用户实际提升并执行来自该“种子”驱动器映射的恶意内容。 不过,我并不是一名安全研究人员,而且我也许不会用一个很好的思路去提出潜在的漏洞。
我躲过了在我的客户网站中使用EnableLinkedConnections的价值,通过继续客户开始部署Windows NT 4.0的时候开始的趋势 – 让用户使用有限的用户帐号login。 这对我们来说已经很好,并且在Windows 7中继续运行良好。
简而言之,它将您的超级用户凭据与正常的凭据关联起来。 这当然是比较复杂的,但基本上,即使你在Windows 7上的“pipe理员”帐户不是pipe理员,但需要做相当于Linux上的SUDO来执行大量的操作。 在映射networking驱动器时,您需要执行此操作,但networking驱动器只能映射到超级用户,而不是普通用户。 此registry设置将超级用户凭据与用于映射驱动器的标准链接相关联。 这样,两个人都可以访问映射的驱动器,而不仅仅是超级用户。