FUSE CVE-2015-3202本地root权限提升漏洞修复建议

  0x01 前言



 

六一即将到来,ubuntu和debian确因为fusermount二进制调用变量不严谨导致曝出高危本地root权限提升漏洞。

该漏洞的产生原因是由于fusermount二进制调用setuid的(geteuid())重置RUID时,它调用/bin/mount才能使用的特权挂载选项, 通常限制如果RUID!= euid;这居然可以接受传递的参数,太可怕了。

在理论上,因为fusermount可以消除参数以确保它的安全。

正如代码中:



 

然而,由于它认为这是被root用户权限调用,它允许通过环境变量进入调试模式,不会管是否为安全的非特权用户和fusermount没有清除的。

因此,错误是环境变量不清除时调用RUID = 0方式。

可以通调试功能在/etc/mtab里设定LIBMOUNT_MTAB变量后,就可以

被滥用覆盖任意文件。

这次红帽子比较有出息,公开说明企业版是不受影响的.RHEL7中/etc/mtab不是一个普通的文件,而是链接到/proc/self/mtab下的,可以防止fusermount运行挂载和卸载(见mtab_needs_update()功能)。即使使用libmount支持调用libmount_mtab环境变量可以挂载的,它也不是由fusermount控制的,是使用类似于目前的Fedora版本。

而在RHEL5和6版本中,/etc/mtab 是一个正常文件,因此fusermount可以运行挂载和卸载命令。然而,在RHEL 6和更早系统版本中挂载和卸载不使用libmount(在RHEL 6,libmount是UTIL-linux的-NG包的一部分,但不是使用mount和umount命令;在RHEL5中,使用util-linux的包是不包含libmount库)。

而且RHEL 7虚拟机管理程序包含libguestfs-winsupport包,其中包括NTFS-3G。但是,NTFS-3G是不是安装为setuid root的,所以不存在权限提升的风险。。

  0x02 影响版本范围

Ubuntu Ubuntu Linux 12.04 LTS i386

Ubuntu Ubuntu Linux 12.04 LTS amd64

Miklos Szeredi FUSE 2.4.1

Miklos Szeredi FUSE 2.2.1

+ Debian Linux 3.1 sparc

+ Debian Linux 3.1 s/390

+ Debian Linux 3.1 ppc

+ Debian Linux 3.1 mipsel

+ Debian Linux 3.1 mips

+ Debian Linux 3.1 m68k

+ Debian Linux 3.1 ia-64

+ Debian Linux 3.1 ia-32

+ Debian Linux 3.1 hppa

+ Debian Linux 3.1 arm

+ Debian Linux 3.1 amd64

+ Debian Linux 3.1 alpha

+ Debian Linux 3.1

Miklos Szeredi FUSE 2.2

Debian Linux 6.0 sparc

Debian Linux 6.0 s/390

Debian Linux 6.0 powerpc

Debian Linux 6.0 mips

Debian Linux 6.0 ia-64

Debian Linux 6.0 ia-32

Debian Linux 6.0 arm

Debian Linux 6.0 amd64

  0x03 攻击POC演示

先以普通用户登录(没有sudo权限的)



 

  执行攻击POC

#给/bin/dash加上s权限(当我们将一个程序文件执行成为进程的时候,该程序文件的拥有者(owner)和拥有组(owner group)可以被存储成为进程的存储身份。在随后进程的运行过程中,进程就将可以选择将真实身份或者存储身份复制到有效身份,以拥有真实身份或者存储身份的权限)

#通过设置LIBMOUNT_MTAB,mtab可以覆盖任意文件用来设置exp。



 


 

看到红色提示框内容标识修改成功,在看下/etc/bash.bashrc内容是否已经被替换成提权文件

想真正提权还是比较鸡肋的,需要su – root或是ssh登录 root一次,才可以真正提权成功(貌似这需要社工了?)

换个管理员账号su –到root去。



 

再切换到demo用户去执行/bin/dash看是否获得root权限了



 

如此root提权成功,可以自由畅游了。

  0x04修复方案

Debian, Ubuntu等系列衍生版本:



 

OpenSuSE使用下面的命令:



 

  0x06 参考来源

https://gist.github.com/taviso/ecb70eb12d461dd85cba

https://www.suse.com/security/cve/CVE-2015-3202.html

https://security-tracker.debian.org/tracker/CVE-2015-3202

https://access.redhat.com/security/cve/CVE-2015-3202

http://www.ubuntu.com/usn/usn-2617-2/

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部