Enlightenment 用户环境中发现了一个漏洞 (CVE-2022-37706),该漏洞允许非特权本地用户以 root 权限执行代码。该漏洞尚未修复(零日漏洞),但已有一个公开测试过的利用程序。 Ubuntu 22.04.
问题出在 enablement_sys 可执行文件中,该文件以 suid root 权限运行,并通过 system() 调用执行某些允许的命令,例如使用 mount 工具挂载驱动器。由于传递给 system() 调用的字符串生成函数存在故障,导致运行命令的参数中的引号被移除,从而可以执行自定义代码。例如,运行以下命令时:mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit enablement_sys /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), "/dev/../tmp/;/tmp/exploit" /tmp///net
由于双引号被移除,传递给 system() 函数的不是指定的命令 '/bin/mount … "/dev/../tmp/;/tmp/exploit" /tmp///net',而是不带双引号的字符串 '/bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net'。这将导致命令 '/tmp/exploit /tmp///net' 单独执行,而不是作为设备路径的一部分进行处理。之所以选择字符串 "/dev/../tmp/" 和 "/tmp///net",是为了绕过 Enlightenment_sys 中 mount 命令的参数检查(挂载设备必须以 /dev/ 开头并指向一个现有文件,并且在挂载点指定三个 "/" 字符以达到所需的路径长度)。
来源: opennet.ru
