CVE: 2014-6271、CVE: 2014-7169 PATCH方案分析

目录

1. RedHat官方给的PATCH第一套方案
2. RedHat官方给的PATCH临时方案
3. RedHat官方给的PATCH第二套方案

1. RedHat官方给的PATCH第一套方案

0x1: Patch修补原理

patch修复的重点有以下几个地方

1. 在builtins/common.h中增加了2种宏定义,对环境变量允许传入和解析的参数进行了限制,这是一种参数化防御的思想

2. 在builtins/evalstring.c中的parse_and_execute()函数中对即将解析的环境变量参数进行了边界检测

类型的定义在command.h中,对指令的类型进行了定义

/command.h

patch的修复思路是对传入的参数的类型进行判断,如果参数不是一个cm_function_def,即不是一个完整的函数定义指令,则认为产生了代码注入

0x2: 修补后存在的bypass问题

patch修复代码的关键点在于对输入参数的类型判断,即

我们可以从这点进行反向思考,如果我们能使我们的command的类型达到cm_function_def的目的,就可以bypass这个patch code了

poc

env X=‘() { (a)=>\‘ sh -c "echo whoami"; cat echo 

通过构造半开的半闭合"{"来伪造出一个未完成的函数定义,通过这个半开的函数定义"{",在通过检测逻辑代码的时候,command->type被识别成了cm_function_def,然后在代码解析执行的时候又重新暴露出代码执行的目的,一个典型的bypass逻辑

Relevant Link:

http://ftp.gnu.org/pub/gnu/bash/bash-4.1-patches/bash41-012

2. RedHat官方给的PATCH临时方案

A workaround is available which can mitigate this issue without patching bash. Please note that this workaround has only been subjected to very limited testing, and it may have unintended consequences

0x1: 临时方案的防御思路

bash_ld_preload.c

#include <sys/types.h>
#include <stdlib.h>
#include <string.h>

static void __attribute__ ((constructor)) strip_env(void);
extern char **environ;

static void strip_env()
{
    char *p,*c;
    int i = 0;
    for (p = environ[i]; p!=NULL;i++ )
    {
        c = strstr(p,"=() {");
        if (c != NULL)
        {
            *(c+2) = ‘\0‘;
        }
        p = environ[i];
    }
}

Compile it:

gcc bash_ld_preload.c -fPIC -shared -Wl,-soname,bash_ld_preload.so.1 -o bash_ld_preload.so

Copy bash_ld_preload.so to /lib:

cp bash_ld_preload.so /lib/

修改apache的.so加载路径

vim /etc/init.d/httpd
LD_PRELOAD=/lib/bash_ld_preload.so
export LD_PRELOAD

重启apache

service httpd restart

继续用bypass poc攻击

加载了了patch之后,.so文件对我们的传入的畸形参数进行过滤、清洗,从功能上来说是达到了修复的目的

0x2: 临时方案的风险

这种方案可能导致依赖进行自定义函数的bash指令的程序失效,如果机器上的程序使用了bash脚本命令,并且其中包含了"(){"函数定义,或者是其他的用途,则会直接被删除,风险系数较高,官方的建议是这种临时方案需要谨慎使用

Relevant Link:

http://seclists.org/oss-sec/2014/q3/650
http://ftp.gnu.org/pub/gnu/bash/bash-4.2-patches/bash42-048

3. RedHat官方给的PATCH第二套方案

0x1: Patch的修复原理

1. 对输入的参数进行了参数化定义

2. 对输入参数进行边界剥离

3.  对边界剥离后的参数进行合法性判断

通过这种方案,很好的防御住了半开的代码注入

0x2: Patch方案的风险

经过代码评估,Redhat的这次方案应该没有明显的问题,可以作为稳定的Patch升级方案

Relevant Link:

https://rhn.redhat.com/errata/RHSA-2014-1306.html

Copyright (c) 2014 LittleHann All rights reserved

时间: 2024-08-24 19:36:51

CVE: 2014-6271、CVE: 2014-7169 PATCH方案分析的相关文章

JavaScript基础系列目录(2014.06.01~2014.06.08)

下列文章,转载请亲注明链接出处,谢谢! 链接地址: http://www.cnblogs.com/ttcc/tag/JavaScript%20%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%20%E6%80%BB%E7%BB%93/ 1. Javascript基础---语法(待完成) 2. JavaScript基础---数据类型(待完成) 3. JavaScript基础---Array数组(待完成) 4. JavaScript基础---正则表达式(待完成) 5. Jav

SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”

错误信息 消息号M7053 解决方法 Step 1.使用MMPV进入"关闭账期"界面. Step 2.输入"公司代码"."期间"."会计年度"后,执行(F8). Step 3.使用MMRV进入"查看打开的账期"界面,当前期间仍为"2014/04". Step 4.同 Step 1.Step 2 操作,将期间改为 "05". Step 5.同 Step 3 操作,当前期

2014年上半年中国软件行业市场运行情况分析

2014年上半年,我国软件和信息技术服务业延续稳中趋缓态势,利润稳步增长,软件出口整体趋稳,中心城市加快结构调整,增速低于去年同期水平.下半年,随着世界经济弱势复苏和产业转型调整,将给产业发展带来一定压力,但也面临着“微刺激”政策力度逐渐增大,信息消费热潮带动作用增强,云计算.大数据和移动互联网等重点领域快速发展等机遇,预计全年增速维持在20%-22%之间. 收入增速回落利润平稳增长 1-5月,软件和信息技术服务业收入同比增长20.9%,利润同比增长22.4%. 软件和信息技术服务业受经济下行压

【腾讯Bugly干货分享】Android Patch 方案与持续交付

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度,每次发布一个版本对于开发同学来讲都是一种漫长的煎熬.相比于 iOS 两三天就能达到 80% 的覆盖速度而言,Android 应用版本升级至少需要两周才能达到 80% 的升级率,严重阻碍了版本迭代速度.也导致市场上 App 版本分散,处理 bug 和投

(4.2.32)各大热补丁方案分析和比较

选自: [腾讯bugly干货分享]微信Android热补丁实践演进之路 各大热补丁方案分析和比较 继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术.其中比较著名的有淘宝的Dexposed.支付宝的AndFix以及QZone的classloader超级热补丁方案. 为什么需要热补丁 热补丁:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力 从上面的定义来看,热补丁节省Android大量应用市场发布的时间.同时用户也无需重新安装,只要上线就能

【转】微信、陌陌 架构方案分析

来源:http://www.wubiao.info/401 作者:wubiao 微信.陌陌 架构方案分析 近两年.手机应用.莫过于微信.陌陌之类最受欢迎.但实现原理,分享文章甚少. 故,提出两种方案,供分享:不正确之处.敬请留言学习. 目标 解决大型应用(微信.陌陌级别)中.用户经纬度在不断更新.用户查找频繁的问题. (每分钟1000W级) ==============================================================================

团队项目方案分析

团队项目方案分析 一.前言 对于我所在的项目团队而言:我们团队在经过讨论与分析之后确定了项目的一个大致方向.那么我们为什么会选择这样的一个方案呢?这将会是我们今天讨论的一个主要的话题, 在文章接下来的内容当中,笔者将以问题的形式来讲述整个方案以及我们团队对于这个项目的一些想法. 二.领域前瞻 首先,对于我们目前的项目经历以及项目能力,我们应该有一个合理的预期,这样我们最终所交付的产品才会与我们当下的能力有一个较好的化学反应.那么对于我们该从什么领域入手呢?在此我们团队做了一个比较理性的思考.对于

Glusterfs目录ls性能优化方案分析

Glusterfs目录ls性能优化方案分析 目的和优化思路 讨论了glusterfs对文件系统爬虫rsync/ls目录性能的现有优化措施和可能的进一步优化方案.优化思路是减少本地文件系统的元数据操作,减少fuse client的负载,减少req的网络轮询次数,减少一次网络通信时间,缓存预抓取,并发,异步,bulk 传输 fuse readdirplus centos 6.4最新内核,支持fuse readdirplus.微调mount timeout参数. FUSE: Adaptive NFS-

网页前端页面加载性能测试各工具可行性方案分析

网页前端页面加载性能测试各工具可行性方案分析 征对各个浏览器和工具做了测试,之所以选择的是百度首页测试,因为其比较单一,没有多层嵌套和持续加载,尽量减少其他影响,测试中发现目前有些方案是不可行的,后面征对各个测试结果给出了可行方案和不可行的建议. 1 .webbrowser(内核IE10)和IE10浏览器的比较: Webbrowser的测试方法为,先执行清除浏览器缓存,从开始导航开始计时,DocumentCompleted时间将2次触发,取最后一次的时间,按照DocumentCompleted解