百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux下的McAfee安全扫描软件存在多个漏洞

cac55 2024-10-24 08:51 20 浏览 0 评论

翻译:ResoLutiOn

预估稿费:260RMB(不服你也来投稿啊!)

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

事件综述


近期,有网络安全人员发现:Linux系统下的安全扫描软件McAfee中存在多个安全漏洞【软件传送门:(McAfee for Linux)】,黑客可利用其中一些漏洞盗用Linux系统的root权限,发动RCE攻击。

关于McAfee软件的情况介绍


McAfee VirusScan Enterprise for Linux,一款利用Linux独特访问扫描程序,对系统进行实时防护的安全检测软件,由Intel旗下的子公司McAfee推出。该软件适用于使用Linux系统的企业用户。它能够检测隐藏在存档文件中的Linux病毒并予以阻止;阻止Microsoft Windows恶意软件,防止其通过Linux环境传播;同时还能借助来自McAfee Labs的自动安全更新,确保始终提供最新的Linux病毒防护。由此可见,McAfee VirusScan Enterprise for Linux的功能可谓十分强大。

起初,在很多安全专家看来,这款安全防护软件似乎是“尽善尽美”,它近乎拥有了漏洞研究人员所期待的所有优点,例如:它能够利用系统root权限,这便能够保证用户PC的安全;但在最近一段时间里,McAfee似乎有点淡出人们视野的味道,原因在于在很长一段时间里,McAfee公司已没有对其进行更新了。当发现这些情况时,我决定要细致地了解有关该软件的具体情况。

受到漏洞影响的McAfee版本


安全研究人员证实:从McAfee 1.9.2版本(于2015年2月19日发布)到2.0.2版本(于2016年4月22日发布),都存在多个相同的安全漏洞。它们之间唯一的差别便是:在漏洞利用方面,新版本要比旧版本更容易实施,也即是说:近期的McAfee软件的安全性下降了很多,更容易遭到黑客利用。

漏洞报告时间轴


1.2016年6月23日:安全人员将漏洞的相关情况向McAfee公司的安全应急响应中心(CERT)做了汇报;McAfee公司定于2016年8月23日向公众披露漏洞的具体细节。

2.2016年7月19日:McAfee公司发表声明称: 鉴于关于漏洞的细节仍在不断更新中,他们决定将发布公告的时间延期至9月,最晚可至12月;

3.2016年9月-11月期间:安全人员未与McAfee公司取得联系;

4.2016年12月5日:McAfee公司发布消息称:公司将于12月12日发布关于McAfee软件漏洞的完整报告;

5.2016年12月9日:McAfee公司发表安全公告,定义了漏洞的数字ID;

6.2016年12月12日:完整的McAfee漏洞报告披露。

McAfee软件系统结构


在深入探究McAfee软件漏洞的具体情况之前,我认为有必要先了解有关的软件结构,磨刀不误砍柴工,这将会对之后的漏洞研究有着一定的帮助。

(1)软件所提供的服务:

McAfee VirusScan Enterprise for Linux可向用户提供两种单独的服务:一是用户能够以系统root权限运行该软件;二是还可以一种名为“nails”的非特权用户的身份运行该软件。具体说来,用户可用root权限使用该软件的主要扫描功能,它能够侦听一个本地的Unix网络套接字包(/var/opt/NAI/LinuxShield/dev/nails_monitor)。而网络服务器则可以用nails用户身份来运行,它能够侦听端口0.0.0:55443发出的数据包。

(2)实现进程间的通信

在该软件的架构中,网络服务器是设置在扫描服务上的一个用户交互界面。当用户向网络服务器提交了一个请求时,该请求会被重新格式化,以另一种形式发送给root扫描程序;系统将会在一个HTML界面中显示该用户提交的请求及其相关信息。由于在交互过程中,web服务器不会对用户传递的数据做出太多的限制,这便给黑客利用该漏洞,向系统注入恶意代码提供了可趁之机。

10个具体的McAfee漏洞:

接下来,我将为大家具体介绍10个McAfee VirusScan Enterprise for Linux软件中存在的漏洞。

No.1 CVE-2016-8016:未经验证的远程文件存在性校验漏洞

当我们在浏览网页的编译代码时,即会发现该html文件的存放路径是由tpIt参数来决定。在上图中,该tpIt参数是放置在tasks.html文件中。而运行在web服务器上的Linux Strace工具会显示:可打开/opt/NAI/LinuxShield/apache/htdocs/0409/tasks.html文件,如下所示:

在编译时,如果将tpIt参数放置在地址为..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd(该字符串经过URL加密处理)的不同的页面中,那么编译过程就会出错,系统会返回一个格式错误的页面,并附有错误返回值14。而JavaScript语言中的lookupErrorCode功能函数会根据错误返回值14,向用户发送“web模块使用错误”的提示语句。若将tpIt参数放置在一个不存在的系统路径中,那么错误返回值将变为10,错误提示语句为“系统无法打开该文件”。如下图所示:

若系统中有类似的,已被命名的文件存在,那么系统会向未经授权的用户提示这两种错误编译消息。

那么问题来了,有效的网页编译文件(例如:tasks.html)和无效网页编译文件(例如:..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd)之间的区别是什么呢?

我将会继续深入探究这一问题。

No.2 CVE-2016-8017:非法读取未经授权的远程文件(含有约束条件)

经过查看web服务器所使用的不同类型文件,我发现在有效编译文件的任何两个语句之间要么含有__REPLACE_THIS__字符串,要么含有【% %】标识符。

如果攻击者能够将以上的语句添加到系统的任何一个文件中(其中包括系统日志文件),那么他便可以通过web服务器进行远程读取文件。对于该漏洞的防护措施之一便是,对用户的身份进行严格限制:只允许具有nails身份的用户读取系统中的文件。

No.3 CVE-2016-8018:软件中不含CSRF(跨站请求伪造)令牌验证机制

由于在软件的网页交互界面中,不含有防止CSRF攻击的令牌认证功能,这便使得黑客在通过了系统的身份验证后,可以随意地向系统提交认证请求,发动CSRF攻击。现在,看到一个安全软件竟然存在这样一个高危漏洞,令我着实感到很惊讶。利用CSRF令牌保护缺失而发动攻击,这只是黑客实施远程攻击的手段之一。

No.4 CVE-2016-8019:跨站脚本攻击

当将tpIt参数设置为指向NailsConfig.html文件或Monitor.html文件时,info:7和info:5这两个参数值将会替换用户的不可信输入,并将结果返回给JavaScript的formatData函数。info:7代表的是一个执行语句的清单,其中可能包含:single,show,serverUtcOffset=-25200等语句值。之后,系统会将其放入一个由单引号引导的字符串语句中,传递给formatData函数。若info:7被用来指向形如single’.prototype.constructor=eval('alert(“xss”)’)的语句时,eval函数将在formatData函数被调用之前,便会按照函数的功能,计算字符串中恶意代码的值。

之后,经过修改数据包中的信息,系统会向用户发出一条关于XSS攻击的消息,如下所示:

No.5 CVE-2016-8020:远程代码执行及提权漏洞

在进行扫描系统之前,用户需要填写一个4页的表格:

在表格提交之后,系统会向web服务器提交一个请求。下图展示的是整个过程中使用到的部分参数:

nailsd.profile.ODS_9.scannerPath变量所包含的文件路径,也即是系统进行扫描操作的执行路径。若将路径修改为:/bin/sh,则在网页界面中会出现以下的错误结果:

Strace工具将会给出信息,表明系统会通过一个以root权限运行的进程,将该参数传递给一个execve文件(可执行文件)。

No.6 CVE-2016-8021:利用web界面,可向已知地址写入任意文件

用户可通过web界面指定使用一台网络服务器,并从该服务器上获取有关的更新信息。自从我决定要找到一种能够帮助用户远程向系统内写入文件的方法之后,我便意识到前面提到的那个特点会对我有所帮助。

为了查明更新服务器是如何运作的,我先是备份了本地的资源库,之后从我的服务器上下载了新的资源库,重新配置新的服务器。以此来探究服务器的运作过程。

系统日志文件记录了更新进程所完成的操作,包括:下载一个更新程序包、验证其完成性、解压以及安装等。

生成一个shell脚本其实很简单,但这需要花费一定的时间来进行下载,而且必须在一个网络数据包开始发送之前就要完成。这里有一个替代的方法,即为创建一个带有需求数据包的脚本程序,并在其中加入描述信息,就能够实现与shell脚本相同的功能。

结合CVE-2016-8020(漏洞5)和CVE-2016-8021(漏洞6),我们就能够实现提升用户的系统权限(从nails变为root)。使用CSRF或XSS攻击方式,我们便可以实现远程提权。

No.7 CVE-2016-8022:远程利用身份验证令牌

在一次尝试利用一个XSS漏洞和CSRF漏洞的过程中,我将一个简易的cookie工具和从一名授权用户的系统中“拿到”的cookie融合在一起,作为测试工具来使用。但当我准备试着利用我的PC发起“攻击”时,发现我的身份验证失败了:

我还尝试着写出了一个脚本程序,它能够重设在数据通信过程中的阻断和拦截程序。

接下来的两张图能够告诉我们有效请求和无效请求之间的区别:

有效请求:

无效请求

这看起来似乎有点奇怪:当用户向服务器提交了一个系统已授权的请求时,web服务器就会发送该台PC的IP地址(cookie除外)。虽然这种方式有点不寻常,但能够保证通信的安全。

No.8 CVE-2016-8023:暴力破解身份验证令牌

鉴于之前逻辑解析测试的失败,我更想要探究其他的cookie是如何进行逻辑确认测试的。

下面给出的是nailsSessionId cookie的取值情况。它们是在用户进行登录和注销操作的过程中产生的,仅限于nails身份用户。

而在常规的登录过程中,似乎仅有两部分的cookie的情况发生了改变。Cookie的格式为:

相关变量的参数为:

No.9 CVE-2016-8024HTTP响应拆分攻击

用户可通过点击“系统事件”界面上的导出按钮,以此来导出记录系统日志数据的CSV文件。

当用户发送请求之后,参数info的值会被置为%3A0。一般情况下,该参数的值为multi%2Capplication%2Fvnd.ms-excel。之后,服务器会给系统发送一个名为Content-Type: application/vnd.ms-excel的标头文件(Header)作为响应。攻击者可通过简单地url加密处理标头文件的方式,创建一个藏有恶意标头文件的链接。

No.10 CVE-2016-8025:验证性SQL注入攻击

我在实验中所使用的数据库是SQLite轻型数据库,用来保存相关的设置数据和扫描数据。经过观察我发现,该数据库的安全性较弱,黑客可在该数据库的每一个接口处实施SQL代码注入攻击。这款数据库能够将URL参数转换为SQLite命令语句。使用我在第九号漏洞介绍中提到的CSV导出方法,我们可通过点击一个URL的方式,丢弃CSV文件中的sqlite_master标签。而SQLite中的查询函数select * from sqlite_master;则是被嵌入到了一个URL中。(URL:localhost:55443/0409/nails?pg=proxy&tplt=-&addr=127.0.0.1%3A65443&mon%3A0=db+select+_show%3D%24*++_output%3Dcsv+_table%3Dsqlite_master+&info%3A0=multi%2Capplication%2Fvnd.ms-excel.)

该数据库不用于身份验证,而是用于追踪被扫描过的文件以及系统事件日志。在了解了系统相关的漏洞情况之后,攻击者便可以通过SQL注入攻击来修改系统事件日志,以清除他们在系统中留下的文件追踪记录。

该数据库的模型如下所示:

总结


黑客若将以上所有漏洞均加以利用,便能在Linux系统中以root权限执行RCE攻击,具体如下:

1. 利用CVE-2016-8022(漏洞7)和CVE-2016-8023(漏洞8),可暴力破解身份验证令牌。

2. 可运行被恶意代码感染的更新服务器。

3. 利用CVE-2016-8022(漏洞7),可向服务器发送带有验证令牌的请求,要求服务器自动更新数据。

4. 利用CVE-2016-8021(漏洞6),可迫使目标PC自动创建恶意脚本。

5. 利用CVE-2016-8020(漏洞5)和CVE-2016-8021(漏洞6),可采用发送带有验证令牌的不正确请求的方式来发动攻击,以代替原先执行恶意脚本的攻击方式。

6. 在受到感染的PC上,获得root权限的攻击者可直接运行恶意脚本。

相关推荐

服务器用的CPU和个人电脑用的CPU有什么区别?一篇文章告诉你!

服务器cpu和普通cpu的区别你的电脑CPU是‘短跑健将’,服务器CPU却是‘铁人三项选手’——它不追求瞬间爆发力,而要7×24小时扛住千军万马的数据洪流!想知道为什么企业机房敢收天价服务费?答案全藏...

“吃鸡”新版本第1天,玩家进入游戏点击“立即更新”,后悔了!

欢迎诸位小伙伴们来到天哥开讲的《和平精英》“精英小课堂”~每逢两三个月,这款游戏就会迎来一次大版本迭代更新,很多朋友会在第一时间更新版本,前往全新的主题模式里一探究竟。不过也有一些老玩家并不会立刻更新...

中关村在线·aigo存储杯《无畏契约》全国高校争霸赛招募启事

以青春之名,燃电竞之火1赛事背景与宗旨在金秋送爽的9月,芊芊学子们即将回归校园生活。为了给精彩的校园生活锦上添花,由中关村在线与aigo存储联合主办的《无畏契约》全国高校争霸赛正式启幕,旨在为全国高...

【生肖狗】9.7-9.10提醒:人算不如天算,转变即是转机

九月上旬的风,带着秋意的清爽,也带着几分不可捉摸的变数。对于生肖狗的朋友们来说,9月7日到9月10日这四天,格外需要留意“计划与变化”的碰撞——你们向来习惯提前规划,做事稳妥周全...

转转客服IM系统的WebSocket集群架构设计和部署方案

本文由转转技术李帅分享,原题“转转客服IM的WebSocket集群部署方案”,下文有修订和重新排版。1、引言转转作为国内头部的二手闲置交易平台,拥有上亿的用户。用户在使用转转app遇到问题时,一般可以...

上线3天Steam好评率86%,《时间旅者:重生曙光》开启生存恐怖新篇章

这里究竟发生了什么?末日降临,真正的故事悄然启幕。目前,生存恐怖类游戏《时间旅者:重生曙光(Cronos:TheNewDawn)》已在PC(Steam、EpicGamesStore)、P...

什么神仙洗衣机让我一天有28小时?拆开松下「大四洗」藏了啥秘密

说起家庭洗衣的烦恼,想必很多人都有过类似的经历:贴身内衣要单独洗,宝宝的口水巾得小心呵护,宠物玩具怕藏污纳垢,床单被套又体积庞大,把这些东西混在一起洗担心越洗越脏,分开洗又得反复操作,洗完烘、烘完再洗...

爆料人挖出GTA6注册的奇葩域名 延续经典讽刺风格

等待《侠盗猎车手6》的日子跨越了数个春秋,在游戏圈期盼着这部可能成为史上最重磅游戏的过程中,每过一段时间就会有些许消息浮出水面。最新线索来自数据挖掘者Tez2在GTA论坛的发现,他可能偶然发现了关于...

跟着故事去旅行——读《驼峰间:旅行、探险与征服》

作者:郭冰茹《驼峰间》记录了旅行家伊本·白图泰有生之年流传的一则寓言,说一对父子被关进了监狱,有一天儿子问父亲他们每天吃的都是些什么肉,父亲说有牛、羊和骆驼,并且详细地描述了每种动物的特点。但不管父亲...

前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令

在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...

跳票6年后,「丝之歌」首发把Steam服务器干爆了 | 玩点好的

文丨果脯樱花隧道昨天晚上22点,「鸽」了6年的《空洞骑士:丝之歌》终于上线,算是了却不少玩家的执念。毕竟,这款游戏实在让人等了太多太多年,而且曾有过多次定档后跳票的「案底」,不知道把多少人都整出了P...

对标魔兽失败!腾讯版“魔兽”运营一年多后,宣布国际服凉凉

大家好,这里是正惊游戏,我是正惊小弟。有很多游戏都想干掉《魔兽世界》,但是大部分魔兽杀手都知道自己不是魔兽的对手,不过是想蹭一下人气而已。腾讯也有一款曾经想对标魔兽的大作,可是上线才一年半国际服就宣布...

408 Request Timeout:服务器等待客户端发送请求的时间过长。

408RequestTimeout是HTTP状态码之一,表示客户端在发送请求时,服务器等待的时间过长,最终放弃了处理该请求。此问题通常与网络延迟、客户端配置、服务器设置或者应用程序的性能有关...

梦幻西游:9.9维护解读,全新时间服锁定129级

梦幻西游:9.9维护解读,全新时间服锁定129级9月9日维护解读。1、教师节活动开启,一共7天。挂机,答题,收笔墨纸砚,收海马,搞起来。或者是提前收点家具,教师节期间体力珍贵,家具会涨价。又或者是教师...

只是拆掉一面墙,空间就立马大变样,这种设计思路,值得学习

你有没有过这样的经历?刚买的房子户型图看起来方方正正,装修完却发现——玄关鞋柜只能塞在角落,进门就撞墙;餐厅正好在过道中间,吃饭像走流程;明明有四个房间,却有一个空着没用,像块食之无味的鸡肋;客餐厅之...

取消回复欢迎 发表评论: