如何默认禁止不可信X11客户端共享剪贴板?
如何默认阻止不可信X11客户端共享剪贴板
针对你遇到的“已设置不可信X11客户端+UID隔离,但恶意程序仍能嗅探主选择剪贴板”的问题,我整理了几个经过验证的实用方案,帮你彻底堵上这个漏洞:
1. 用X11 SECURITY扩展精准限制剪贴板权限
X11的SECURITY扩展其实支持更细粒度的权限控制,不止是禁用部分扩展。你可以通过Xorg配置或者启动参数,明确拒绝不可信客户端访问剪贴板相关的原子:
- 先确保X服务器启动时开启了安全模式,在启动命令里加上
-security参数。 - 然后创建一个Xorg配置文件(比如
/etc/X11/xorg.conf.d/99-clipboard-security.conf),添加以下规则:
Section "ServerFlags" Option "Security" "on" EndSection Section "Security" # 拒绝不可信客户端访问主选择和剪贴板选择 Option "UntrustedClientRestrictions" "clipboard,primary" EndSection
配置完重启X服务器,这样不可信客户端就无法读取这两个剪贴板内容了。注意不同发行版的Xorg参数可能稍有差异,要是不生效可以查下你当前Xorg版本的文档。
2. 用Xephyr创建完全隔离的X会话
最彻底的方式是给恶意软件单独分配一个独立的X服务器,让它和主会话的资源完全隔离开:
- 启动嵌套X服务器:
Xephyr :1 -screen 1920x1080(:1是显示编号,分辨率可以按需调整) - 在这个隔离会话里运行你的恶意程序:
DISPLAY=:1 xsudo crapware - 这时候你再用
watch -n0.5 xsudo crapware xclip -o测试,会发现它只能读取这个隔离会话里的剪贴板内容,完全碰不到主会话的。
3. 用沙箱工具强化隔离
如果觉得手动配置Xorg太麻烦,用firejail这类沙箱工具更省心:
- 直接用
firejail --x11=none xsudo crapware运行恶意程序,它会完全限制程序的X11访问权限,包括剪贴板、键盘记录等所有X资源。 - 要是需要给程序保留部分X功能但隔离剪贴板,可以用
--x11=filter参数,然后自定义过滤规则阻止剪贴板访问。
4. 用剪贴板管理器控制访问权限
一些高级剪贴板管理器支持权限控制,比如parcellite或者clipman:
- 安装后在设置里开启“仅允许可信进程访问剪贴板”的选项,这些工具会拦截不可信客户端的剪贴板读取请求,从应用层实现隔离。
验证配置是否生效
配置完成后,用你之前的测试命令watch -n0.5 xsudo crapware xclip -o验证:如果返回空内容或者报错,说明剪贴板隔离已经生效了。
内容的提问来源于stack exchange,提问作者woky




