OpenBSD計畫的成員希望修改新程式後,能解除所謂的「緩衝區溢出」(buffer overflows),也就是三十多年來一直困擾安全專家的老問題。
該計畫的領隊Theo de Raadt相信,該小組最新發布的Unix改良版,預定5月1日發布,會讓緩衝區溢出的老毛病極難再發生。緩衝區溢出是軟體中的一種記憶體錯誤,可能讓駭客利用來執行惡意的程式。
「我可以說,我將殺死緩衝區溢出,但因為我服務於電腦安全界,所以我只得用引述的方式來講,」他對10日出席CanSecWest安全展的觀眾說。
因為這種記憶體臭蟲殺了30多年仍殺不死,de Raadt說,凡聲稱有本事消滅緩衝區溢出的任何開放原始碼人士,都必須經過驗證。
已有些出席者懷疑新的改良版本消滅緩衝區溢出的能耐。「這個程式只是添加一層安全防護層,」Colt Telecom安全經理Nicolas Fischbach說:「那不會產生很大的差別,因為軟體裡總是會發現臭蟲。」
駭客要求過量資訊,通常會造成緩衝區溢出。這些資料通常包括兩部分:一部分造成應用程式當掉,另一部分可能是一個程式,也可能是指向駭客欲執行程式的記憶體位址。一旦應用程式因為前一個部分而掛掉,作業系統便執行第二個程式。
OpenBSD小組用三種戰術強化作業系統,以防這類的駭客攻擊。
該小組將記憶體中的「堆疊」(stack)存在的區域給隨機化,所以想利用緩衝區溢出作亂的程式碼必須依系統的記憶體配置量身訂製才行。
「緩衝區溢出利用某種記憶體配置,」de Raadt說:「這是小幅度的浪費記憶體,耗用的時間非常少,但是讓事情更困難。我們試圖讓駭客多費一些力氣。」
該小組也重新調整重要位址存放在堆疊的方式,讓執行中的應用程式更難發生緩衝區溢出現象。該小組放置一個小標籤,稱為「金絲雀」(canary),植入記憶體架構裡,用來偵測位址是否被修改,那是駭客常用來執行惡意程式的障眼法。 第三個方法,是侵入BSD檔案系統,把主記憶體分割成可寫入的部分和可執行的部分。存到記憶體的程式和資料,或稱為「頁」(pages),會被置入其中的一個部分。
「我們希望確定,沒有任一頁是同時可執行又可寫入的,」他說:「目的在於阻止駭客撰寫程式碼然後加以執行。」
但OpenBSD小組面臨的問題是,雖然64位元處理器已支援這類記憶體保護功能,但更通用的32位元處理器,例如英特爾x86晶片和PowerPC晶片,都尚未支援這種功能。所以該小組必須採取迂迴作法,把電腦記憶體區隔成可寫入和可執行的區域。
其他的安全功能會包含在5月1日發布的軟體裡,但支援32位元處理器的記憶體結構保護功能,則還要等上六個月才準備就緒。