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