CVE-2019-7304:Linux包管理器snap本地提权漏洞预警

栏目: 编程工具 · 发布时间: 7年前

内容简介:snap是一个Linux系统上的包管理软件。在Ubuntu18.04后默认预安装到了系统中。2019年2月13日,Chris Moberly公开了利用snap包管理工具的服务进程snapd中提供的REST API服务因对请求客户端身份鉴别存在问题从而提权的 漏洞细节。下面是利用已公开的exp进行提权成功后的截图。

CVE-2019-7304:Linux包管理器snap本地提权漏洞预警

0x00 漏洞背景

snap是一个 Linux 系统上的包管理软件。在Ubuntu18.04后默认预安装到了系统中。2019年2月13日,Chris Moberly公开了利用snap包管理 工具 的服务进程snapd中提供的REST API服务因对请求客户端身份鉴别存在问题从而提权的 漏洞细节。下面是利用已公开的exp进行提权成功后的截图。

CVE-2019-7304:Linux包管理器snap本地提权漏洞预警

CVE-2019-7304:Linux包管理器snap本地提权漏洞预警

0x01 漏洞影响

利用该漏洞可以让普通用户伪装成root用户向snapd提供的REST API发送请求。攻击者利用精心构造的安装脚本或Ubuntu SSO可以让并不具有sudo权限的普通用户获得执行sudo的权限,从而获得提升到root用户权限的能力,达到本地 提权的效果。

0x02 漏洞细节

snapd是snap包管理器的一个服务进程。它以root用户权限在后台运行,并允许普通用户以UNIX套接字的方式与其进行通信,并提供服务,其中一些特权操作需要鉴别用户身份(uid)才能执行。其中获取客户端信息的代码最终会使用ucrednetGet(如下)函数来获取客户端用户id,在该函数中会把字符串remoteAddr按”;”分割后寻找”uid=”字符串来判断当前用户的uid,通常情况下,remoteAddr大致为“ pid=5100;uid=1002;socket=/run/snapd.socket;@”这样的格式。从代码逻辑可以看出,后面出现的”uid=”结果会覆盖前面得到的uid。攻击者利用这一点即可通过构造UNIX socket绑定地址,例如”/tmp/sock;uid=0;”。达到伪装root用户发出请求的目的。进而通过snapd执行一些特权操作达到提权的目的。

func ucrednetGet(remoteAddr string) (pid uint32, uid uint32, socket string, err error) {
...
    for _, token := range strings.Split(remoteAddr, ";") {
        var v uint64
...
        } else if strings.HasPrefix(token, "uid=") {
            if v, err = strconv.ParseUint(token[4:], 10, 32); err == nil {
                uid = uint32(v)
            } else {
                break
}

0x03 修复建议

目前漏洞细节已经披露,官方也在2.37.1中予以修复。Ubuntu用户可以通过apt update && apt-get install snap ,将snap升级至最新版本予以修复。

0x04 时间线

2019-01-25 研究人员向snap官方提交漏洞信息

2019-02-13 研究人员公开漏洞细节

2019-02-14 360CERT发布预警通告

0x05 参考链接

  1. https://shenaniganslabs.io/2019/02/13/Dirty-Sock.html

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java核心技术·卷 I(原书第10版)

Java核心技术·卷 I(原书第10版)

[美] 凯.S.霍斯特曼(Cay S. Horstmann) / 周立新 等 / 机械工业出版社 / 2016-9 / CNY 119.00

Java领域最有影响力和价值的著作之一,由拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。第10版根据Java SE 8全面更新,同时修正了第9版中的不足,系统全面讲解了Java语言的核 心概念、语法、重要特性和开发方法,包含大量案例,实践性强。 一直以来,《Java核心技术》都被认为是面向高级程序员的经典教......一起来看看 《Java核心技术·卷 I(原书第10版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具