freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

联想系统更新中发现的两枚提权漏洞原理分析
2015-11-28 15:00:31

联想最新发布的系统更新公告中的两个提权漏洞是我在几周前提交的(CVE-2015-8109,CVE-2015-8110)IOActive以及联想在这个报告中发出警告!

细节铺垫

在解毒细节之前,我们先来点高大上的概览。联想系统更新以管理员权限弹出GUI应用程序的整个流程如下:

1.用户运行tvsu.exe或者带特定参数运行TvsuCommandLauncher.exe启动系统更新,在此之前联想对IOActive发现的漏洞已经进行了修复。在新版本TvsuServiceCommon.dll中定义了一组任务,参数范围为1~6

2.TvsuCommandLauncher.exe之后,通常联系运行系统权限的SUService服务,处理所需的查询需要更高的权限

3.SUService服务之后,以系统权限打开UACSdk.exe并使用管理员权限运行GUI接口

4.UACSdk.exe检测用户为无权限的普通用户或者是能够提权的Vista管理员

5.根据用户权限:

(1)如果为Vista管理用户,那么就会提升权限

(2)如果为普通用户,UACSdk.exe创建创建一个随机密码的临时管理员账户,应用关闭后就删除

临时管理员账户遵循tvsu_tmp_xxxxxXXXXX格式,小写x为随机生成的小写字符,大写X为随机生成的大写字符,生成的随机密码为19个字节。

这是一个创建随机的用户的示例:

6.通过tvsukernel.exe,主要的联想系统更新GUI便以管理员权限开始运行

BUG 1:联想系统更新帮助主题提权

第一个BUG在帮助系统中,并且有两种进入点。用户可以通过Internet Explorer打开在线帮助主题。

1 - 主应用程序接口中的链接:

2 - 通过点击右上角的帮助图标,然后点击设置:

当以管理员身份运行Tvsukernel.exe主应用程序,浏览器实例打开一个Help URL继承父管理员权限。

在这里,一个无特权的攻击者有许多方法利用浏览器实例来提升帐号为Administrator或者SYSTEM权限。

BUG 2 : 联想系统弱密码函数提权

该BUG的技术含量要高些,步骤5b相关的创建临时管理员账户利用这个漏洞

sub_402190函数用来创建临时管理原账户,包含以下重要的代码片段:

sub_401810函数接收3个参数并负责生成随机字符串格式。

当sub_401810使用RAND生成一个格式,seed初始化是基于增加当前时间,rand值以及如下的定义:

一旦定义好seed,函数使用RAND循环以及division/multiplication特定值生成一个随机值。

注意下图所示的循环

第一个函数调用是用来生成管理员用户名后面的10个字符(tvsu_tmp_xxxxxXXXXX)

由于是基于rand,实际上该算法是可预测的。基于帐户被创建的时间,攻击者是有可能再生成相同用户名的。

对于生成的密码(哪个更重要)联想有一个更安全的方法:在函数sub_401BE0内的Microsoft Crypto API(Method #1),对于这个method我们并不会神人解毒,这是因为IOActive发现的漏洞与此无关。我们要看的当Method #1失效后,Method #2如何生成密码。

返回密码生成相关的代码片段:

我们清楚的看到如果sub_401BE0函数失效,使用RAND-based算法返回执行流程(在sub_401810函数前就定义好了)给临时管理员账户生成一个可预测密码。换句话说,攻击者可通过Method #2预测密码。

这意味着攻击者可以在某些情况下预测用户名和密码,并利用其来提升账户权限!

*原文:ioactive,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文作者:, 转载请注明来自FreeBuf.COM

# 联想系统 # 提权漏洞
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦
收入专辑