美國(guó)普林斯頓大學(xué)的一名學(xué)生利用一只燈泡、計(jì)算機(jī)內(nèi)存上一些已知的特性再加上一點(diǎn)點(diǎn)運(yùn)氣,使Java和.Net虛擬機(jī)上安全問題顯現(xiàn)了出來。
普林斯頓大學(xué)應(yīng)屆畢業(yè)生Sudhakar Govindavajhala本周二(5月13日)在加州伯克利市演示這一過程時(shí)斷言,對(duì)計(jì)算機(jī)的攻擊通常需要對(duì)計(jì)算機(jī)進(jìn)行物理訪問,因此這種技巧并不能對(duì)運(yùn)行在PC和服務(wù)器上的虛擬機(jī)構(gòu)成多大的威脅。但這種攻擊可被用來竊取智能卡上的數(shù)據(jù)。
這一技巧有賴于內(nèi)存中的“異常比特”(flip bits)。偶爾發(fā)出的宇宙射線會(huì)引起內(nèi)存中隨機(jī)比特值發(fā)生改變,從0變成1或由1變成0。Govindavajhala于是一不作二不休,他用一只燈泡烤熱計(jì)算機(jī)內(nèi)的芯片,便造成了更多的內(nèi)存中比特的變化。
通過以上實(shí)驗(yàn),這名大學(xué)生便打破了虛擬機(jī)所依賴的安全模式:即計(jì)算機(jī)忠誠(chéng)地執(zhí)行所下達(dá)的指令。
Govindavajhala攻擊系統(tǒng)的手段是把自己的代碼加入到內(nèi)存當(dāng)中,并把剩余的內(nèi)存空間用新的代碼地址來填補(bǔ)。他發(fā)現(xiàn),如果用這些地址充滿60%的內(nèi)存,隨機(jī)出現(xiàn)的異常比特就會(huì)使他的攻擊代碼在70%的時(shí)間內(nèi)運(yùn)行,在其余的情況下,計(jì)算機(jī)上的關(guān)鍵程序?qū)⑻幱诎c瘓狀態(tài)。
Govindavajhala的手段可被用于竊取智能卡上的數(shù)據(jù),因?yàn)檫@些看似信用卡的東西擁有內(nèi)存和簡(jiǎn)單的處理器。