[建议描述] lxc 至 5.0.1 中的 lxc-user-nic 以 setuid root 安装,可能允许本地用户推断任何文件是否存在,即使在受保护的目录树内也是如此,因为“Failed to open”通常表示文件不存在,而“does not refer to a network namespace path”通常表示文件存在。注意:这与 CVE-2018-6556 不同,因为 CVE-2018-6556 的修复设计基于这样的前提:“我们将向用户报告 open() 失败,但用户无法知道失败的原因”;然而,在许多实际情况中,除了文件不存在之外,没有其他合理的失败原因。
[附加信息] % ls /l ls: cannot open directory '/l': Permission denied % /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic delete lol lol /l/h/tt h h
cmd/lxc_user_nic.c: 1096: main: Failed to open "/l/h/tt" <----- file does not exist. % /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic delete lol lol /l/h/t h h cmd/lxc_user_nic.c: 1101: main: Path "/l/h/t" does not refer to a network namespace path <---- file exist!liblxc-common 拥有一个 SUID 二进制文件,可能被普通用户滥用,以得知文件系统中任何地方是否存在文件,即使在只有 root 用户能列出文件的目录下也是如此。
[漏洞类型] 不安全的权限
[产品供应商] liblxc-common
[受影响的代码库] liblxc-common - 最新版 5.0.1
[受影响组件] /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic SUID 二进制文件。
[攻击类型] 本地
[影响:信息泄露] 是
[攻击向量] 要利用该漏洞,系统上必须安装 liblxc-common 二进制文件。
[发现者] Maher Azzouzi
[参考] https://github.com/lxc/lxc/blob/0b83d71c2c8f3bac9503f894cd84584f79258bb3/lxc.spec.in#L274 https://github.com/lxc/lxc/blob/0b83d71c2c8f3bac9503f894cd84584f79258bb3/src/lxc/cmd/lxc_user_nic.c#L1085-L1104 https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1783591/comments/45
使用 CVE-2022-47952。