前几天有消息说 发现了一些漏洞 在 swhkd(Simple Wayland HotKey Daemon)中,由于临时文件、命令行选项和 unix 套接字处理不正确而导致。
该程序是用 Rust 编写的,并在基于 Wayland 协议(在基于 X11 的环境中使用的 sxhkd 进程的配置文件兼容模拟)的环境中处理热键。 该软件包包括一个非特权 swhks 进程,该进程执行热键操作,以及一个 swhkd 后台进程,该进程以 root 身份运行并在 uinput API 级别与输入设备进行交互。 为了组织 swhks 和 swhkd 之间的交互,使用了 Unix 套接字。
Polkit 的规则允许任何本地用户以 root 身份运行 /usr/bin/swhkd 进程并向其传递任意参数。
RPM包的集成 为 openSUSE Tumbleweed 提交的文件中包含不寻常的 Polkit 规则 需要 SUSE 安全团队审查的定义文件。
作为审查的结果,发现了多个安全问题。 个别问题在下面的详细报告中进行了描述。
的 已识别的漏洞, 提到以下内容:
CVE-2022-27815
这个漏洞 允许将进程 PID 保存在具有可预测名称的文件中 并且在其他用户的可写目录(/tmp/swhkd.pid)中,任何用户都可以创建一个/tmp/swhkd.pid文件并将现有进程的pid放入其中,这将导致无法启动swhkd。
在没有防止在 /tmp 中创建符号链接的情况下, 该漏洞可用于创建或覆盖文件 在系统上的任何目录中(PID写入文件)或确定系统上任何文件的内容(swhkd将PID文件的全部内容输出到stdout)。 需要注意的是,在发布的修复中,PID 文件并没有移动到 /run 目录,而是移动到 /etc 目录(/etc/swhkd/runtime/swhkd_{uid}.pid),它也不属于.
CVE-2022-27814
这个漏洞 允许您操纵“-c”命令行选项来指定配置文件 可以确定系统上是否存在任何文件。
与第一个漏洞一样,修复问题令人费解:修复问题归结为外部“cat”实用程序 ('Command::new("/bin/cat").arg(path)现在启动以读取配置文件。输出()')。
CVE-2022-27819
这个问题 它也与“-c”选项的使用有关,它加载并解析整个配置文件,而不检查文件的大小和类型。
例如,由于可用内存不足和创建杂散 I/O 导致拒绝服务,您可以在启动时指定块设备(“pkexec /usr/bin/swhkd -d -c /dev/sda »)或发出无限数据流的字符设备。
通过在打开文件之前重置权限解决了该问题,但解决方案并不完整,因为仅重置了用户 ID (UID),但组 ID (GID) 保持不变。
CVE-2022-27818
这个漏洞 允许您使用 /tmp/swhkd.sock 文件来创建 Unix 套接字,它是在公共可写目录中创建的,导致与第一个漏洞类似的问题(任何用户都可以创建 /tmp/swhkd.sock 并生成或拦截按键事件)。
CVE-2022-27817
在这个漏洞中, 从所有设备和所有会话中接收输入事件,即另一个 Wayland 或控制台会话中的用户可以在其他用户按下热键时拦截事件。
CVE-2022-27816
swhks 进程与 swhkd 一样,使用可公开写入的 /tmp 目录中的 PID 文件 /tmp/swhks.pid。 该问题类似于第一个漏洞,但没有那么危险,因为 swhks 在非特权用户下运行。
最后,如果您有兴趣了解更多,可以咨询 以下链接中的详细信息.