2012年2月6日 星期一

安全性測試


安全性測試是有關驗證應用程式的安全性服務和識別潛在的安全性瑕疵。本節包含用以驗證您所建立之應用程式是否安全的重要測試建議。

由於攻擊者在闖入時並沒有標準的方法,所以進行安全性測試也就沒有所謂的標準方法。同時,截至目前為止能用來徹底測試安全性各個層面的工具也非常有限。由於應用程式中功能方面的錯誤也可能造成潛在的安全性瑕疵,所以在進行安全性測試之前您必須先進行功能性的測試。

必須注意的是,安全性測試並不能斬釘截鐵的證明應用程式是安全的,充其量,它只能驗證依據威脅分析階段做成的假設而採取的反制措施是否有效。

以下提供的是對測試應用程式安全性的一些建議。

緩衝區溢位測試

在電腦史上最早被利用的安全性錯誤就是緩衝區溢位。而緩衝區溢位目前仍然是最危險、也最常發生的弱點。利用這類弱點的攻擊所可能導致的問題,從讓應用程式當掉,一直到攻擊者在應用程式處理序中插入並執行惡意的程式碼皆有。

在將資料寫入緩衝區時,開發人員須注意不得寫入超過緩衝區所能承受的資料量。如果要寫入的資料量超過配置的緩衝區空間,就會發生緩衝區溢位的情況。在發生緩衝區溢位的時候,資料會被寫入某些原本可能是配置供其他用途的記憶體部分。如果緩衝區溢位含有惡意的程式碼而且還接著被執行了的話,這才是最糟糕的情況。幾乎大部分的安全性弱點都與緩衝區溢位有關。

進行原始程式碼安全性審核

依據所考量之應用程式的敏感性,對應用程式原始程式碼進行安全性稽核應該是項明智的抉擇。請不要將原始程式碼稽核與程式碼審核混淆。標準的程式碼審核其目的是要找出影響程式碼功能性的一般性程式碼缺失;而原始程式碼安全性審核的目的在於找出安全性缺陷 (不論是否有意的)。在開發處理金融交易或提供公共安全的應用程式時,這類審核更是不可或缺的一環。

驗證應變計畫

應用程式安全防線遭突破的可能性是永遠存在的,具備經過驗證之應變計畫才是明智之舉。萬一在您的應用程式伺服器或資料中心偵測到病毒時要採取何種步驟?當安全性受挫時,必須迅速反應以防止進一步損害。在應變計畫必須實際派上用場之前,請先檢查看看它們否有效。

攻擊您的應用程式

測試人員通常都會想盡辦法苦操應用程式,試圖讓它們當掉。設法攻擊您自己的應用程式也是一種類似但卻更為切中要點的程序。在嘗試攻擊您自己的應用程式時,您應該專門尋找代表應用程式防衛弱點之可被利用的瑕疵。

沒有留言: