WordPress是一個(gè)以PHP和MySQL為平臺(tái)的自由開(kāi)源的博客軟件和內(nèi)容管理系統(tǒng),近日在github (https://gist.github.com/anonymous/908a087b95035d9fc9ca46cef4984e97)上爆出這樣一個(gè)漏洞,在其<=4.6.1版本中,如果網(wǎng)站使用攻擊者提前構(gòu)造好的語(yǔ)言文件來(lái)對(duì)網(wǎng)站、主題、插件等等來(lái)進(jìn)行翻譯的話,就可以執(zhí)行任意代碼。
任意代碼執(zhí)行,但有以下兩個(gè)前提:
這里舉一個(gè)真實(shí)場(chǎng)景中的例子:攻擊者更改了某個(gè)插件中的語(yǔ)言文件,并更改了插件代碼使插件初始化時(shí)使用惡意語(yǔ)言文件對(duì)插件進(jìn)行翻譯,然后攻擊者通過(guò)誘導(dǎo)管理員安裝此插件來(lái)觸發(fā)漏洞。
<= 4.6.1
docker pull wordpress:4.6.1
docker pull mysql
docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=hellowp -e MYSQL_DATABASE=wp -d mysql
docker run --name wp --link wp-mysql:mysql -d wordpress
首先我們來(lái)看這樣一個(gè)場(chǎng)景:
在調(diào)用create_function
時(shí),我們通過(guò)}
將原函數(shù)閉合,添加我們想要執(zhí)行的內(nèi)容后再使用/*
將后面不必要的部分注釋掉,最后即使我們沒(méi)有調(diào)用創(chuàng)建好的函數(shù),我們添加的新內(nèi)容也依然被執(zhí)行了。之所以如此,是因?yàn)?code>create_function內(nèi)部使用了eval
來(lái)執(zhí)行代碼,我們看PHP手冊(cè)上的說(shuō)明:
所以由于這個(gè)特性,如果我們可以控制create_function
的$code
參數(shù),那就有了任意代碼執(zhí)行的可能。這里要說(shuō)一下,create_function
這個(gè)漏洞最早由80sec在08年提出,這里提供幾個(gè)鏈接作為參考:
接下來(lái)我們看Wordpress中一處用到create_function
的地方,在wp-includes/pomo/translations.php
第203-209行:
/**
* Makes a function, which will return the right translation index, according to the
* plural forms header
* @param int $nplurals
* @param string $expression
*/
function make_plural_form_function($nplurals, $expression) {
$expression = str_replace('n', '$n', $expression);
$func_body = "
\$index = (int)($expression);
return (\$index < $nplurals)? \$index : $nplurals - 1;";
return create_function('$n', $func_body);
}
根據(jù)注釋可以看到該函數(shù)的作用是根據(jù)字體文件中的plural forms
這個(gè)header來(lái)創(chuàng)建函數(shù)并返回,其中$expression
用于組成$func_body
,而$func_body
作為$code
參數(shù)傳入了create_function
,所以關(guān)鍵是控制$expresstion
的值。
我們看一下正常的字體文件zh_CN.mo
,其中有這么一段:
Plural-Froms
這個(gè)header就是上面的函數(shù)所需要處理的,其中nplurals
的值即為$nplurals
的值,而plural
的值正是我們需要的$expression
的值。所以我們將字體文件進(jìn)行如下改動(dòng):
然后我們?cè)诤笈_(tái)重新加載這個(gè)字體文件,同時(shí)進(jìn)行動(dòng)態(tài)調(diào)試,可以看到如下情景:
我們payload中的)
首先閉合了前面的(
,然后;
結(jié)束前面的語(yǔ)句,接著是我們的一句話木馬,然后用/*
將后面不必要的部分注釋掉,通過(guò)這樣,我們就將payload完整的傳入了create_function
,在其創(chuàng)建函數(shù)時(shí)我們的payload就會(huì)被執(zhí)行,由于訪問(wèn)每個(gè)文件時(shí)都要用這個(gè)對(duì)字體文件解析的結(jié)果對(duì)文件進(jìn)行翻譯,所以我們?cè)L問(wèn)任何文件都可以觸發(fā)這個(gè)payload:
其中訪問(wèn)index.php?c=phpinfo();
的函數(shù)調(diào)用棧如下:
目前官方還沒(méi)有發(fā)布補(bǔ)丁,最新版仍存在該漏洞。
在官方發(fā)布補(bǔ)丁前建議管理員增強(qiáng)安全意識(shí),不要使用來(lái)路不明的字體文件、插件、主題等等。
對(duì)于開(kāi)發(fā)者來(lái)說(shuō),建議對(duì)$expression
中的特殊符號(hào)進(jìn)行過(guò)濾,例如:
$not_allowed = array(";", ")", "}");
$experssion = str_replace($not_allowed, "", $expression);
https://www.seebug.org/vuldb/ssvid-92459
https://gist.github.com/anonymous/908a087b95035d9fc9ca46cef4984e97
http://php.net/manual/zh/function.create-function.php
https://www.exploit-db.com/exploits/32416/
https://bugs.php.net/bug.php?id=48231
http://www.2cto.com/Article/201212/177146.html
https://codex.wordpress.org/InstallingWordPressinYourLanguage
原文地址:http://paper.seebug.org/63/
]]>一、前言
不知這個(gè)漏洞為什么會(huì)被命名為“ Heartbleed”(直譯:心臟出血),也許是漏洞因心跳包缺陷而命名,也許是代表最致命的傷害。但不管怎樣,見(jiàn)到OpenSSL爆出這樣的安全漏洞后,感覺(jué)心真的在滴血。。。談到這個(gè)漏洞危害就要先來(lái)了解下SSL與OpenSSL到底是個(gè)啥,對(duì)現(xiàn)如今的網(wǎng)絡(luò)安全有怎樣的意義,對(duì)我們的日常網(wǎng)上生活有什么影響。
二、SSL是個(gè)啥
我們平時(shí)打開(kāi)網(wǎng)頁(yè)地址前面顯示的http,代表該網(wǎng)頁(yè)是明文傳輸內(nèi)容的,包括我們的密碼與用戶認(rèn)證信息等,這樣就有了一個(gè)很嚴(yán)重的安全隱患,如果有人在我的電腦與網(wǎng)站中間的通信進(jìn)行監(jiān)聽(tīng),就可以輕松獲取密碼,至篡改我們的敏感數(shù)據(jù),所以明文傳輸數(shù)據(jù)是極不安全的!
SSL就這樣誕生了?非也,其實(shí)最開(kāi)始SSL的目的并不是對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,而是早期的電子商務(wù)階段,商家擔(dān)心用戶拍下商品后不付款,或者使用虛假甚至過(guò)期的信用卡,為了讓銀行給予認(rèn)證以及信任,SSL就在這種背景下誕生了。有點(diǎn)扯遠(yuǎn)了,只是想讓大家知道,除了后面我們提到的通信加密,SSL還承擔(dān)著信任認(rèn)證的功能。
SSL安全套接層(Secure Sockets Layer,SSL)是一種安全協(xié)議,在網(wǎng)景公司(Netscape)推出首版Web瀏覽器的同時(shí)提出,目的是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性保障,SSL在傳輸層中對(duì)網(wǎng)絡(luò)通信進(jìn)行加密。如網(wǎng)址前面顯示的是https,就代表是開(kāi)啟了SSL安全支持的站點(diǎn)。
經(jīng)過(guò)漫長(zhǎng)的改進(jìn),SSL最終變成了現(xiàn)在我們看到的樣子,它提供的幾大安全保障:
1.加密用戶與服務(wù)器間傳輸?shù)臄?shù)據(jù)
2.用戶和服務(wù)器的合法認(rèn)證,確保數(shù)據(jù)發(fā)送到正確的服務(wù)器或用戶
3.保證數(shù)據(jù)的完整性,防止中間被非法篡改
一些對(duì)安全性要求很高的如:網(wǎng)絡(luò)銀行、電商支付、帳號(hào)登錄、郵件系統(tǒng)甚至VPN等等服務(wù),在開(kāi)啟了SSL支持后,用戶與企業(yè)即可放心數(shù)據(jù)傳輸?shù)陌踩?,也無(wú)需擔(dān)心信息被他人截獲篡改,進(jìn)而成了信息安全保障最根本的基礎(chǔ),成了安全“標(biāo)配”。
題外話:SSL是標(biāo)配,是最起碼的信息安全保障,但并不代表開(kāi)啟了SSL網(wǎng)站安全就上了幾個(gè)檔次,SSL并不會(huì)解決安全漏洞問(wèn)題(具體是那些問(wèn)題可以看下烏云上的案例)!以后在見(jiàn)到一些拿著SSL做安全噱頭的企業(yè),就明白這其實(shí)說(shuō)明不了他的安全性有多好。
三、OpenSSL是個(gè)啥
OpenSSL簡(jiǎn)單來(lái)講就是套開(kāi)放源代碼的SSL套件,提供了一套基礎(chǔ)的函數(shù)庫(kù),實(shí)現(xiàn)了基本的傳輸層資料加密功能。集成在一些開(kāi)源的軟件項(xiàng)目與操作系統(tǒng)中,用做SSL功能的調(diào)用。注意了,這次的“心臟出血”漏洞就是出現(xiàn)在OpenSSL上。
四、那這個(gè)漏洞有什么影響呢?
科普了一些基礎(chǔ)知識(shí),現(xiàn)在開(kāi)始談?wù)劼┒匆约捌溆绊懓?。之前有提到SSL已經(jīng)是當(dāng)今信息安全的基礎(chǔ)標(biāo)配了,可以說(shuō)所有的產(chǎn)品都信任OpenSSL帶來(lái)的SSL基礎(chǔ)支持,將信息傳輸與數(shù)據(jù)加密的安全性完全依賴OpenSSL,這樣帶來(lái)的隱患就是地基安全一旦動(dòng)搖,整棟大廈都面臨坍塌風(fēng)險(xiǎn),而這種風(fēng)險(xiǎn)不再僅存于想象,他真的就發(fā)生了。。。
“心臟出血”漏洞技術(shù)性細(xì)節(jié)可以參考國(guó)內(nèi)首發(fā)的烏云知識(shí)庫(kù)(關(guān)于OpenSSL“心臟出血”漏洞的分析),漏洞可以隨機(jī)泄漏內(nèi)存中的64k數(shù)據(jù),而且可通過(guò)重復(fù)讀取來(lái)獲取大量?jī)?nèi)存數(shù)據(jù),OpenSSL內(nèi)存區(qū)域又是存儲(chǔ)用戶請(qǐng)求中的明文數(shù)據(jù),其中可能包含源碼、登錄時(shí)提交的明文帳號(hào)密碼、登錄后服務(wù)器返回的合法認(rèn)證因素(cookies)、軟件序列號(hào)、機(jī)密郵件,甚至是可以突破一些系統(tǒng)保護(hù)機(jī)制的關(guān)鍵數(shù)據(jù)。
問(wèn):手機(jī)上網(wǎng)或使用APP受到到影響么?
答:只要數(shù)據(jù)通信走了SSL,服務(wù)器存在漏洞的話是會(huì)受到影響的
問(wèn):64K能存下多少敏感數(shù)據(jù)?
答:不清楚,但 64K 起碼能存下 32768 個(gè)漢字
問(wèn):即使這樣,那泄漏的數(shù)據(jù)會(huì)對(duì)我們?cè)斐墒裁从绊懀?/p>
答:其實(shí)在我們平時(shí)上網(wǎng)購(gòu)物、登錄網(wǎng)站、與好友聊天的時(shí)候,為了保證用戶體驗(yàn)與安全性,咱們機(jī)密數(shù)據(jù)的交換與驗(yàn)證等操作都悄悄的或全部走了SSL安全通道,受到“心臟出血”漏洞的影響,咱們的機(jī)密數(shù)據(jù)就有很大幾率被黑客主動(dòng)獲取。來(lái)看幾個(gè)實(shí)際案例(影響對(duì)象以及敏感數(shù)據(jù)掩蓋處理)
可見(jiàn)雖然很多網(wǎng)站的賬戶登錄系統(tǒng)采用了SSL(HTTPS)的保護(hù),但真正的登錄行為仍是密碼明文傳輸,過(guò)度信任了SSL。有些產(chǎn)品會(huì)提到自己有雙因素令牌驗(yàn)證功能,不受到影響,但不管是雙因素、三因素還是五因素,他只是個(gè)身份驗(yàn)證過(guò)程,成功后系統(tǒng)還是會(huì)給用戶返回認(rèn)證憑據(jù),直接截獲這種認(rèn)證憑據(jù)即可繞過(guò)密碼限制,直接控制用戶帳號(hào)。
給人安全感的SSL現(xiàn)在成了泄漏敏感數(shù)據(jù)的元兇,用戶在企業(yè)修復(fù)漏洞前產(chǎn)生的SSL請(qǐng)求有很大幾率泄漏。一些網(wǎng)站與微博開(kāi)始曝光因漏洞泄漏的用戶帳號(hào)密碼,以及成功登錄與訂單信息的截圖。
五、我勒個(gè)去我該咋辦?
一般情況下SSL都被用于關(guān)鍵的登錄認(rèn)證、交易系統(tǒng)、信息存儲(chǔ)等位置,所以對(duì)于用戶來(lái)說(shuō)最重要的(也是黑客最關(guān)注的)數(shù)據(jù)就是密碼,這里建議4月7日后有登錄過(guò)各種網(wǎng)站的用戶,退出當(dāng)前帳號(hào)注銷會(huì)話并盡量修改密碼,也建議存在該漏洞的廠商對(duì)移動(dòng)類APP用戶強(qiáng)制重新授權(quán)。
不知各位是否在“拖庫(kù)”橫行的今天開(kāi)始嘗試使用一些“安全”的密碼管理軟件?比如K**Pass、L**Pass等,這些軟件會(huì)已安全之名將用戶的密碼存儲(chǔ)在云上,號(hào)稱各種加密處理,但訪問(wèn)這些保存的密碼,無(wú)非還只需要個(gè)帳號(hào)而已,而廠商肯定又為登錄開(kāi)啟了SSL。。。提醒大家警惕余震影響。
漏洞爆發(fā)后有安全團(tuán)隊(duì)隱晦的提出看法:“漏洞不僅存在443(SSL默認(rèn)端口)上,一些已OpenSSL為基礎(chǔ)的服務(wù)軟件都可能受到該漏洞影響”,“可能不僅僅OpenSSL庫(kù)存在此類安全隱患”等,烏云最新的一起漏洞報(bào)告已經(jīng)出現(xiàn)電子郵件系統(tǒng)的泄密案例(WooYun-2014-56344)。
企業(yè)除了用戶系統(tǒng)的OpenSSL升級(jí)外,還要注意使用的各種VPN、防火墻、負(fù)載均衡與郵件等設(shè)備,因?yàn)楹芏嘣O(shè)備封裝的操作系統(tǒng)默認(rèn)OpenSSL庫(kù)為存在漏洞的版本,所以均躺中,下面給出一些工具測(cè)試可能收到影響的版本號(hào):
OpenSSL 1.0.1 到 1.0.1f (包括該版本) 存在漏洞
OpenSSL 1.0.1g 不存在漏洞
OpenSSL 1.0.0 以及分支版本不存在漏洞
OpenSSL 0.9.8 以及分支版本不存在漏洞
發(fā)行版Linux內(nèi)置的OpenSSL安全情況如何?烏云君已知的如centos6.4存在該OpenSSL漏洞,目前官方源已經(jīng)對(duì)1.0.1e分支版本進(jìn)行安全更新(1.0.1e-16.el6_5.7 測(cè)試不存在漏洞),其他白帽子提供的消息,debian(1.0.1e-2+deb7u5 測(cè)試不存在漏洞),烏云君繼續(xù)幫大家整理中。
有一個(gè)小插曲,烏云上某報(bào)告證實(shí)某些軟件的正版授權(quán)服務(wù)器存在OpenSSL內(nèi)存泄漏漏洞,導(dǎo)致大量正版合法序列號(hào)泄漏,可能會(huì)對(duì)購(gòu)買正版軟件的用戶與軟件企業(yè)造成一定經(jīng)濟(jì)損失,請(qǐng)注意!
六、后記
漏洞爆發(fā)后,以烏云漏洞報(bào)告平臺(tái)的報(bào)告情況來(lái)看,這幾乎是整個(gè)互聯(lián)網(wǎng)的浩劫。關(guān)于漏洞已經(jīng)存在好幾個(gè)月之類的八卦新聞就不要在意了,踏踏實(shí)實(shí)的處理好眼下的事情才最重要。烏云君仍在通知企業(yè)修復(fù)漏洞,該問(wèn)題也是烏云今后會(huì)重點(diǎn)關(guān)注的一個(gè)漏洞趨勢(shì)。
目前國(guó)內(nèi)大部分企業(yè)已迅速響應(yīng)修復(fù)漏洞,但不排除已經(jīng)有大量用戶數(shù)據(jù)泄漏,漏洞修復(fù)后還需注意信息泄漏帶來(lái)的“余震”影響!
]]>隨著互聯(lián)網(wǎng)深入人們的生活,瀏覽器的發(fā)展更加豐富多彩,其種類多樣,版本更新速度也日益提高。與此同時(shí),瀏覽器的安全問(wèn)題也備受關(guān)注。下面,我們就扒一扒主流瀏覽器實(shí)現(xiàn)了什么樣的安全機(jī)制。
一、背景
隨著互聯(lián)網(wǎng)的快速發(fā)展,種類繁多的瀏覽器也變得越來(lái)越復(fù)雜,它們不僅分析純文本和HTML,還包括圖像、視頻和其他復(fù)雜的協(xié)議和文件格式等。這些極大地豐富了瀏覽器的功能,給用戶帶來(lái)了方便和更好的瀏覽體驗(yàn),然而也帶來(lái)了一系列的安全問(wèn)題,各種各樣的安全漏洞層出不窮,成為了黑客最易攻擊的對(duì)象之一。為此,瀏覽器廠商也在不懈努力,在積極修復(fù)漏洞的同時(shí),也在瀏覽器安全機(jī)制方面做著努力,本文將展示和對(duì)比主流瀏覽器當(dāng)前對(duì)安全機(jī)制的實(shí)現(xiàn)狀況。
首先來(lái)看看最近全球?yàn)g覽器的市場(chǎng)份額,根據(jù)Net Market Share的統(tǒng)計(jì)數(shù)據(jù),2016年7月份全球?yàn)g覽器的市場(chǎng)份額如下圖所示:Chrome占據(jù)市場(chǎng)份額最多,占50.95%,其次是占29.60%的IE,接下來(lái)依次是Firefox、Safari和Edge,這五款瀏覽器占據(jù)了全球98.27%的市場(chǎng)份額,其影響力非同一般。
圖1 2016年7月份全球?yàn)g覽器市場(chǎng)份額分布圖
二、瀏覽器安全機(jī)制簡(jiǎn)介
近來(lái),我們對(duì)上述五款瀏覽器的安全機(jī)制做了初步的探究,發(fā)現(xiàn)其內(nèi)部的安全機(jī)制大同小異,下面就其主要的安全機(jī)制做一下簡(jiǎn)單介紹。
1、沙箱(Sandbox)
沙箱是一種隔離對(duì)象/線程/進(jìn)程的機(jī)制,控制瀏覽器訪問(wèn)系統(tǒng)資源的權(quán)限,從而達(dá)到保護(hù)用戶的系統(tǒng)不被網(wǎng)頁(yè)上的惡意軟件侵入、保護(hù)用戶系統(tǒng)的輸入事件(鍵盤/鼠標(biāo))不被監(jiān)視、保護(hù)用戶系統(tǒng)中的文件不被偷取等目的。最初的瀏覽器沙箱是基于Hook實(shí)現(xiàn)的,后來(lái)的Chrome沙箱是利用操作系統(tǒng)提供的一些安全機(jī)制實(shí)現(xiàn)的。
2、地址空間布局隨機(jī)化(ASLR)
ASLR是一項(xiàng)緩解緩沖區(qū)溢出問(wèn)題的安全技術(shù)。其原理是將進(jìn)程運(yùn)行所需的系統(tǒng)核心組件和對(duì)象在內(nèi)存中的分布隨機(jī)化。為了防止攻擊者利用在內(nèi)存中跳轉(zhuǎn)到特定地址的函數(shù),ASLR技術(shù)隨機(jī)排列進(jìn)程的關(guān)鍵數(shù)據(jù)區(qū)域的位置,包括可執(zhí)行的部分、堆、棧及共享庫(kù)的位置。
3、JIT Hardening
JIT Hardening是防止對(duì)JIT引擎本身的濫用的機(jī)制。JIT引擎通常在可預(yù)測(cè)的地址空間中放置可執(zhí)行代碼,這無(wú)疑給攻擊者提供了可乘之機(jī)。只要攻擊者計(jì)算出可執(zhí)行代碼放置的地址,極有可能通過(guò)代碼覆蓋來(lái)進(jìn)行惡意活動(dòng)。因此,必須有一項(xiàng)類似于ASLR的技術(shù)來(lái)保護(hù)JIT引擎,即JIT Hardienng。JIT Hardening常用技術(shù)包括:代碼庫(kù)隊(duì)列隨機(jī)化、指令庫(kù)隊(duì)列隨機(jī)化、常量合并、內(nèi)存頁(yè)面保護(hù)、資源限制等。
4、數(shù)據(jù)執(zhí)行保護(hù)(DEP)
DEP是一種阻止數(shù)據(jù)頁(yè)執(zhí)行代碼的機(jī)制。將數(shù)據(jù)所在內(nèi)存頁(yè)標(biāo)識(shí)為不可執(zhí)行,當(dāng)程序嘗試在數(shù)據(jù)頁(yè)面上執(zhí)行指令時(shí)會(huì)拋出異常,而不是去執(zhí)行惡意指令。
5、緩沖區(qū)安全檢查(/GS)
/GS是一種不強(qiáng)制緩沖區(qū)大小限制的代碼常用技術(shù)。通過(guò)將安全檢查插入到已編譯代碼中完成,檢測(cè)某些改寫返回地址的緩沖區(qū)溢出。
6、執(zhí)行流保護(hù)(CFG)
CFG是對(duì)CFI(控制流完整性)的一個(gè)實(shí)用性實(shí)現(xiàn),是一種編譯器和操作系統(tǒng)相結(jié)合的防護(hù)手段,目的在于防止不可信的間接調(diào)用。對(duì)基于虛表進(jìn)行攻擊的利用手段可以有效防御。
7、附加組件簽名機(jī)制
附加組件簽名機(jī)制是Firefox43版本開(kāi)始正式采取的一項(xiàng)對(duì)其附加組件管理的機(jī)制。Mozilla 根據(jù)一套安全準(zhǔn)則對(duì)其附加組件進(jìn)行驗(yàn)證并為其“簽名”,需要簽名的類型包括擴(kuò)展,未被簽名的擴(kuò)展默認(rèn)被禁用。這一機(jī)制對(duì)阻止來(lái)自第三方的惡意擴(kuò)展起到了很好的作用。
8、W^X
W^X是“寫異或執(zhí)行”(WriteXOR Execute)的縮寫,是OpenBSD中富有代表性的安全特性之一。W^R內(nèi)存保護(hù)機(jī)制能夠讓網(wǎng)頁(yè)使用內(nèi)存寫入代碼或執(zhí)行代碼,但不能夠同時(shí)進(jìn)行這兩種操作,可以阻止某些緩沖區(qū)溢出的攻擊。
9、MemGC
MemGC即內(nèi)存垃圾收集器(Memory Garbage Collector),是一種內(nèi)存管理機(jī)制,由IE11的Memory Protector改進(jìn)而來(lái),首次在EdgeHTML和MSHTML中使用,采用標(biāo)記清除(Mark-Sweep)算法對(duì)垃圾進(jìn)行回收,能夠阻止部分UAF(Use After Free)漏洞。
需要指出的一點(diǎn)是,上述幾種安全機(jī)制并不是瀏覽器獨(dú)有,有些機(jī)制,例如ASLR、/GS、CFG等,也被操作系統(tǒng)和編譯器廣泛采用。以上就是對(duì)幾種主要安全機(jī)制的簡(jiǎn)單介紹,不夠全面和詳盡,還請(qǐng)大神勿噴。
三、主流瀏覽器對(duì)安全機(jī)制的實(shí)現(xiàn)情況
對(duì)于前面提到的幾種瀏覽器安全機(jī)制,主流瀏覽器并不是全部實(shí)現(xiàn)了,具體情況如下表所示:
圖2 主流瀏覽器安全機(jī)制的對(duì)比情況表
由表可以明顯看出,除了Safari以外,其他四種瀏覽器均實(shí)現(xiàn)了前六種安全機(jī)制。而Safari不支持緩沖區(qū)安全檢查機(jī)制,未實(shí)現(xiàn)CFG執(zhí)行流保護(hù)機(jī)制但有資料顯示其實(shí)現(xiàn)了控制流完整性(CFI)。對(duì)于后面三種安全機(jī)制,附加組件簽名機(jī)制和W^X機(jī)制是Firefox瀏覽器獨(dú)有的,而MemGC機(jī)制是Egde瀏覽器獨(dú)有的。
在此,還需指出一點(diǎn),雖然對(duì)某一安全機(jī)制有多個(gè)瀏覽器支持,但各個(gè)瀏覽器的實(shí)現(xiàn)方式及實(shí)現(xiàn)程度不盡相同。下面舉兩個(gè)例子加以說(shuō)明:
(1)雖然Edge瀏覽器和IE瀏覽器都實(shí)現(xiàn)了沙箱機(jī)制,但Edge瀏覽器將框架進(jìn)程也包含在了整個(gè)安全體系里面,權(quán)限更低,大大提高了安全性。
(2)Chrome和IE的沙箱機(jī)制對(duì)各種行為的限制也是不同的,圖3列舉了一些常見(jiàn)行為及Chrome和IE沙箱機(jī)制對(duì)其的限制對(duì)比情況:
圖3 Chrome和IE沙箱機(jī)制對(duì)部分行為的限制情況
總結(jié)
瀏覽器發(fā)展至今,已經(jīng)擁有比較成熟的安全機(jī)制,主要包括沙箱機(jī)制、JIT Hardening、地址空間布局隨機(jī)化、數(shù)據(jù)執(zhí)行保護(hù)、緩沖區(qū)安全檢查、執(zhí)行流保護(hù)、附加組件簽名機(jī)制、W^X、MemGC等。然而,瀏覽器的安全并不是已經(jīng)完全保障,各大瀏覽器廠商也在安全機(jī)制方面做著不懈的努力,期待著瀏覽器安全方面質(zhì)的提高。
參考文獻(xiàn)
https://www.netmarketshare.com/
AccuvantBrowserSecCompar_FINAL.pdf
http://www.freebuf.com/news/73858.html
https://wiki.mozilla.org/Security/Sandbox
https://developer.apple.com/safari/technology-preview/release-notes/
https://support.mozilla.org/zh-CN/kb/add-ons-signing-firefox?as=u&utm_source=inproduct
https://jandemooij.nl/blog/2015/12/29/wx-jit-code-enabled-in-firefox/
https://securityintelligence.com/memgc-use-after-free-exploit-mitigation-in-edge-and-ie-on-windows-10/
*本文原創(chuàng)作者:梅孜,本文屬FreeBuf原創(chuàng)獎(jiǎng)勵(lì)計(jì)劃,未經(jīng)許可禁止轉(zhuǎn)載
]]>It was discovered that HarfBuzz incorrectly handled memory.
It was discovered that HarfBuzz incorrectly handled certain length checks.
漏洞危害
A remote attacker could use this issue to cause HarfBuzz to crash, resulting in a denial of service, or possibly execute arbitrary code. (CVE-2015-8947)
A remote attacker could use this issue to cause HarfBuzz to crash, resulting in a denial of service, or possibly execute arbitrary code. This issue only applied to Ubuntu 16.04 LTS. (CVE-2016-2052)
解決方案
Refer to Ubuntu advisory USN-3067-1 for affected packages and patching details, or update with your package manager.
Patch:
Following are links for downloading patches to fix the vulnerabilities:
USN-3067-1: 16.04 (Xenial) on src (libharfbuzz0b)
USN-3067-1: 14.04 (Kylin) on src (libharfbuzz0b)
]]>Oracle Enterprise Linux has released security update for kernel to fix the vulnerabilities.
Affected Products:
Oracle Linux 6
漏洞危害
net/ipv4/tcp_input.c in the Linux kernel does not properly determine the rate of challenge ACK segments, which makes it easier for man-in-the-middle attackers to hijack TCP sessions via a blind in-window attack.
解決方案
To resolve this issue, upgrade to the latest packages which contain a patch. Refer to Oracle Enterprise Linux advisory Oracle Linux 6 for updates and patch information.
Patch:
Following are links for downloading patches to fix the vulnerabilities:
ELSA-2016-1664: Oracle Linux 6
]]>The java-1.6.0-openjdk packages provide the OpenJDK 6 Java Runtime Environment and the OpenJDK 6 Java Software Development Kit.
Security Fix(es):
* An insufficient bytecode verification flaw was discovered in the Hotspot component in OpenJDK. An untrusted Java application or applet could use this flaw to completely bypass Java sandbox restrictions. (CVE-2016-3606)
* Multiple denial of service flaws were found in the JAXP component in OpenJDK. A specially crafted XML file could cause a Java application using JAXP to consume an excessive amount of CPU and memory when parsed. (CVE-2016-3500, CVE-2016-3508)
* Multiple flaws were found in the CORBA and Hotsport components in OpenJDK. An untrusted Java application or applet could use these flaws to bypass certain Java sandbox restrictions. (CVE-2016-3458, CVE-2016-3550)
漏洞危害
An untrusted Java application or applet could use this flaw to completely bypass Java sandbox restrictions. (CVE-2016-3606)
A specially crafted XML file could cause a Java application using JAXP to consume an excessive amount of CPU and memory when parsed. (CVE-2016-3500, CVE-2016-3508)
An untrusted Java application or applet could use these flaws to bypass certain Java sandbox restrictions. (CVE-2016-3458, CVE-2016-3550)
解決方案
Upgrade to the latest packages which contain a patch. Refer to Applying Package Updates to RHEL system for details.
Refer to Red Hat security advisory RHSA-2016:1776 to address this issue and obtain more information.
Patch:
Following are links for downloading patches to fix the vulnerabilities:
RHSA-2016:1776 : Red Hat Enterprise Linux
]]>一、漏洞情況分析
zabbix是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開(kāi)源解決方案。 由于zabbix默認(rèn)開(kāi)啟了guest權(quán)限,且默認(rèn)密碼為空,導(dǎo)致zabbix的jsrpc中profileIdx2參數(shù)存在insert方式的SQL注入漏洞。攻擊者利用漏洞無(wú)需登錄即可獲取網(wǎng)站數(shù)據(jù)庫(kù)管理員權(quán)限,或通過(guò)script等功能直接獲取zabbix服務(wù)器的操作系權(quán)限。CNVD對(duì)該漏洞的綜合評(píng)級(jí)為“高?!?。
二、漏洞影響范圍
漏洞影響較低版本zabbix系統(tǒng),如已經(jīng)確認(rèn)的2.2.x, 3.0.0-3.0.3版本。根據(jù)CNVD初步普查情況,約有3.5萬(wàn)臺(tái)zabbix服務(wù)器暴露在互聯(lián)網(wǎng)上,其中排名TOP 5的國(guó)家和地區(qū)如下:中國(guó)(24.9%)、美國(guó)(18.8%)、俄羅斯(9.0%)、巴西(8.0%)、德國(guó)(5.4%),在中國(guó)境內(nèi)排名TOP5的省份為:北京(32.6%)、浙江(23.2%)、廣東(11.4%)、上海(7.8%)、江蘇(4.3%)。同時(shí),根據(jù)CNVD抽樣測(cè)試結(jié)果(樣本數(shù)量>500),zabbix服務(wù)器受漏洞直接影響(驗(yàn)證可攻擊成功)的比例為34.8%,影響比例較高。通過(guò)對(duì)比發(fā)現(xiàn),在不受漏洞影響的服務(wù)器樣本中,有一部分服務(wù)器Header字段中不存在zbx_sessionid信息,對(duì)于防范攻擊有一定的幫助。
三、漏洞修復(fù)建議
用戶可通過(guò)禁用guest賬戶緩解該漏洞造成的威脅。目前,廠商已發(fā)布新版本修復(fù)此漏洞,CNVD建議用戶關(guān)注廠商主頁(yè),升級(jí)到最新版本。
附:參考鏈接:
https://support.zabbix.com/browse/ZBX-11023
http://www.zabbix.com/download.php(官方下載頁(yè)面)
http://www.cnvd.org.cn/flaw/show/CNVD-2016-06408
(注:CNVD成員單位綠盟科技公司、杭州安恒公司向秘書(shū)處提供了漏洞原理分析情況
]]>影響范圍
Struts 2.3.20 – Struts 2.3.28.1
所有安裝REST插件的Struts應(yīng)用
漏洞原理
在5月12日安恒報(bào)告的CVE-2016-3087(S2-033)中,若Struts2應(yīng)用安裝REST插件,且開(kāi)啟DMI(Dynamic Method Invocation)動(dòng)態(tài)方法調(diào)用,攻擊者可以注入惡意表達(dá)式造成遠(yuǎn)程代碼執(zhí)行。官方補(bǔ)丁公告(https://cwiki.apache.org/confluence/display/WW/S2-033)中描述寫道:
Remote Code Execution can be performed when using REST Plugin with ! operator when Dynamic Method Invocation is enabled.
S2-033影響范圍為:
Struts 2.3.20 – Struts Struts 2.3.28 (except 2.3.20.3 and 2.3.24.3)
然而在官方修補(bǔ)該漏洞過(guò)程中,只是在DefaultActionMapper.java文件中加入了對(duì)method成員的值進(jìn)行OGNL表達(dá)式過(guò)濾
https://github.com/apache/struts/blob/095960b5691d33f127000794b3e79638cf384652/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
然而在該漏洞觸發(fā)代碼中,還有另一個(gè)入口,于是導(dǎo)致了S2-037的發(fā)生
Struts2的rest插件在處理類似http://127.0.0.1:8080/chaitin/action-name/1/rr的URLs時(shí),會(huì)查找名字以rr的方法調(diào)用,即actionname中的public String rr()會(huì)被調(diào)用
該處methodName沒(méi)有做過(guò)濾校驗(yàn),直接放入了mapping中,造成了代碼執(zhí)行
驗(yàn)證PoC
驗(yàn)證檢測(cè):
http://127.0.0.1:8080/chaitin/memeda/rr/(%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23wr.println(%23parameters.content[0]),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=vulntestbyrr
response中回顯vulntestbyrr即存在該漏洞
修復(fù)方案
加入cleanupActionName方法進(jìn)行過(guò)濾
如同文中所述的S2-033中的修復(fù)方案,對(duì)method成員進(jìn)行過(guò)濾,在mapping.setMethod(fullName.substring(lastSlashPos + 1));
該行加入cleanupActionName方法進(jìn)行過(guò)濾即為 mapping.setMethod(cleanupActionName()fullName.substring(lastSlashPos + 1)));
根據(jù)官方漏洞公告和建議及時(shí)修復(fù)
官方公告https://cwiki.apache.org/confluence/display/WW/S2-037中的建議升級(jí)到2.3.29.
Upgrade to Apache Struts version 2.3.29.
作者 長(zhǎng)亭科技
]]>