原理, 背景及部分 PoC:
很不错的文章
我的理解是因为flatpak对托盘控制权限没有进行管理,导致用户可以通过dbus+flatpak权限控制漏洞,间接实现hack
所以通过关闭托盘插件导致托盘无法使用,算是解决这个问题的暴力手段了
感觉这也算不上「托盘插件」的安全漏洞,毕竟它也不提供 sandbox 功能
其实xdg-dbus-proxy支持--call过滤的嘛,限制只能调用/StatusNotifierWatcher上的方法应该就好了
算flatpak漏洞吧。反正我暂时觉得托盘插件复用dbus连接不是一个坏主意。
十分不错的办法,比一刀切好多了
刚刚和fc老师讨论,我感觉应该是作为跳板了
解决办法就在portable的那个commit里了。追一下文章链接就到了。
嗯嗯,谢谢
反正我暂时觉得托盘插件复用dbus连接不是一个坏主意。
我也这样觉得。一个 object implement 多个 interface 是 dbus 支持的行为。还是 flatpak 的过滤太松了。
但我也不知道实际使用中对 interface 做强过滤能不能行得通,会不会有很多不兼容的场景。
我还是认为托盘 bus name 上不应该有任何无关 interface. 并且Flatpak 似乎没有自定义 –call 参数的方法 (其它沙盒管理器存疑).
不过反正 Flatpak 能漏的地方多了, 也不差这一点.
此处标题已修改, 使其更加贴合原文.
理论上把 能暴露给不受信任的客户端的接口 和 需要一定权限才能访问的接口 放到不同的位置是最好的,这样最方便权限隔离。比如 varlink 没有现成的 proxy,如果再像这样把不同权限的接口放在一个 socket 里面那就不好办了
breaks introspection, 但功能实际上 work
你都用dbus总线了…而且xdg-dbus-proxy又不是不提供--call,搞出洞显然是flatpak的锅。
有本事全都用varlink
我记得以前论坛是用bbcode的,好像不是markdown语法。也许我记错了?
用HTML的<del>啦,像这样:
已删除文本
也可以用<s>来只划删除线。