觀點

三隻小豬的稻草屋

2007 / 07 / 16
EDWARD ADAMS
三隻小豬的稻草屋

軟體開發者是藝術家以及工程師的混合體。這造就了開發人員的創造力,但也是造成現在應用程式充滿弱點的根本原因—產出缺乏安全工程觀的程式碼。
軟體開發的問題是並沒有被當成一門工程學來訓練。雖然在訓練過程中會教導核心概念,但是要變成職業人士卻不需要有任何嚴格的要求。學校會開課教密碼學和演算法,但是在學習軟體工程以及電腦科學時幾乎都不會提到品質以及安全。讓問題更嚴重的是,我們的產業也不要求任何證照、在訓工程師(EIT, Engineer-In-Training)或者任何像是其他培訓計畫的實習程序。這樣的結果如同童話故事中的三隻小豬用稻草來蓋房子。我們是如此自大的相信稻草屋可以抵擋大野狼的吹襲。軟體開發者缺乏安全訓練以及紀律,就如同自大的小豬一般。
使用工具並不會解決這個問題。事實上就算瞭解如何使用工具也沒有任何幫助。我並不會因為學會如何使用AutoCAD而變成一個更好的機械設計工程師;工具只是很簡單的用來提升工作的效率-我能夠適當的完成工作是因為受過良好的訓練。甚至,在通過產業認證考試以及跟隨認證工程師工作五年之後我才被允許當專案經理。
我知道,您會認為我們無法等待如此久的時間來產生一個品質良好的軟體工程師,對吧?技術採用的速度以及壓縮新血開發者對產品上市時間的需求-這些就是導致目前軟體品質低又不安全的原因。我們已經開始進行良好的軟體開發方法論。像是軟體成熟度模型(CMM, Capabilities Maturity Model)計畫就是用來衡量可重複使用程度以及軟體開發人員將過程文件化的良好程度。
不幸地,軟體成熟度模型的水準和產出的程式碼是否安全並沒有關聯-不論程式安全是好還是壞,唯一可以確定的是程式安全會一致性的好或者壞。
微軟的安全發展生命週期(SDL, Security Development Lifecycle)是基於安全的方向所發展出來的步驟,讓特定的開發團隊可以將開發過程中加入安全。但是安全發展生命週期還是缺乏說明組織如何撰寫程式的最佳實作指導方針。不管是軟體成熟度模型、安全發展生命週期或是其他方法論都是針對以下問題:我們的開發人員缺乏訓練。開發人員需要在畢業之後還是持續的在工作上以及學校內被訓練。像是入侵Paris Hilton大哥大的駭客並不是大野狼。大野狼是可以對國家基礎建設和大眾傳輸系統造成實際破壞的恐怖主義組織。駭客實際上還協助增加了使用者認知並且找出缺乏安全的軟體。
這裡並不是在讚揚犯罪行為,但是公司應該向駭客學習:您的軟體充滿弱點並且您應該針對這些弱點做出補強。請記住,因為您的軟體開發失當才會讓駭客有機會闖入。