xterm 中的漏洞导致处理某些字符串时执行代码

xterm 终端仿真器中已发现一个漏洞 (CVE-2022-45063),该漏洞允许在终端中处理某些转义序列时执行 shell 命令。 对于最简单情况下的攻击,显示专门设计的文件的内容就足够了,例如使用 cat 实用程序,或从剪贴板粘贴一行。 printf "\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a" > cve-2022-45063 cat cve-2022-45063

该问题是由于处理用于设置或检索字体选项的代码 50 转义序列时出现错误引起的。 如果请求的字体不存在,则该操作返回请求中指定的字体名称。 您不能直接在名称中插入控制字符,但返回的字符串可以用序列“^G”终止,在 zsh 中,当 vi 样式行编辑模式处于活动状态时,会导致执行列表扩展操作,这可以用于无需显式按 Enter 键即可运行命令。

要成功利用该漏洞,用户必须使用 Zsh 命令 shell,并将命令行编辑器 (vi-cmd-mode) 设置为“vi”模式,发行版中默认情况下通常不使用该模式。 当设置 xterm 设置allowWindowOps=false 或allowFontOps=false 时,也不会出现该问题。 例如,在 OpenBSD、Debian 和 RHEL 中设置了allowFontOps=false,但在 Arch Linux 中默认不应用。

从变更列表和发现问题的研究人员的声明来看,该漏洞在 xterm 375 版本中已得到修复,但根据其他消息来源,该漏洞继续出现在来自 Arch Linux 的 xterm 375 中。 您可以在以下页面上跟踪各个发行版的修复程序发布:Debian、RHEL、Fedora、SUSE、Ubuntu、Arch Linux、OpenBSD、FreeBSD、NetBSD。

来源: opennet.ru

添加评论