安全性測試(Security testing)是一種特別的軟件測試,其目的為了要檢測資訊系統的安全機制是否有缺陷,並且確認安全機制是否可以如正常動作,如預期方式保護資料,維持系統功能[1]。由於安全性測試在邏輯上的限制,通過安全性測試不代表系統沒有缺陷,也不一定表示系統已滿足安全需求。

典型的安全需求會包括具有機密性完整性身份驗證可用性授權不可否認特性的需求[2][3]。實際的安全需求會依系統所實現的安全需求來進行測試。安全性測試這個詞有許多不同的含意,也可以有許多不同方式來完成。因此需透過安全區分(Security Taxonomy)來瞭解這些不同的作法及意義,才能有基礎知識,進行安全性測試的工作。

術語

安全性測試過程中,常見的術語如下:

  • 探索(Discovery):此階段的目的是識別系統、範圍以及使用的服務。此階段不是要探索漏洞,但版本偵測可能會強調一些已不使用的軟件或韌體版本,也可能會指出潛在的漏洞。
  • 漏洞掃描(Vulnerability Scan):在探索階段之後,會用自動化工具和已知漏洞的條件比對,以找出已知安全問題。這個報告會用工具自動產生,不需測試者介入或是確認。這也可以用以credential為基礎的掃描來補充,提供credential來認證某一服務(例如local的Windows帳號),以排除一些偽陽性的結果。
  • 漏洞評估英語Vulnerability assessment (computing)(Vulnerability Assessment):用探索以及漏洞掃描的結果來識別安全漏洞,並且將所發現的事和待測試系統的情形連結。像是刪除報告中常見偽陽性的結果,並且決定每一個發現漏洞的風險等級,以提昇這份報告在商業情境下的理解。
  • 安全評估(Security Assessment):以漏洞評估的結果加上人工的驗證,以確認其風險,不過不包括利用此漏洞取得更多的權限。驗證可以是取得授權存取該系統,以確認系統設定,也包括檢查系統記錄、系統響應、錯誤訊息,錯誤碼等。安全評估是設計將待測試系統的漏洞有較大的覆蓋率,但不深入評估特定漏洞可能會造成的結果。
  • 滲透測試(Penetration Test):這是模擬惡意者進行的攻擊。以之前階段的結果為基礎,並且利用此漏洞取得更多的權限。用這個方式會知道攻擊者要有什麼能力才能存取機密資訊、影響資料完整性或是服務的可用度,並且知道其對應的影響。每個測試都是用一致且完整的方法論,讓測試者利用其問題解決的能力、許多工具的輸出,以及其對系統及網絡的知識,來找到一些自動化工具不一定找得到的漏洞。此作法着重在攻擊的深度,和安全評估時着重廣度及覆蓋率的作法不同。
  • 安全稽核(Security Audit):是由稽核單位或風險管理單位主導,確認特定安全措施或是法規合格性議題。其特點是範圍較窄,稽核時會用到之前各階段(探索、漏洞掃描、漏洞評估、安全評估及滲透測試)的產出。
  • 安全審查(Security Review):確認已在系統元件或是產品中實現了公司內的安全標準,或是產業的安全標準。這會透過差距分析(gap analysis)來進行,也會用到build審查、程式碼審查,同時審查設計文件以及架構圖。此活動不會用到之前各階段(探索、漏洞掃描、漏洞評估、安全評估、滲透測試及安全稽核)的產出。

工具

相關條目

參考資料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.