我在一家 IT 公司工作,不久前开始在这里工作。我们中的许多人都在使用 linux,我发现 Ubuntu 存在问题或安全问题。就像现在一样,锁定屏幕是没有用的,以防用户启用的进程运行某个命令:gnome-screensaver-command --lock
或者loginctl unlock-session
这些命令都不需要密码来重新激活我的桌面,老实说,我认为这非常不安全(或者至少消除了锁定屏幕的安全性)。我原以为它会在尝试重新进入桌面环境时询问密码。
我在开发自己的蓝牙锁定功能时注意到了这种行为,所以如果有人离开电脑,屏幕就会锁定。但没想到解锁这么容易。
之前有没有关于这个的讨论?我觉得很奇怪,它应该是这样的。
在这两个用例中,这些似乎都是次要问题。
如果有人可以远程
gnome-screensaver-command
运行或以您的身份运行,那么您的家、您的 $PATH,基本上是您的整个计算机(从您的安全和隐私的角度来看)都会受到损害。loginctl
如果有人只是在你的计算机上晃来晃去,他们就不能只运行这些东西。
不,这不是锁屏安全方面的缺陷
如果您出于正当理由自己做类似的事情,您期望会发生什么?比如说,您使用的是另一台计算机,然后通过 ssh 连接到您常用的计算机并远程运行命令?
这是我们在我工作的地方实际做的事情,因为我们有奇怪的屏幕保护程序问题并且还没有弄清楚原因 - 我们的问题阻止了某人合法地解锁计算机,因此他们无法重新进入它。他们通常走到最近的计算机,通过 ssh 连接到被锁定的计算机,然后远程解锁,然后返回。所以你描述的事情实际上一直发生在我的工作地点。
这不是一个安全漏洞,因为您的计算机应该按照您的指示去做,并且您的用户帐户就是您的计算机。
因此,这可能是对安全性的限制,是安全措施未涵盖的情况,但不是现有安全性的缺陷。这就像说普通围栏有一个缺陷,因为它们不能阻止东西攀爬或飞过它们 - 不,这不是缺陷,只是对它们的安全性的限制,如果它是一个你可以实施其他措施的一个关心。
现实世界的类比
作为一个物理类比,你描述的犯罪行为是小偷在你不注意的时候偷走了你的房子钥匙,把它带到某个地方复制,然后在你注意到之前把原件放回去......你是在暗示这是一个可以通过禁止密钥复制服务解决的密钥安全漏洞。并不是说这会禁止密钥复制,因为它只会禁止公共服务......人们仍然会复制密钥,就像如果您离开时人们仍然会将恶意软件偷偷带入您的计算机一样。
如何提高安全性
你提到的蓝牙接近解锁听起来有点过分,但如果这对你来说确实是一个巨大的安全问题,那么这是更好的方法之一。你可能甚至不需要自己开发这个,因为可能有产品可以做到这一点。
继续类比,蓝牙接近的事情就像如果你的房子钥匙离你太远就会触发警报。那将需要小偷在你附近做他们的工作。仍有可能,但更难。
其他一些安全方法可能涉及培训人们在离开办公桌时始终锁定屏幕,或者甚至进一步制定一项政策,规定如果用户不在视线范围内,则必须锁定所有计算机。
这实际上是我工作的政策。如果我在拐角处离开办公桌 60 秒去喝杯咖啡(这在我办公桌的耳边,我可以在拐角处偷看它),如果我在这样做时忘记锁定我的电脑我可能会惹上麻烦。这是我们安全政策的一部分,人们因此受到谴责。
另一件事是减少自动锁定超时。如果它们现在是 10 分钟,请将它们放在 1 分钟或更短。阅读一页文本时,这可能会非常短,但如果它是一个足够大的安全问题,那么人们只需要处理它即可。
如果有人在您走开几分钟后碰巧走过并看到您离开并且您的计算机已解锁,则减少自动锁定时间将阻止您所说的情况发生。该漏洞仅适用于那些积极跟踪您并准备好并在您离开后几秒钟内等待突袭您的用户帐户的人。
带走
100% 安全是不可能的
无论您做什么,都不可能 100% 停止您所描述的。即使用户在场,也有人可以颠覆计算机。当您在办公桌前时,有人可能会停下来,据说只是为了和您交谈。
@Paŭlo Ebermann 评论说“你的攻击者甚至没有输入恶意软件的命令,他的 USB 设备也可以伪装成键盘。” 非常正确,感谢您提出更好的观点。删除了多余的不必要的步骤。
这是假设你不能让别人自己运行你的恶意软件。“嗨,鲍勃,你能试试我最新版本的软件吗?我想我已经修复了这个错误。” (Bob 运行他正在与 Tim 一起开发的软件,但不知道 Tim 将恶意软件放入该特定版本中,然后 Tim 在 5 分钟内将其删除)
仅此而已,那么您的计算机帐户已经 100% 受到威胁,即使在锁定时也是如此。
实际上不可能保护用户帐户免受该用户帐户所采取的行动,并且
实际上不可能保证该帐户所采取的行动都是该帐户的人类所有者所希望的。
回到类比...
由于您的特定锁屏案例,我使用了关键示例,其中锁屏是关键。但是,正如评论者@David Z 所指出的,问题实际上更糟。以此类推,钥匙被盗是一个小问题,因为您已经有人住在您的房子里,而您却不知道,即使您的门被锁着,他们也会在您离开时整天为所欲为。
如果你幸运的话,他们会留下一团糟,你会回到一个看起来明显被洗劫一空的家。“什么???如果我幸运的话?” 是的,因为最坏的情况要糟糕得多。他们可以在你家住很多年,总是在自己身上捡拾东西,这样他们就可以在你不注意的情况下不断偷你的东西,在你家住很多年。甚至将您的家用作犯罪活动的中心,例如贩毒或典当被盗物品。
这就像您办公室的计算机都拥有键盘记录器、远程控制软件,不断下载您公司的所有数据,甚至被用作僵尸网络的一部分,以至于这些计算机实际上每天都在从事非法活动,而您甚至都不知道. 就在门还锁着的时候。
我刚刚偶然发现了这个很棒的 XKCD 笑话,它让我想起了这个答案,所以我添加了它。注意底部的第 5 个“安全漏洞”。
我想起了这个关于 sudo 授予 root 访问权限的U&L 问题。是的,在您的用户帐户下运行的命令能够解锁您的计算机。这是因为,在 Linux 的安全模型下,在您的用户帐户下运行的任何命令都是您。
您启动的程序发出的命令与您发出的命令(无论是通过 GUI 还是终端)实际上没有区别。如果您正在运行自动解锁屏幕的程序,则您的屏幕已解锁,因为您单击触发程序的按钮和以其他方式运行的程序之间没有区别。如果您运行由恶意攻击者编写的程序,那么您的用户帐户将完全且不可撤销地受到损害。该攻击者编写的服务可以解锁您的计算机,是的,但该服务还可以允许远程访问您的会话,或者执行攻击者想要的任何操作。
所以是的,您可以将系统配置为仅允许提示您输入密码的程序来解锁您的系统。但是,如果您必须这样做,如果您试图阻止在您的用户帐户下运行的恶意程序损害您的用户帐户,那么您已经失败了。
TL;DR:该程序可以这样做,因为它已经以您的身份登录。您可以这样做,因为这是您的帐户,就像您可以这样做一样
rm -rf ~
。传统上,类 UNIX 系统不会阻止您自爆。如果您无法控制在您的帐户下运行的内容,那么您已经失去了对帐户的控制权。其他答案侧重于攻击者,这绝对不是安全漏洞,因为您需要已经有权运行此命令。
然而,这里还有另一个问题。在公司中,IT 安全需要能够在用户无法更改安全设置的情况下保护计算机。在员工因锁屏而烦恼的情况下,员工可以安排定时作业定期解锁屏幕,有效地保持计算机完全解锁。这大大削弱了设备/帐户的安全性。所以,是的,这是一个问题。这样的系统在公司 IT 安全方面是不够的。
这不是安全风险。
如果攻击者以您(或 root)的身份登录,并且能够运行此命令,那么他们不需要 - 他们以您的身份登录,因此他们已经可以以您的身份运行任何程序。
免责声明:我不从事 IT 工作,但如果有机会,我会玩 BOFH。
在这里,工作场所环境中的正确解决方案似乎是 IT 推出控制/工具/任何强制所有用户的机器运行密码锁定的屏幕锁的东西。禁用将其关闭的特定命令。请记住牢不可破的法则“只要你让系统万无一失,大自然就会发明一个更大的傻瓜”。