Linux bc 漏洞,CVE-2019-18634:影响Linux和macOS的sudo提权漏洞

e9a9d915d2f51c928462297593d10db2.png

近期,来自苹果的研究人员Joe Vennix在sudo中发现了一个重要的漏洞(CVE-2019-18634),可让普通权限的Linux和macOS用户以root权限运行命令。

这个漏洞只能在特定的配置下利用。

Sudo是最重要、最强大、最常用的实用程序之一,它预装在macOS和几乎所有基于UNIX或linux的操作系统上,是系统的核心命令之一。

sudo可让用户以另一个用户的权限运行程序,默认情况下是超级用户。这个命令最初可解释为“超级用户做”(superuser do),因为旧版本的sudo被设计成只能以超级用户身份运行命令。

只有在sudoers配置文件中启用了“pwfeedback”选项时,才能利用这个漏洞。Sudo的pwfeedback选项可让用户在输入密码时提供可视化的反馈(辅助输入)。

在NIST发布的报告中表示,对于1.8.26版本之前的Sudo中,如果在/etc/sudoers中启用了pwfeedback,那么用户就可以在高权限的sudo进程中触发基于堆栈的缓冲区溢出。pwfeedback在Linux Mint和elementary OS中是默认设置的,不过它在其他操作系统中并不是这样,只有管理员启用才能生效。攻击者需要向tgetpass.c中getln()的stdin传递一个长字符串以触发漏洞。

93d86d3b2096804b4a1b14c583a9ad69.png

专家指出,即使是未在sudoers文件中列出的用户也可利用此漏洞。

Sudo的开发者Todd C. Miller表示,利用漏洞和sudo权限无关,只需要启用了pwfeedback即可。

4a2fe5bb299a7de00ed5b118780b0712.png

当sudo提示输入密码时,可以通过管道符将大量输入传递给sudo,从而重现漏洞,例如:$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id

Password: Segmentation fault

漏洞出现的原因有两个:当从终端设备以外的设备读取数据时,pwfeedback选项不会被忽略。由于缺少终端,已保存的行擦除字符的版本保持其初始值0。

如果出现写错误,擦除星号行的代码就无法正确地重置缓冲区位置,但是会重置剩余的缓冲区长度。因此,getln()函数可以写入缓冲区的末尾。

如果管理员发现了该选项被启用,可以通过将sudoers配置文件中的Defaults pwfeedback更改为Defaults !pwfeedback来禁用它。

Sudo的维护者已发布1.8.31版本,修复了这个漏洞。

Miller解释说:“虽然在1.8.26到1.8.30的版本中也存在类似缺陷,但是由于在sudo在1.8.26中引入了EOF处理,所以漏洞无法利用。”

早在2019年10月,Vennix就在sudo程序中发现了一个安全策略绕过问题,可能被恶意用户或程序利用,以root身份在Linux系统上执行任意命令。本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:https://securityaffairs.co/wordpress/97265/breaking-news/sudo-cve-2019-18634-flaw.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值