通常,當資安事件或產業新聞發生的時候,公司才會提高金融預算,才會開始重視資訊安全。
像說,惡意程式的2013、個資外洩的2014、勒索病毒的2015、金融危機的2016…
至今我們最常碰到的就是不僅是單一種攻擊方式:
由郵件或簡訊、網頁,提供連結,供使用者下載惡意程式或主控權
+
由應用程式、網頁弱點入侵,取得主控權或上傳後門或惡意程式、破壞系統
+
呃,就是執行完發生「未預期」的程式,種類嘛太多就不說了…
當然還有其他方式,像修改硬體或取得權限、默默潛伏等待機會、開個後門什麼的…
話說,今年最酷的就是用手機去搖控遠端駕駛汔車跟gogoro了…
雖然已經回報給原廠商了,但是其他廠商有沒有這個問題呢科科…
有心人士就會去做這樣的一個協助測試,然後可能從中獲取一些利益…
偏題了…
由於手法真的太多了…
那我們先從最能節省開發成本的軟體開發生命週期(SDLC)開始說明!
------------------------------
當我們開發完成作業系統,標準的上線流程:
需求分析、程式設計、初步測試、上版測試區、稽核複測、凍結版號、正式版本上線、上版維護…
當然會再依不同產業或公司政策的狀況調整,可以直接看下面的說明就是 XD
//謝謝 Fred 大學長的投影片擷圖 =v=+
參考上圖,我們就可以知道,我們的第一關就是軟體的開發人員。
孩子的教育不能等!資安教育也是!
只要在系統分析的時候將資安的架構考慮進去,後續在開發階段也能省下很多工夫。
像說如果在後期發現有SQL Injection需要改為參數化(Prepared Statements),
如果有共用Library或Function,需要修補的部份就少的很多…雖然這裡的例子偏Code Quality,但都是客戶的血淚 XD
至於資安教育怎麼做,會需要做到多細,就必須要看產業別或職能別來區分了。如果公司裡面有硬體設備廠商,有部份都能談看看有沒有附加或這樣的服務不要說是我說的 =v="
這個階段也就是俗稱的「白箱驗證」,交付程式碼,透過工具或資安單位做程式碼安全掃描。
通常資訊部門都會有程式碼撰寫的格式或版本控管,或有資安稽核的職位,就會做撰寫程式的控管。
不過台灣這個部份,幾乎都是程式交付給主管之後,或單元測試單位之後才會檢核,
但現在已經有不少產品有提供邊撰寫程式就能邊檢核是否原始碼區段是否有漏洞的功能了。
後續我們會有幾天的小專題,會特別說明這個部份。
除了目前在公司負責這個服務以外,還有其中一項原因是因為…
這是最能降低後續維護成本的項目。
畢竟,如果能把漏洞在前端都修補完成了,後面就可以很省事兒了。=v=+
動態驗證
動態驗證的部份,也就是我們俗稱的黑箱。
這個部份需要「非原開發人員」或「專業資安團隊」去做攻擊模擬。
有主機弱點掃瞄、網站弱點掃瞄、滲透測試之類等相關的方式可以驗證是否有漏洞或弱點。
為什麼需要做黑箱驗證呢?
是因為「寫在網頁後端」、「商業邏輯」、「記憶體緩衝溢位」或是「動態鍵結驗證」的部份,
無法完全透過白箱驗證,所以才需要黑箱複測這個部份。
通常我們會請客戶提供測試區做攻擊,之後修補完後,沒有問題才上正式區做複核。
為什麼要在測試區做一次,怎麼不在正式區做就好?
因為複測的人員不是寫程式的人員,
可能會執行到 Command Injection部份或程式開發人員寫的省事兒批次執行檔…
一個不小心就 Drop資料庫或把設置變更了,所以才需要在測試區做完再上版正式區。
維運的部份,如果客戶依前面的步驟上版,並且有相關資安產品在防禦的話,
除了定期備份、定期健檢以外,沒有資安事件的話,幾乎可以很穩定這樣 XD還有乖乖祭品的習俗(?)
//圖片來源:https://www.inside.com.tw/2016/07/04/remote-backup
俗話說的好!不怕一萬,只怕萬一!
但如果一發生資安事件,像說這陣子常常出現有User感染勒索病毒的狀況…
那麼如果感染到目前上線的系統或模組,
除了要即時還原、並且還要抓出來病毒來源,那麼平時的備份真的要確實。有客戶備份半年空資料夾,因為路徑設錯了…不說了都是血淚…交接也是一件很重要的事情…
很重要的觀念:)
這個幾乎給客戶教育訓練都會講啦 XD
只是可能還是要看公司政策去看他們有沒有配合的軟體或版控之類的 XD
參考囉參考~~~~~