linux源码漏洞,CVE-2018-19788:UID 大于 INT_MAX 的 Linux 用户任意代码执行漏洞

Linux 操作系统中 UID 值大于 2147483647 的低权限账户可以未授权执行任意 systemctl 命令。该漏洞存在于 PolicyKit(polkit)中,PolicyKit 是类 Unix 操作系统中定义策略、处理系统范围内权限和提供给非特权进程与特权进程通信方式的应用级工具集,比如 sudo。

该漏洞 CVE 编号为CVE-2018-19788,影响 PolicyKit v0.115 版本,这是大多数主流 Linux 发行版中预装的版本,其中包括Red Hat, Debian, Ubuntu和 CentOS。

漏洞是因为 PolicyKit 没有 UID 大于 INT_MAX 的低权限用户的权限请求进行适当的验证。INT_MAX 是计算机程序中用于定义整数变量可以保存的最大值的常量,等于 2147483647,十六进制表示为 0x7FFFFFFF。

也就是说,如果用户在受影响的 Linux 操作系统中创建了 UID 大于 INT_MAX 值的用户账户,攻击者就可以利用 PolicyKit 组件来执行任意的 systemctl 命令。

$ systemctl --version systemd 239 +PAM +AUDIT -SELINUX +IMA +APPARMOR +SMACK -SYSVINIT +UTMP -LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

$ id uid=4000000000 ( someuser ) gid=100 ( users ) groups=100 ( users ) $ systemctl stop sshd.service ( pkttyagent:3342 ) : GLib-GObject-WARNING **: 13:28:53.802: value "-294967296" of type 'gint' is invalid or out of range for property 'uid' of type 'gint' ** ERROR:pkttyagent.c:156:main: assertion failed: ( polkit_unix_process_get_uid ( POLKIT_UNIX_PROCESS ( subject ) ) >= 0 ) $ systemctl is-active sshd.service inactive

安全研究人员 Rich Mirch(Twitter @0xm1rch)发布了该漏洞的 PoC,用 UID 4000000000 证明了该漏洞。

在补丁发布之前,Red Hat 建议系统管理员不要设置负值 UID 或大于 2147483646 的 UID,以缓解该漏洞可能带来的威胁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值