在Ubuntu中没有密码的本地授权

图片

今天,我们将讨论如何在Ubuntu中找到没有密码的本地授权,而这种授权似乎永远不会关闭。 一切如何发生,请仔细阅读。

一个美丽的夏日傍晚,这篇文章的作者关闭了从Ubuntu 16.04 Desktop到Unity的可用笔记本电脑的盖子,然后回家。 那天晚上真是太美了,我决定休假几天,把短信发给老板,他让我走了。

事实证明,并非所有同事都度过了同样美好的夜晚。 C4n的笔记本电脑了,所以他要我借给他我的笔记本,但要带硬盘。 当然可以了

由此,我们开始了有趣的调查。

发生什么事了


第二天早上, c4n拆开我的笔记本电脑,然后将硬盘插入其中。 他打开机盖,然后看到而不是开始加载操作系统,而是在我的系统上登录了窗口。 它是可单击的,并且c4n开始输入随机密码,但是都无济于事。 沮丧,他按下了电源按钮,然后奇迹发生了。

我没有重新启动计算机,而是成功登录到系统,并且还显示了我打开的最后一个程序和文档。 值得注意的是,这些文档不仅显示出来,而且还为自己工作! 您可以滚动浏览文档并浏览浏览器标签。 c4n立即给我截图。

图片
实际上,屏幕截图是不同的。 下班时,我不会离开KeePass和公司网站。

面对没有密码的本地授权!

当我休假时,我想知道这种现象的错是什么,它是否总是被复制,是否总是被复制,是否在所有系统上都被复制。

原因


事实证明,这种现象的错误在于,当关闭机盖时,我的笔记本电脑没有进入休眠状态,而是进入睡眠状态(即,RAM上的电源保持打开),打开机盖后,加载的OS和最新文件仍保留在RAM中,我一起工作的。 操作系统不知道该硬盘驱动器已从计算机中卸下,并且在您需要访问该硬盘驱动器之前,它将继续工作。

为什么可以通过授权仍然是我们的谜。 我们对PAM模块(可插拔身份验证模块)的工作犯了罪,这些模块很可能不在RAM中,而Ubuntu 16.04错误地处理了它们的缺失,但后来我们意识到问题出在其他方面。

它总是复制并且总是一样吗?


我们的实验始于Ubuntu 16.04。 动作如下:

  1. 我们使计算机进入睡眠模式。
  2. 我们取出硬盘驱动器。
  3. 我们将计算机从睡眠模式唤醒。

此外,事实证明,系统的行为可能有多种选择:

  1. 计算机显示登录窗口,输入随机密码=>我们在清单前面看到用户窗口(所有窗口都在工作)。
  2. 计算机显示登录窗口,输入随机密码=>系统提示密码不正确=>按下电源按钮一次=>我们在滑动之前看到了用户窗口(所有窗口都在工作)。
  3. 计算机显示黑屏(光标在其上移动),按随机键,然后按Enter =>,我们在票据前面看到用户窗口(所有窗口都在工作)。
  4. 计算机显示黑屏(光标在其上移动),按随机键,然后按Enter键=>没有任何反应=>一次按下电源按钮=>我们在滑动之前看到用户窗口(所有窗口都在工作)。

项目3-4最有可能类似于项目1-2,只是出于某种原因,该图形未绘制登录窗口。

实验进行了很多次,并且每次都可以访问用户的窗口,即 重现性为100%。 对于这样一个奇怪的错误,这非常酷。 没错,值得注意的是,只有活动窗口可用,我们无法切换到最小化的窗口。 同样,一段时间后一些窗口消失了,有时观察到了测井效果,但是四种输入方法之一允许返回。

PoC


我们拍摄了一段简短的视频,演示了整个攻击过程。


它可以在所有系统上播放吗?


测试的条件是系统上是否存在所有最新更新。 为什么我们需要一个长期被关闭的错误?

首先,决定检查是否在具有Unity的Ubuntu 16.04的常规PC(而非笔记本电脑)上重现该错误。 有一种理论认为,窗口显示可以某种方式连接到视频卡。 因此,检查是从装有集成和独立显卡的PC上进行的,在所有情况下结果都是相同的-它完美地解决了该错误。

接下来是带有GNOME的Ubuntu 16.04。 在这里,我们感到失望:我没有解决该错误。 研究人员在2011年报告说 ,有时候,当滑出一张纸条时,系统会显示最后一个窗口半秒(很可能会拍摄视频),但到目前为止尚未关闭。

此外,我们将Arch与Wayland和Xorg一起使用-失望,无法正常工作。 Debian 9与GNOME再次令人失望。 它在新的Ubuntu 18.04上也不起作用-毫不奇怪,因为到这个时候,我们已经开始怀疑问题出在Unity中。 因此,我们决定采用Ubuntu 14.04进行最新测试,并查看将窗口管理器从GNOME更改为Unity时Ubuntu 18.04会发生什么情况。 在Ubuntu 14.04上,一切正常(尽管Windows的生存期比04/16短)。 在具有Unity的Ubuntu 18.04上,退出清单后,系统立即崩溃,无法进行进一步的实验。

结论:我们认为本地安装Unity的Ubuntu版本容易受到攻击,即 版本号

  • 10.10
  • 11.04
  • 11.10
  • 12.04
  • 12.10
  • 04/13
  • 13.10
  • 14.04(由我们测试)
  • 14.10
  • 04/15
  • 15.10
  • 04.16(由我们测试)
  • 16.10(由我们测试)
  • 04.17(由我们测试)

令人印象深刻的列表,不是吗? 我们已经对一切进行了测试。 如果有人有机会检查我们尚未测试的其他版本,我们很乐意将其添加到帖子中。

为什么我们认为这很糟糕


漏洞仅允许本地访问数据,而不是所有人,只能访问在应用程序中打开并已部署的数据。 但是,这仍然很关键,因为:

  1. 所使用的数据可能不会保存到磁盘(例如,可编辑文档)。
  2. 数据可以位于加密的主目录中(例如,带有密码的文件)。
  3. 数据可以在加密的闪存驱动器上。
  4. 数据可能需要其他授权(例如在我们的带有KeePass的PoC中)。

除此之外,在Unity中,任何人都可以简单地从登录屏幕(未经授权)将计算机发送到票据。 即 这是一个非常现实的情况,一个人锁定了屏幕并离开去吃午餐,这时攻击者将计算机拖入滑行,取出硬盘驱动器,然后查看该人去吃午餐之前的行为。 仍然需要重新启动计算机并使用磁盘后,此人将不会猜测其数据可能会受到威胁。

怀疑论者会说,通过进行冷启动攻击很容易达到类似的结果,而且效果会更好,但是你们中的任何人多久携带几升液氮的热水瓶?

我们认为问题很严重,应使用Ubuntu编写。

正如我们在Ubuntu中写的


要获取错误,我们必须在launchpad.net上注册,然后创建该错误的描述并从PoC添加视频。 我们获得406个评分分和一个篝火徽章(无论如何)。 他们开始等待。 我们于2018-06-18启动了该错误。

经过长时间的通信,马克·德斯劳里耶斯同志结束了我们的辩论,最终得出一条信息:“我们不会解决任何问题。 就像有物理访问权限一样。”

图片

试图说服的尝试没有成功。 我们被送去彻底忽略了一周。 之后,我们被允许发表此研究报告:

图片

UPD:2018年7月9日,下午16点,我们决定将Bug公开(感谢amarao )。 在启动板的讨论中,该错误已确认为适用于Mate 18.04,而不仅仅是Unity。 社区还坚持认为该错误存在,不应忽略。

Source: https://habr.com/ru/post/zh-CN416425/


All Articles