軟體本身的安全性
軟體的設定與使用
通常指透過人工的方式檢查程式碼中是否有問題或錯誤
常見做法會是一個人寫完一段程式碼後,在正式發布前由幾位同事透過肉眼檢查程式碼中是否有潛在問題或是漏洞,確定沒有問題以後才會進到下一個步驟
面對自己寫的程式碼難以發現其中盲點,思考模式也比較受到侷限,工程師之間互相檢驗彼此的程式可以讓程式出現問題的機會大幅降低
從內部角度去檢視和分析程式
在程式碼沒有被執行的狀態下,透過自動化的工具掃描和檢查程式碼中是否存在常見或基本的錯誤
從外部角度去分析程式可能有的問題
透過實際執行和使用程式來進行不同分析和測試,檢驗程式能否正確的和系統整合
模擬使用者在使用軟體時會遇到的 bug 與攻擊者在使用時可能可以找到的漏洞,透過實際執行的方式了解程式在運行上的問題
模糊測試 Fuzzing: 透過工具半自動的生成一些可能會把程式弄壞的資料,並把這些資料輸入進去我們要測試的程式中,看程式能不能夠正確的處理和應對這些資訊
A QA engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 99999999999 beers. Orders a lizard. Orders -1 beers. Orders a ueicbksjdhd.
— Brenan Keller (@brenankeller) November 30, 2018
First real customer walks in and asks where the bathroom is. The bar bursts into flames, killing everyone.
站在這些威脅的角度思考有哪些方式可以攻擊和入侵我們的系統
透過搜集和分析這些資訊,可以知道怎麼樣強化系統的安全性,也可以適當地去安排這些強化的優先順序,從影響和威脅比較大的項目開始著手,減少我們有的威脅
找出系統中所有可能的弱點,包含了電腦、伺服器、各種網路裝置、軟體和服務等等的所有東西。
透過弱點評估工具來掃描系統上的所有裝置,並檢查有沒有一些已知常見的漏洞,或是遺漏了重要的更新,如果有的話就會將這些資訊搜集起來並統計成報告之類的資訊,讓我們了解系統的弱點狀況。
市面上有許多弱點評估的軟體,我們透過這些軟體隨時取得最新的弱點評估資訊
侵入式的檢測方式,使用駭客會使用的攻擊手法,試著去攻擊自己的系統,看看系統會不會被成功入侵。
目前還沒有辦法透過軟體或工具來自動化完成,需要專業的白帽駭客來親自執行,通常費用也會不便宜,因此常見的做法會是請第三方組織每過半年一年來進行一次。
弱點評估的檢查比較廣,能涵蓋的範圍比較大
滲透測試比起弱點評估,除了能發現弱點以外,還能分析和測試駭客會怎麼樣利用這些弱點來攻擊我們,在成功入侵以後,也能知道駭客可以取得哪些資訊和對我們造成哪些傷害。
公司內專職進行滲透測試的團隊
有些比較大的公司或是在資安上比較成熟的公司,會透過紅隊來持續檢視公司產品的安全性
軟體跟系統會持續的改變和更新,因此要確保公司的系統和軟體一直都處在夠安全的狀況下的話,與其一直花錢請外面的人,不如就直接雇用一群人來每天持續的測試和滲透。
紅隊也會因為長時間的在同一個系統和軟體上進行研究,因此會比較了解公司的產品和系統,在研究上通常可以找到一些比較深入的漏洞或問題。
相對於紅隊這個比較攻擊取向的團隊,公司內部比較偏向防禦的團隊就會被稱為藍隊,他們負責的項目主要會是事件響應,也就是有疑似資安事件發生時要負責調查和應對。
很多公司為了能夠吸引到世界各地的資安研究員來幫助他們找到系統的問題和漏洞,會設立漏洞獎勵計劃,來透過獎金的方式獎勵回報漏洞的資安研究員。