這些弱點包括:XSS(跨站點的腳本)、SQL注射和允許引入C或者C++代碼的本地方法――同它的BUG一起。
如今,它可能會變得更糟,Chess說,他有證據證明這一點。
在這個項目中,Fortify所發現的開源系統代碼缺陷密度是“天文數字”級別的。Chess指出,Fortify在去年的一個名為“Net Trust”的項目中所發現了大量錯誤――大約是每1000行代碼有12215個錯誤。
“這樣的錯誤量顯然是是過大了。”Chess說。
更具有諷刺意義的是,Net Trust居然是Google用來為單點登陸和認證所建立的一個項目。“他們就像還是個沒有做好作業的學生。” Chess說。
Pugh是馬裡蘭大學的計算機科教授,同時還是FingBug工具的作者,這個工具被用在Java開放檢查項目中。
舉一個Sun說明書中的XSS漏洞的例子:
try { firstname = request.getParameter("firstname"); } catch (Exception e) {e.printStackTrace(); }
userName = firstname;
...
pw.print(" Thanks for your feedback, " + userName + "!");
這段代碼允許黑客在應用程序中注入代碼,它將在受害者的浏覽器中運行。Chess說。
“這段代碼期望用戶輸入像Bob這樣的名字” Chess在email中寫道。 “但是黑客能建立一個看起來像這樣的數據:
and then the victim's browser would execute a function named sendDataToMotherShip()." ”
安全的服務器端代碼會判斷它只包含特定的字符集並且不包含可執行腳本。
為什麼XSS會得到如此抨擊?原因同10年前緩沖溢出的道理是一樣的,這兩個漏洞對黑客來說是十分重要的,因為這個漏洞允許黑客在系統中注入代碼從而完全控制計算機。
過去的棘手問題是緩存溢出,目前是XSS。
如果這些都來源於Sun,我們還能信任誰呢?事實是:查找最普遍的Java安全漏洞陷阱的責任應該完全由開發人員承擔。
這樣情況就能夠好轉嗎?也許會,但是也很困難,Chess說。一個解決方案是限制浏覽器執行XSS。這就需要更改Web標准同時使得浏覽器變得更大。
即使某些人說服了廠商來支持這個計劃,它也需要把新的浏覽器推廣給數百萬的用戶。“我們轉換到這上面的時間最少也得幾年,基礎架構和語言的變化需要很長的時間才能完成。”Chess說。
“如果開發人員重視它的話,漏洞的數量會顯著下降”Chess說。
或許更有效的方法是同框架所有者和軟件制造商來交流,從而使得Web成為安全的程序執行場所,Chess說。當然,這也不是能很快的解決。