使用 X11 显示服务器的Ubuntu不能保证Snap包的安全

CoreOS的安全研究人员,Linux内核开发贡献者Matthew Garrett发表文章说:使用 X11 显示服务器的Ubuntu不能保证Snap包的安全。

Ubuntu 16.04于4月21日发布,其中的一个亮点是Snap包格式。Snap让上游开发者更加方便地向Ubuntu发布新版本软件。Snap包自带相关依赖包,并且能自行升级到新版本,不需依赖apt-get包管理器升级。Snap包在沙盒环境中运行,不能窃取用户的数据。

这是Canonical的官方说法。如果你用的是Mir显示服务器,那么这些说法是正确的,Snap确实加固了安全。但是Ubuntu 16.04桌面版的显示服务器默认是X11。X11老旧的设计很不安全,这是众所周知的。Snap软件包可以访问其他X11软件的数据并发送到其他计算机。实际上在X11显示服务器环境中,任何程序都能接收其他程序的按键数据。

Mir和Wayland显示服务器都没有X11的安全漏洞。和Snap类似的一个项目是Gnome的xdg-app,同样是为了让应用程序在沙盒环境中运行,但xdg-app不支持X11,只支持Wayland,因为X11存在先天性的安全隐患。

为了证明他的观点,Matthew Garrett在Github写了一个程序,证明snap包在X11环境下是可以访问用户数据的。读者若有兴趣,可以在虚拟机中安装Ubuntu 16.04,按照下面的步骤测试。

首先在Ubuntu 16.04安装git

sudo apt-get install git

克隆Matthew Garrett的Github仓库

git clone https://github.com/mjg59/xevilteddy

cd进入新创建的xevilteddy目录。

cd xevilteddy/

安装snapcraft

sudo apt-get install snapcraft

安装libxtst-dev

sudo apt-get install libxtst-dev

制作snap包,在当前目录下会生成一个xevilteddy_0.1.snap文件。

snapcraft snap

安装生成的snap包。

sudo snap install xevilteddy_0.1*.snap

运行这个snap程序。

/snap/bin/xevilteddy.xteddy

Matthew Garrett说,运行上面这条命令后会出现一只泰迪熊并记录Firefox浏览器里的键盘敲击。但是我在测试中并没有看见泰迪熊,而是出现一条错误消息: bad system call,中文意思是错误的系统调用。

X11

我在Firefox里输入文字后,终端里也没有显示我的键盘敲击记录。貌似Matthew Garrett的这个小泰迪熊程序有bug。但X window系统的确是不安全的。

Ubuntu服务器版默认没有X11显示服务器,所以Snap包对Ubuntu服务器没有安全威胁。

为这篇文章评分
[Total: 1 Average: 5]

发表评论

电子邮件地址不会被公开。 必填项已用*标注