是否应该扩展管理员权限的要求?

信息安全 操作系统 数据泄露 特权帐户 用户界面
2021-08-09 23:23:08

从 xkcd.com看到这部漫画让我想到:

在你说什么之前,不,我知道不要让我的电脑坐在外面登录我的所有帐户。 我已经设置好了,所以几分钟不活动后它会自动切换到我兄弟的。

将管理员权限的要求扩展到连接互联网、运行网络浏览器、读取浏览器和其他软件配置文件等,是当今操作系统开发人员和维护人员应该期待的事情吗?

还是反过来——在桌面环境中,现在真的有必要拥有一个单独的 root 帐户吗?

我了解拥有单独的管理员帐户的主要原因不是为了保护您的数据不被盗,而是防止软件(和其他用户)弄乱他们不应该使用的东西。但不应该扩大保护吗?或者,另一方面,不是让程序在不同的非管理员帐户下运行或使用不同的权限而不是让用户登录到一个更用户友好的帐户吗?

4个回答

漫画的基本思想是用户帐户的分离是为大型机设计的:大型计算机,由许多用户共享在该模型中,潜在的攻击者是其他用户。帐户分离是为了保护用户免受其他用户的伤害;只有神一样的管理员账户才能访问机器上的所有内容,管理员有责任使用他的权力打击试图逃离其账户界限的用户。系统管理员一直喜欢这种模型,即使只是因为它固有的自我奉承效果。

然而,个人计算机不是这样处理的。他们有一个用户希望他的系统上拥有管理员权限。更重要的是,进攻方和防守方都发生了变化。攻击者现在是远程实体——来自外部的非用户,他们将尝试通过各种漏洞进入机器,从广义上讲(这包括 USB 密钥上的病毒、网页上的恶意脚本、远程漏洞网络堆栈...)。用户试图保护的资产大多归结为他们的“在线身份元素”,特别是浏览器 cookie 集及其自然扩展,即用户键入的密码。

漫画以图形的方式指出,单独的管理员帐户绝对不能保护这些资产。它没有害处,但没有附加价值。


操作系统应该做什么?实际上,并不多——更多的是关于Web 浏览器应该做什么的问题。Web 浏览器越来越多地成为操作系统,我们认为的操作系统可能不得不重新命名为“硬件驱动程序集合”。这就是Chrome OS试图充分探索的想法。

大型机中的帐户分离是一项损害遏制功能其目的是防止邪恶的传播,并允许系统管理员对异教徒进行打击并将其踩在脚下,即压制帐户。坏疽的肢体没有被保存,但它被切断了,以便有机体的其余部分在某种程度上保持安全。这如何转化为个人电脑的真正使用方式?请记住,要保护的主要是浏览器 cookie 集。然后,损害遏制需要基于域的沙盒

实际上,cookies 已经是域分离的:来自给定域的服务器可以获取该域的存储 cookie ,而不能获取其他同样,脚本和其他浏览器语言受到同样基于域的同源策略的约束CSRFXSS和所有安全从业者喜欢的相关首字母缩略词仍然是关于跨域边界的。这实际上指向了一个安全模型,其中每个目标域都是它自己的世界,并且给定的浏览器实例应该包含在一个允许访问它的盒子仅域(仅该域中的计算机,仅来自该域的 cookie)。如果一个浏览器实例被破坏,那么沙盒机制有望阻止其他浏览器实例的破坏:如果您的 Facebook 浏览器被黑客入侵,您的 gmail 帐户仍然是安全的。

共享资源仍有争议。即使我们可以让用户在心理上将他的使用模式分离到单独的浏览器实例中(这可以或多或少是自动的,例如,通过让与单个域相关的每组选项卡由其自己的沙盒进程管理),用户仍然拥有独特的屏幕、键盘、大脑、一双眼睛和一组手指。USB 密钥就是一个很好的问题示例:用户将它们视为“文件”,而不是“我的 Facebook 相关任务的文件”。用户将使来自 USB 密钥的文件在系统范围内可用。

此外,用户真的很喜欢跨站点行为。例如,他们真的希望博客站点具有 Facebook 按钮,这些按钮可以在博客站点上执行与 Facebook 相关的事情。真正的任务分离是一个约束。这类似于潜艇中的压力门:即使门保持打开状态,您仍然会注意到它们,并且在决定物体和人员应该去哪里时仍然需要考虑它们。


总而言之,在现代个人计算机中并不真正需要单独的系统管理帐户。您仍然需要一个,不是因为在安全性方面有任何真正的好处(系统管理员帐户不保护需要保护的重要内容),而是因为当前的操作系统仍然以这种方式组织,并且违背它可能会破坏太多东西。一如既往,这主要是一个传统问题。

如果你想减轻入侵的影响,你需要的是应用任务分离,这与操作系统强制执行的进程分离是完全正交的;事实上,Web 浏览器是一个典型的跨多个任务的单一进程的例子,这就是 cookie 存储库的体现,它将您所有最重要的秘密保存在一个地方。

而且,当然,内部分离仍然是一种缓解措施:如何在保持低整体损失的同时在漏洞中幸存下来。如果一开始就不允许违规发生,那就更好了……这再次将问题转化为其他地方。在潜艇的类比中,压力门很好,但避开敌人的鱼雷更好。

我们在这里谈论的是安全边界。物理上在本地机器上的用户和 SYSTEM 上下文(无论可能是哪个操作系统)之间的边界是为了保护系统。系统上的用户和用户运行的各种应用程序之间也存在安全边界,通常通过应用程序自己的身份验证机制来实现。该边界是为了保护应用程序及其数据。

这是两个完全不同的边界,不相交。

此外,漫画(让我们清楚,它是一个网络漫画)是基于一个逻辑谬误。如果我偷了某人的笔记本电脑,我很可能会在未经他们许可的情况下安装驱动程序。

现在,真正的争论是这两个安全边界(以及保护它们的 authn/authz 机制)是否真的应该相交。嗯。漫画本身让我想起了分布式授权策略、联合和 PKI 的各个方面。我们在受控环境中所吸收的所有东西,更不用说不受控制的环境了。

我们可以做得更好。

Admin 帐户的想法是它应该涵盖系统的设置和管理,而不是计算机的一般用途。这适用于企业环境,因为他们不信任他们的用户。

在家庭环境中,大多数人以管理员身份运行并自动登录。这是因为设置帐户的不便不值得感知的好处 - 大多数用户认为他们知道自己在做什么,即使(或特别是)他们患有 Dunnings-Kruger ( http://en.wikipedia.org/ wiki/Dunning%E2%80%93Kruger_effect)。

在理想情况下,操作系统会对每个应用程序及其数据进行沙箱处理。在降低权限下运行软件在理论上是一个好主意,但在实践中,知道赋予该软件什么权限可能很复杂。将该任务委托给软件安装程序是一个巨大的安全漏洞。

您会注意到,Android 尝试通过建议安装应用程序所需的访问权限来实施解决方案。

至于xkcd,在默认帐户上设置密码并在您离开时锁定计算机可以解决该问题。或者至少如果重置管理员密码并不容易(至少在 Windows 上)。

这部漫画所指出的是将单一职责(即管理)从模型中分离出来的有趣性质,但保留对您的在线生活绝对关键的所有内容都可以从一个帐户访问。与其说是职责分离,不如说是职责分离

当然,很多问题都可以通过一次性使用的高熵密码和密码管理器以及禁用“记住我”系统来解决,但我们再次遇到了一个单一的妥协会泄露整个密码集的领域.

但是,拥有一个单独的 root 帐户确实有意义。Windows 上的 UAC 对于损害限制非常有用,因为在您明确同意提升它们之前,以管理员身份运行实际上并不会授予您的进程管理权限。这意味着如果恶意软件进入您的计算机,您可能会丢失一些文件,但它无法更改系统设置或以强大的方式持续存在。

我认为我们应该转向更 Unix 风格的安全架构,其中个人用户帐户用于托管单独的服务,以便更好地控制他们可以访问的内容。Windows 目前并没有真正允许这样做,但有一些警告,操作系统并不是真正设计为使用这种模型,而且本地用户帐户的创建对于这种用途来说相当臃肿。另一方面,Linux 已经积极利用此模型,通过分离每个服务用户所需的权限来帮助提高安全性。