为什么此命令无需密码即可解锁我的锁定屏幕?(安全问题)

为什么此命令无需密码即可解锁我的锁定屏幕?(安全问题)

我在一家 IT 公司工作,刚来这里不久。我们很多人都在使用 Linux,我发现 Ubuntu 存在问题或安全问题。现在,如果用户启用的进程正在运行某个命令,锁定屏幕是没用的:gnome-screensaver-command --lock或者loginctl unlock-session

所有命令都不需要密码即可重新激活我的桌面,老实说,我认为这非常不安全(或者至少消除了锁定屏幕的安全性)。我原本以为在尝试重新进入桌面环境时它会要求输入密码。

我在开发自己的蓝牙锁功能时注意到了这种行为,如果有人离开电脑,屏幕就会锁定。但我没想到解锁会这么容易。

之前有没有讨论过这个问题?我觉得这很奇怪,它应该是这样的。

答案1

在这两种用例中,这些似乎都是次要问题。

如果有人可以跑gnome-screensaver-commandloginctl 就像你远程您的家、您的 $PATH,基本上是您的整个计算机 — 从您的安全和隐私的角度来看 — 都受到了损害。

如果有人突然闯入您的计算机,他们就无法运行这些东西。

答案2

不,这不是锁屏安全漏洞

您期望发生什么情况您是否会出于正当理由自己做类似的事情?比如说,您正在使用另一台计算机,然后通过 ssh 进入您常用的计算机并远程运行命令?

在我工作的地方,我们确实会这样做,因为我们遇到了奇怪的屏幕保护程序问题,但一直不知道原因——我们的问题阻止某人合法解锁计算机,因此他们无法重新进入计算机。他们通常会走到最近的计算机,通过 ssh 连接到被锁定的计算机,然后远程解锁,然后再走回来。所以你所描述的情况实际上一直在我的工作地点发生。

这不是一个安全漏洞,因为您的计算机应该按照你的指令去做,然后电脑你的用户账户就是你

因此,这可能是安全性的极限,是安全措施无法覆盖的情况,但不是现有安全性的缺陷。这就像说普通围栏存在缺陷,因为它们无法阻止东西攀爬或飞过它们 - 不,这不是缺陷,只是安全性的极限,如果担心的话,你可以实施其他措施。

现实世界的类比

作为一个物理类比,你描述的犯罪行为是小偷趁你不注意偷走你家的钥匙,把它带到某个地方复制,然后在你没有注意到之前把原件放回去……而你暗示这是钥匙的安全漏洞,可以通过禁止钥匙复制服务来解决。这并不是说这会禁止钥匙复制,因为它只会禁止公共服务……人们仍然会复制钥匙,就像如果你把电脑解锁了,人们仍然会偷偷把恶意软件植入你的电脑一样。

如何增强安全性

蓝牙接近解锁你说的听起来有点过分,但如果这对你的地方来说真的是一个巨大的安全问题,那么这是更好的方法之一。你可能甚至不需要自己开发这个,因为可能有产品可以做到这一点。

继续类比,蓝牙近距离功能就像是当你家钥匙离你太远时触发的警报。这就需要窃贼在你附近背着你做坏事;这仍然有可能,但难度更大。

其他一些安全方法可能包括培训人们在离开办公桌时始终锁定屏幕,或者甚至制定一项政策,规定所有如果用户不在视线范围内,则必须锁定计算机的。

这实际上是我工作的地方的政策。如果我离开办公桌,哪怕只是在拐角处停留 60 秒去喝杯咖啡(我的办公桌可以听到咖啡声,我可以从拐角处偷看),如果我在这样做的时候忘记锁上电脑,我就会惹上麻烦。这是我们安全政策的一部分,人们会因此受到训斥。

另一件要做的事情是减少自动锁定超时时间。如果现在是 10 分钟,请将其设置为 1 分钟或更短。在阅读一页文本时,这个时间可能短得令人烦恼,但如果这是一个足够大的安全隐患,那么人们就需要处理它。

减少自动锁定时间在您离开几分钟后,有人碰巧路过并发现您已经离开且您的计算机已解锁的情况下,将阻止您所述情况的发生。此漏洞只会对那些积极跟踪您并随时准备在您离开几秒钟后攻击您的用户帐户的人有效。

带走

100% 安全是不可能的

无论你做什么,都不可能 100% 阻止你所描述的情况。即使计算机的用户在场,也有人可以破坏计算机。当你坐在办公桌前时,有人可能会顺路过来,据说只是为了和你聊天。

嘿,这是你上传的 ABC 文件吗?你可以向上滚动一下,这样我就可以向你指出一些内容。

[当你盯着显示器时将 USB 驱动器插入计算机]

@Paŭlo Ebermann 评论道:“攻击者甚至不需要输入恶意软件的命令,他的 USB 设备也可以假装是键盘。”非常正确,感谢您进一步阐述了这一观点。删除了不必要的步骤。

这是假设你不能让某人运行你的恶意软件他们自己。“嘿,鲍勃,你能试试我们软件的最新版本吗?我想我已经修复了这个错误。”(鲍勃随后运行了他和蒂姆一起开发的软件,但他不知道蒂姆在特定版本中放入了恶意软件,然后蒂姆在 5 分钟内将其删除)

这就够了,你的电脑账户已经 100% 被入侵了,即使锁定

  1. 保护用户帐户免受该用户帐户所采取的操作的影响实际上是不可能的, 和

  2. 实际上,不可能保证该帐户采取的所有操作都正是帐户所有者所希望的。

回到类比……

我之所以使用钥匙示例,是因为您的具体锁屏案例,其中锁屏就是钥匙。但是,正如评论者@David Z 指出的那样,问题实际上更严重。打个比方,钥匙盗窃是一个小问题,因为您家里已经有人在不知情的情况下居住,而且在您不在家时,他们会整天为所欲为,即使您的门是锁着的。

如果你是幸运他们会把东西弄得一团糟,你回家后会看到一个明显被洗劫一空的家。“什么???如果我幸运“是的,因为最坏的情况更糟糕。他们可能会在你家住好几年,总是收拾自己的东西,这样他们就可以继续偷你的东西,在你家住好几年而你却毫不知情。甚至把你家当作犯罪活动的中心,比如贩毒或典当赃物。

这就像您办公室的所有计算机都装有键盘记录器、远程控制软件,不断下载您公司的所有数据,甚至被僵尸网络所利用,以至于这些计算机实际上每天都在从事非法活动而您却毫不知情。而这一切都发生在门还锁着的时候。


我刚刚偶然发现了这个很棒的 XKCD 笑话,它让我想起了这个答案,所以我添加了它。注意底部第五个“安全漏洞”。

CVE-2018-?????:事实证明 Bruce Schneier 只是两个穿着风衣的淘气孩子。

答案3

我想起了这个 U&L 问题关于 sudo 授予 root 访问权限。是的,以您的用户帐户运行的命令能够解锁您的计算机。这是因为,在 Linux 的安全模型下,以您的用户帐户运行的任何命令是你。

您启动的程序发出的命令与您发出的命令(无论是通过 GUI 还是终端)之间实际上没有区别。如果您正在运行自动解锁屏幕的程序,则您的屏幕将被解锁,因为您单击触发程序的按钮与程序以其他方式运行之间没有区别。如果您运行由恶意攻击者编写的程序,那么您的用户帐户将完全且不可挽回地受到损害。此攻击者编写的服务可以解锁您的计算机,是的,但该服务也可能允许远程访问您的会话,或者执行攻击者想要的任何事情。

所以是的,你可以可能将系统配置为仅允许以下程序提示输入密码来解锁系统。但如果你必须这样做,如果你想要阻止以你的用户帐户运行的恶意程序破坏你的用户帐户,那么你已经输了。

总结:该程序可以做到这一点,因为它已经以您的身份登录。可以这样做,因为这是你的帐户,就像你可以做的那样rm -rf ~。类 UNIX 系统传统上不负责阻止你搬起石头砸自己的脚。如果你无法控制你的帐户下运行的内容,那么你已经失去了对帐户的控制权。

答案4

这不是一个安全风险。

如果攻击者以您(或 root)的身份登录,并且能够运行此命令,那么他们不需要 - 他们以您的身份登录,因此他们已经可以以您的身份运行任何程序。

相关内容