安全工程師只能向拒絕服務(wù)漏洞 Parse Double 低頭?

雙十一的硝煙還未散盡鹤树,雙十二就要來(lái)了铣焊。每逢節(jié)日期間,各大電商網(wǎng)站交易量暴漲罕伯,用戶(hù)蜂擁而至搶購(gòu)商品粗截。那么這些電商平臺(tái)的安全性如何?

據(jù)不完全統(tǒng)計(jì)捣炬,烏云平臺(tái)自成立以來(lái),已收集到的電商平臺(tái)漏洞總數(shù)達(dá) 1169 個(gè)绽榛,其中 2015 年電商平臺(tái)漏洞數(shù)為 414 個(gè)湿酸,相比于 2014 年,漏洞總數(shù)上漲了68.98%灭美。對(duì)于安全工程師們來(lái)說(shuō)推溃,則需要加班加點(diǎn)保障網(wǎng)站的穩(wěn)定性和安全性。數(shù)千億的消費(fèi)額届腐,讓所有的電商平臺(tái)工程師铁坎,對(duì)安全問(wèn)題不敢有一絲怠慢。

安全工程師只能向拒絕服務(wù)漏洞 Parse Double 低頭犁苏?

根據(jù) Gartner 的報(bào)告,超過(guò) 80% 的攻擊是以應(yīng)用層為目標(biāo)的,而大多數(shù)破壞活動(dòng)是通過(guò)應(yīng)用程序進(jìn)行的硬萍。他們發(fā)現(xiàn),軟件提供商對(duì)應(yīng)用程序安全防護(hù)的投 入普遍不足。Gartner 專(zhuān)家指出周界安全防護(hù)費(fèi)用與應(yīng)用程序安全防護(hù)費(fèi)用之比為 23:1围详。在一個(gè)完美的模型中,開(kāi)發(fā)人員的開(kāi)發(fā)生命周期 ( SDLC ) 應(yīng)當(dāng)符合安全防護(hù)標(biāo)準(zhǔn),從而開(kāi)發(fā)出安全的軟件∑庸裕現(xiàn)實(shí)卻并非如此,迭代開(kāi)發(fā)和快速部署的流行助赞,讓電商平臺(tái)正在經(jīng)受重重考驗(yàn)买羞。

讓我們先看一個(gè)比較普遍的漏洞,拒絕服務(wù)漏洞:Parse Double雹食,目前還有不少平臺(tái)在采用較老的 Java 版本畜普,所以此類(lèi)漏洞還時(shí)有發(fā)生。

拒絕服務(wù)漏洞是在一些遺留系統(tǒng)中仍然存在的老錯(cuò)誤群叶,在 Windows 與 Linux 的 JDK1.6_23 及更早 JDK1.5_27 及更早 JRE 1.4.2_29 及更早的版本中都存在這一漏洞吃挑。對(duì)于使用 Apache Tomcat 服務(wù)器的系統(tǒng)钝荡,若其 JRE 比較脆弱,未經(jīng)授權(quán)的用戶(hù)完全可以耗盡其所有資源儒鹿。

實(shí)現(xiàn)方式——實(shí)現(xiàn) java.lang.Double.parseDouble() 及其相關(guān)方法中的漏洞會(huì)導(dǎo)致線(xiàn)程在解析[2^(-1022) - 2^(-1075) : 2^(-1022) - 2^(-1076)]范圍內(nèi)的任一數(shù)字時(shí)造成線(xiàn)程懸停化撕。這個(gè)缺陷可以用來(lái)進(jìn)行 DOS(拒絕服務(wù))攻擊。例如:下面的代碼使用了較為脆弱的方法约炎。

Double d = Double.parseDouble(request.getParameter("d"));

攻擊者可以發(fā)送這樣的請(qǐng)求植阴,其參數(shù) d 在上面的范圍中,例如「 0.0222507385850720119e-00306」 ,進(jìn)而導(dǎo)致程序在處理該請(qǐng)求時(shí)懸停圾浅。

黑客新聞中的評(píng)論指出掠手,BigDecimal.doubleValue 方法實(shí)際上只是將參數(shù)轉(zhuǎn)化為字符串,然后調(diào)用 Double.parseDouble 方法狸捕。因此喷鸽,非常不幸,上面的機(jī)制只有在我放棄一些精度調(diào)用 Math.pow(10, exponent) 灸拍,而不使用 scaleByPowerOfTen 時(shí)會(huì)起作用做祝。上面的版本,很遺憾鸡岗,不起作用混槐。

盡管這個(gè)錯(cuò)誤已經(jīng)在 JDK 1.6_24 及之后的版本得到修復(fù),安全行業(yè)研究機(jī)構(gòu)發(fā)現(xiàn)許多 Java 系統(tǒng)可能還在運(yùn)行有風(fēng)險(xiǎn)的老版本轩性。普遍的建議是升級(jí)系統(tǒng)或者單純地標(biāo)準(zhǔn)化清理后的字符串声登,將其傳入新的 java.math.BigDecimal() 方法,再將結(jié)果轉(zhuǎn)化為基本 double 類(lèi)型揣苏。遺憾的是悯嗓,BigDecimal 的構(gòu)造函數(shù)也會(huì)調(diào)用麻煩的 Double.parseDouble 代碼,因此我們又回到了原點(diǎn)卸察。最后脯厨,我們還可以嘗試下面的代碼,雖然不能說(shuō)它高效坑质,但是它通過(guò)了所有 Float 測(cè)試俄认,不會(huì)像 Double.parseDouble 那樣拒絕服務(wù)。

public static double parseDouble(String value) {
String normalString = normalizeDoubleString(value);
int offset = normalString.indexOf('E');
     BigDecimal base;
     int exponent;
    if (offset == -1) {
     base = new BigDecimal(value);
     exponent = 0;
      } else {
     base = new BigDecimal(normalString.substring(0, offset));
     exponent = Integer.parseInt(normalString.charAt(offset + 1) == '+' ?
     normalString.substring(offset + 2)
     normalString.substring(offset + 1));
     }
    return base.scaleByPowerOfTen(exponent).doubleValue();
}

這種方式雖說(shuō)有一定效果洪乍,算不上聰明和高效眯杏。那么是否有更好的方式呢?

安全工程師只能向拒絕服務(wù)漏洞 Parse Double 低頭壳澳?

一種新型應(yīng)用安全保護(hù)技術(shù)受到了較多的關(guān)注—— RASP(實(shí)時(shí)應(yīng)用安全自我保護(hù))岂贩。RASP 將保護(hù)程序想疫苗一樣注入到應(yīng)用程序和應(yīng)用程序融為一體,能實(shí)時(shí)檢測(cè)和阻斷安全攻擊,使應(yīng)用程序具備自我保護(hù)能力萎津。比如說(shuō)針對(duì)拒絕服務(wù)漏洞 Parse Double 來(lái)說(shuō)卸伞,RASP 定制了響應(yīng)的規(guī)則集和防護(hù)類(lèi),然后采用 java 字節(jié)碼技術(shù)锉屈,在被保護(hù)的類(lèi)被加載進(jìn)虛擬機(jī)之前荤傲,根據(jù)規(guī)則對(duì)被保護(hù)的類(lèi)進(jìn)行修改,將防護(hù)類(lèi)織入到被保護(hù)的類(lèi)中颈渊,從而保證了我們服務(wù)器的安全遂黍。

RASP 工作在運(yùn)行環(huán)境時(shí),像疫苗一樣和應(yīng)用程序融為一體,了解應(yīng)用的上下文,從而可以實(shí)時(shí)徹底的保護(hù)應(yīng)用程序,使應(yīng)用程序免受漏洞所累。現(xiàn)在是廣告時(shí)間啦俊嗽!目前雾家,國(guó)內(nèi)只有一個(gè)產(chǎn)品OneASP擁有這個(gè)功能。大家可以訪(fǎng)問(wèn)一下網(wǎng)站和 DEMO 绍豁,體驗(yàn)一下我們強(qiáng)大的功能吧乌逐。雙十二就要來(lái)了疆虚,希望各位電商平臺(tái)能夠拒絕向「漏洞」低頭 幕屹!

OneRASP(實(shí)時(shí)應(yīng)用自我保護(hù))是一種基于云的應(yīng)用程序自我保護(hù)服務(wù)痕鳍, 可以為軟件產(chǎn)品提供實(shí)時(shí)保護(hù),使其免受漏洞所累芬位。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末无拗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晶衷,更是在濱河造成了極大的恐慌,老刑警劉巖阴孟,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晌纫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡永丝,警方通過(guò)查閱死者的電腦和手機(jī)锹漱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)慕嚷,“玉大人哥牍,你說(shuō)我怎么就攤上這事『燃欤” “怎么了嗅辣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)挠说。 經(jīng)常有香客問(wèn)我澡谭,道長(zhǎng),這世上最難降的妖魔是什么损俭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任蛙奖,我火速辦了婚禮潘酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雁仲。我一直安慰自己仔夺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布攒砖。 她就那樣靜靜地躺著缸兔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭衩。 梳的紋絲不亂的頭發(fā)上灶体,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音掐暮,去河邊找鬼蝎抽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛路克,可吹牛的內(nèi)容都是我干的樟结。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼精算,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓢宦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起灰羽,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驮履,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后廉嚼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體玫镐,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年怠噪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恐似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡傍念,死狀恐怖矫夷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憋槐,我是刑警寧澤双藕,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站阳仔,受9級(jí)特大地震影響蔓彩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一赤嚼、第九天 我趴在偏房一處隱蔽的房頂上張望旷赖。 院中可真熱鬧,春花似錦更卒、人聲如沸等孵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俯萌。三九已至,卻和暖如春上枕,著一層夾襖步出監(jiān)牢的瞬間咐熙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工辨萍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棋恼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓锈玉,卻偏偏與公主長(zhǎng)得像爪飘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拉背,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容