iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 2
3
Security

資安x系統x絕對領域系列 第 2

[Day01]資安x軟體開發生命週期x原始碼檢測

  • 分享至 

  • xImage
  •  

通常,當資安事件或產業新聞發生的時候,公司才會提高金融預算,才會開始重視資訊安全。
像說,惡意程式的2013、個資外洩的2014、勒索病毒的2015、金融危機的2016…
至今我們最常碰到的就是不僅是單一種攻擊方式:

社交工程

由郵件或簡訊、網頁,提供連結,供使用者下載惡意程式或主控權
  +

漏洞弱點

由應用程式、網頁弱點入侵,取得主控權或上傳後門或惡意程式、破壞系統
  +

惡意程式

呃,就是執行完發生「未預期」的程式,種類嘛太多就不說了…

當然還有其他方式,像修改硬體或取得權限、默默潛伏等待機會、開個後門什麼的…
話說,今年最酷的就是用手機去搖控遠端駕駛汔車跟gogoro了…
雖然已經回報給原廠商了,但是其他廠商有沒有這個問題呢科科…
有心人士就會去做這樣的一個協助測試,然後可能從中獲取一些利益…
偏題了…

由於手法真的太多了…
那我們先從最能節省開發成本的軟體開發生命週期(SDLC)開始說明!

------------------------------

軟體開發生命週期(Software Development Life Cycle,SDLC)

http://ithelp.ithome.com.tw/upload/images/20161207/20103647mhYvu9vwtC.jpg

  • 圖片來源:http://www.stylusinc.com/down-to-earth-ideation/the-software-development-life-cycle-sdlc/
  • SDLC 概念可以參考:https://www.youtube.com/watch?v=wnDsmBit_XQ

當我們開發完成作業系統,標準的上線流程:
需求分析、程式設計、初步測試、上版測試區、稽核複測、凍結版號、正式版本上線、上版維護…
當然會再依不同產業或公司政策的狀況調整,可以直接看下面的說明就是 XD
http://ithelp.ithome.com.tw/upload/images/20161207/20103647hHz7nQ4DUI.png
//謝謝 Fred 大學長的投影片擷圖 =v=+

(1)需求發展、分析設計

  • 安全需求分析(Security Requirements)
  • 安全威脅分析(Security Risk Analysis)
  • 安全設計(Security Design)

參考上圖,我們就可以知道,我們的第一關就是軟體的開發人員。
孩子的教育不能等!資安教育也是!
只要在系統分析的時候將資安的架構考慮進去,後續在開發階段也能省下很多工夫。
像說如果在後期發現有SQL Injection需要改為參數化(Prepared Statements),
如果有共用Library或Function,需要修補的部份就少的很多…
雖然這裡的例子偏Code Quality,但都是客戶的血淚 XD

至於資安教育怎麼做,會需要做到多細,就必須要看產業別或職能別來區分了。
如果公司裡面有硬體設備廠商,有部份都能談看看有沒有附加或這樣的服務
不要說是我說的 =v="

(2)開發測試

  • 程式安全教育訓練(Secure Coding)
  • 原始碼安全檢測(Code Review)

這個階段也就是俗稱的「白箱驗證」,交付程式碼,透過工具或資安單位做程式碼安全掃描。
通常資訊部門都會有程式碼撰寫的格式或版本控管,或有資安稽核的職位,就會做撰寫程式的控管。
不過台灣這個部份,幾乎都是程式交付給主管之後,或單元測試單位之後才會檢核,
但現在已經有不少產品有提供邊撰寫程式就能邊檢核是否原始碼區段是否有漏洞的功能了。
後續我們會有幾天的小專題,會特別說明這個部份。
除了目前在公司負責這個服務以外,還有其中一項原因是因為…
這是最能降低後續維護成本的項目。
畢竟,如果能把漏洞在前端都修補完成了,後面就可以很省事兒了。=v=+

(3)建置

動態驗證
動態驗證的部份,也就是我們俗稱的黑箱。
這個部份需要「非原開發人員」或「專業資安團隊」去做攻擊模擬。
有主機弱點掃瞄、網站弱點掃瞄、滲透測試之類等相關的方式可以驗證是否有漏洞或弱點。

為什麼需要做黑箱驗證呢?
是因為「寫在網頁後端」、「商業邏輯」、「記憶體緩衝溢位」或是「動態鍵結驗證」的部份,
無法完全透過白箱驗證,所以才需要黑箱複測這個部份。

通常我們會請客戶提供測試區做攻擊,之後修補完後,沒有問題才上正式區做複核。

為什麼要在測試區做一次,怎麼不在正式區做就好?
因為複測的人員不是寫程式的人員,
可能會執行到 Command Injection部份或程式開發人員寫的省事兒批次執行檔…
一個不小心就 Drop資料庫或把設置變更了,所以才需要在測試區做完再上版正式區。

(4)維護

維運的部份,如果客戶依前面的步驟上版,並且有相關資安產品在防禦的話,
除了定期備份、定期健檢以外,沒有資安事件的話,幾乎可以很穩定這樣 XD
還有乖乖祭品的習俗(?)
http://ithelp.ithome.com.tw/upload/images/20161208/20103647Y2Eeu9MD27.jpg
//圖片來源:https://www.inside.com.tw/2016/07/04/remote-backup

俗話說的好!不怕一萬,只怕萬一!
但如果一發生資安事件,像說這陣子常常出現有User感染勒索病毒的狀況…
那麼如果感染到目前上線的系統或模組,
除了要即時還原、並且還要抓出來病毒來源,那麼平時的備份真的要確實。
有客戶備份半年空資料夾,因為路徑設錯了…不說了都是血淚…
交接也是一件很重要的事情…


上一篇
[Day00]資安x前言x從入門到入獄
下一篇
[DayX]番外篇x題目吶x所謂絕對領域
系列文
資安x系統x絕對領域47
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Kathy Lai
iT邦新手 5 級 ‧ 2016-12-08 16:25:36

很重要的觀念:)

虎虎 iT邦研究生 5 級 ‧ 2016-12-08 17:25:15 檢舉

這個幾乎給客戶教育訓練都會講啦 XD
只是可能還是要看公司政策去看他們有沒有配合的軟體或版控之類的 XD
參考囉參考~~~~~

0
d86123
iT邦新手 5 級 ‧ 2022-03-11 11:17:45

這個好,考試真的很常考這個跟瀑布與敏捷

我要留言

立即登入留言