資安JAVA(二七): Penetration Testing

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 27 – PENETRATION TESTING
作者:John Melton
Developer: I'm ready, Sir !
What is it and why should I care?

滲透測試( Penetration testing )是藉由模擬的攻擊行為來評估電腦系統或網路安全性的方法。此方法主動的分析系統所有弱點的可能性,並揭露潛在攻擊者。通常又被稱作 pen testing 或ethical hacking。

滲透測試類似於雇用駭客去探測實際運作的系統,且努力找出安全問題。測試結果很有價值也很有說服力,不僅顯示弱點存在,也可以被利用。根據經驗,誠實的測試結果可以成為開發者和資訊安全之間溝通橋梁,並設定可達成的目標促使開發者修正問題。而該如何處理人人都討厭的誤報(False Positive)結果也是很有趣的議題。

What should I do about it?

就像藉由 Code Review 補足靜態分析(static analysis)的不足,你也可用滲透測試(penetration test)補足動態分析(dynamic analysis)的不足。靜態分析和動態分析的檢測結果通常是分析軟體測試的,因為目前產品(甚至方法論)都有限制性,所以其檢測結果也有限制性。

就像目前大部分的資安研究,人工與與工具應用的互補非常重要。我們可以用 Code Review 加上靜態分析發現特定型態的弱點們,甚至是整個class。同樣的道理,滲透測試作為動態分析的額外支援,也能互補分析工具的盲點。隨著分析工具(靜態/動態)越來越進步,支持者認為工具可以滿足現今變化快速軟體產業的需求,他們和反對者之間的辯論也日趨激烈。不論你認同哪一方,目前的共識是人腦加上分析工具才能達到較完整的分析結果。

衷心的建議大家使用 Open Source Security Testing Methodology Manual(pdf檔) 和 OWASP Testing Guide(pdf檔),這兩本好書能幫助組織導入流程和整合流程。

仔細考慮後,作者列出一份滲透測試的建議工作清單。

設定計畫(Define the Plan)
測試流程必須包含可達成的目標,請依據組織的需求訂立目標。

貫徹執行(Do It)
說來簡單,但實際上困難重重。因為這是人類驅動(human-driven)的工作,測試員(可能剛好就是開發者)很容易有"不過是多一次文書作業"的偷懶心態。所以請在小心設計和執行測試,負擔不要超過承受基礎,同時也能達到計畫中的貢獻。

適可而止Don’t Over-do It
維護安全的工作只有遞減效益,你可以花費10%的成本,提升50%的安全性,但20%的成本不能得到100%安全。請仔細考慮一下,如何和開發者一起解決安全問題。開發者更擅長追蹤問題來源。

將雜事自動化吧(Automate What You Can)
弄懂你的靜態分析和動態分析工具,了解工具的能力和限制。如果工具力有未逮,則以人腦協助。自動化工作和人力工作的平衡會是滿足安全需求,同時保持彈性的關鍵。請仔細制定這個關鍵決策,同時了解制定決策的意義和理由。

就像是 code reviewer 需要一些工具協助程式碼檢查工作,滲透測試人員也需要工具來達到事半功倍。一些我認識的圈內人推薦使用 OWASP ZAPBurt 。我認為兩者都不錯,若你有興趣可以觀看ZAP的介紹影片。


反覆測試和改進(Iterate and improve)
藉由反覆測試,不斷改進上一次的測試流程,將不適用的方法剔除,留下有用的。我認為每6個月一次的測試週期,能幫助組織思考該留下哪些、捨棄哪些。

結論
如果你真的想增進應用程式的安全,滲透測試是不可或缺的。執行以人腦主的深度滲透測試可用來補齊動態分析的不足,只要你能維持定期測試的好習慣,你的安全維護工作可以更成功。

參考資料
https://www.owasp.org/index.php/Testing:_Introduction_and_objectives
http://en.wikipedia.org/wiki/Penetration_test
https://www.owasp.org/index.php/OWASP_Testing_Project
https://www.owasp.org/index.php/Category:Penetration_Testing_Tools
http://www.osstmm.org/

———–———–
資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

資安JAVA(十一):X-XSS-Protection

資安JAVA(十):X-Content-Type-Options

以 SharpPcap 實作可收聽封包的 C# 程式