讓 Parse Double 漏洞無處藏身,工程師們必備神器侧蘸!

我們很多人都會(huì)在網(wǎng)上購物買東西裁眯。但是,我們很多人都不清楚的是讳癌,很多電商網(wǎng)站會(huì)存在安全漏洞穿稳,比如拒絕服務(wù)漏洞問題。拒絕服務(wù)漏洞根據(jù)影響自低像高可分為:無效晌坤、服務(wù)降低逢艘、可自恢復(fù)的服務(wù)破壞、可人工恢復(fù)的服務(wù)破壞以及不可恢復(fù)的服務(wù)破壞骤菠。

詳細(xì)來說它改,如果攻擊能力不足以導(dǎo)致目標(biāo)完全拒絕服務(wù),但造成了目標(biāo)的服務(wù)能力降低商乎,這種效果稱之為服務(wù)降低央拖。而當(dāng)攻擊能力達(dá)到一定程度時(shí),攻擊就可以使目標(biāo)完全喪失服務(wù)能力,稱之為服務(wù)破壞鲜戒。服務(wù)破壞又可以分為可恢復(fù)的服務(wù)破壞和不可恢復(fù)的服務(wù)破壞专控,就好像一些攻擊利用目標(biāo)系統(tǒng)的漏洞對(duì)目標(biāo)的文件系統(tǒng)進(jìn)行破壞,導(dǎo)致系統(tǒng)的關(guān)鍵數(shù)據(jù)丟失袍啡,往往會(huì)導(dǎo)致不可恢復(fù)的服務(wù)破壞踩官,即使系統(tǒng)重新提供服務(wù)却桶,仍然無法恢復(fù)到破壞之前的服務(wù)狀態(tài)境输。由此可見,拒絕服務(wù)漏洞是那么可怕颖系!

拒絕服務(wù)漏洞:Parse Double

拒絕服務(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)的用戶完全可以耗盡其所有資源。

實(shí)現(xiàn)方式——實(shí)現(xiàn) java.lang.Double.parseDouble() 及其相關(guān)方法中的漏洞會(huì)導(dǎo)致線程在解析 [2^(-1022) - 2^(-1075) : 2^(-1022) - 2^(-1076)] 范圍內(nèi)的任一數(shù)字時(shí)造成線程懸停趁啸。這個(gè)缺陷可以用來進(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 類型侈询。遺憾的是舌涨,BigDecimal 的構(gòu)造函數(shù)也會(huì)調(diào)用麻煩的 Double.parseDouble 代碼,因此我們又回到了原點(diǎn)扔字。最后囊嘉,我們還可以嘗試下面的代碼温技,雖然不能說它高效,但是它通過了所有 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();
     }

這種方式雖說有一定效果,但效率并不是很高琢蛤。因?yàn)閲?guó)內(nèi)還有不少電商網(wǎng)站正在使用老的 Java 版本蜓堕,所以這種漏洞被攻擊還時(shí)有發(fā)生。

RASP:讓 Parse Double 漏洞無處藏身

根據(jù) Gartner 的報(bào)告,超過 80% 的攻擊是以應(yīng)用層為目標(biāo)的,而大多數(shù)破壞活動(dòng)是通過應(yīng)用程序進(jìn)行的博其。他們發(fā)現(xiàn),軟件提供商對(duì)應(yīng)用程序安全防護(hù)的投 入普遍不足套才。Gartner 的分析師兼研究員 Joseph Feiman 提出了「實(shí)時(shí)應(yīng)用自我保護(hù) (Runtime Application Self-Protection)」 的概念。

讓 Parse Double 漏洞無處藏身慕淡,工程師們必備神器背伴!

作為一種新型應(yīng)用安全保護(hù)技術(shù),RASP 將保護(hù)程序想疫苗一樣注入到應(yīng)用程序和應(yīng)用程序融為一體峰髓,能實(shí)時(shí)檢測(cè)和阻斷安全攻擊傻寂,使應(yīng)用程序具備自我保護(hù)能力。比如說針對(duì)拒絕服務(wù)漏洞 Parse Double 來說携兵, RASP 定制了響應(yīng)的規(guī)則集和防護(hù)類疾掰,然后采用 java 字節(jié)碼技術(shù),在被保護(hù)的類被加載進(jìn)虛擬機(jī)之前眉孩,根據(jù)規(guī)則對(duì)被保護(hù)的類進(jìn)行修改个绍,將防護(hù)類織入到到被保護(hù)的類中,從而保證了我們服務(wù)器的安全浪汪。

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閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠署,死亡現(xiàn)場(chǎng)離奇詭異糠聪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谐鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門舰蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事身害∥肚模” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵塌鸯,是天一觀的道長(zhǎng)侍瑟。 經(jīng)常有香客問我,道長(zhǎng)丙猬,這世上最難降的妖魔是什么涨颜? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮淮悼,結(jié)果婚禮上咐低,老公的妹妹穿的比我還像新娘揽思。我一直安慰自己袜腥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布钉汗。 她就那樣靜靜地躺著羹令,像睡著了一般。 火紅的嫁衣襯著肌膚如雪损痰。 梳的紋絲不亂的頭發(fā)上福侈,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音卢未,去河邊找鬼肪凛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辽社,可吹牛的內(nèi)容都是我干的伟墙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滴铅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼戳葵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汉匙,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拱烁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后噩翠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戏自,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年伤锚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了擅笔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剂娄,靈堂內(nèi)的尸體忽然破棺而出蠢涝,到底是詐尸還是另有隱情,我是刑警寧澤阅懦,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布和二,位于F島的核電站,受9級(jí)特大地震影響耳胎,放射性物質(zhì)發(fā)生泄漏惯吕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一怕午、第九天 我趴在偏房一處隱蔽的房頂上張望废登。 院中可真熱鬧,春花似錦郁惜、人聲如沸堡距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羽戒。三九已至,卻和暖如春虎韵,著一層夾襖步出監(jiān)牢的瞬間易稠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工包蓝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驶社,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓测萎,卻偏偏與公主長(zhǎng)得像亡电,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绳泉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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