据我了解/dev/fb0,保存了屏幕上显示的数据信息。
作为非特权用户,我可以从中读取这不是一个安全问题吗?这是否意味着任何应用程序都可以监视屏幕?
另外,在其他操作系统上是否有类似的问题?
据我了解/dev/fb0,保存了屏幕上显示的数据信息。
作为非特权用户,我可以从中读取这不是一个安全问题吗?这是否意味着任何应用程序都可以监视屏幕?
另外,在其他操作系统上是否有类似的问题?
哈,有趣。我刚刚在控制台上测试了这个,你是对的:
unprivileged $ echo "ABABABABABAB" > /dev/fb0
(在屏幕左上角写入几个像素)
unprivileged $ dd if=/dev/fb0 of=read_fb.dat bs=12 count=1
unprivileged $ cat read_fb.dat
ABABABABABAB
因此,非特权用户可以写入和读取帧缓冲区。它在我的 X 服务器下不起作用,因为我没有将它配置为使用帧缓冲区,但是如果我更改我的配置它可能会起作用(再说一次,因为 X 没有隔离可言,应用程序可以监听任何另一个(包括鼠标移动和击键),如果您在 X 下运行,这并不会真正增加攻击面 - Wayland 应该会做得更好)。
因此,如果我设法让一个毫无戒心的用户运行一个读取屏幕的程序,我可以得到他的世界统治计划(或者它的部分在屏幕上可见,无论如何):
$ cat my-secret-plan-for-world-domination.txt
$ ...
$ program-which-reads-screen
甚至更糟:
unprivileged $ sudo /bin/bash
root $ output-some-privileged-information-to-screen
root $ exit
unprivileged $ program-which-reads-screen
但是,如果您考虑一下,这确实并不令人惊讶,因为每次您截取屏幕截图时,您都在做同样的事情(在 Linux 上,快速搜索会发现 fbgrab 使用帧缓冲区截取屏幕截图)。所以我想说,任何让你安装能够截取全屏截图的程序的操作系统都有同样的问题。
我认为需要注意的是,有人可以在您不知情的情况下安装屏幕录像机,然后它会记录您的整个会话,即使您没有在 X 下运行并且没有预料到它。它是键盘记录方案的附属品。
在 Qubes OS 中,帧缓冲区由 dom0 处理,因此我假设其他虚拟机无法访问整个屏幕,而只能访问显示其窗口的部分。这仍然意味着在同一个 VM 中运行的应用程序可以相互监视,但不能监视另一个 VM 中生成的输出,并且只有 dom0 进程可以记录整个屏幕。