iT邦幫忙

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

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

[Day02]原始碼檢測x靜態白箱x軟體

通常系統檢測會有分幾個大方向,我們可以從[Day01]資安x軟體生命週期x原始碼檢測中,了解什麼階段有什麼對應的方式,以及為何我們要做原始碼檢測,以下簡單的介紹有幾種方式:

白箱 x 黑箱 x 灰箱

白箱測試

使用被測程式內部如何工作的資訊,允許測試人員對程式內部邏輯結構及有關資訊來設計和選擇測試案例,對程式的邏輯路徑進行測試。其測試基於覆蓋全部程式碼、分枝、路徑、條件。

黑箱測試

測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能性說明的測試方法。主要是在系統測試階段時採用。

灰箱測試

基於被測試程式邏輯結構的基礎上,從系統功能介面上設計測試案例。通常是作為黑箱測試的補充或在黑箱發現缺陷以後,回到原始程式碼分析原因確認問題時採用。
引用至林維展大大的原文

在軟體生命週期(SDLC)中,我們會先介紹靜態原始碼分析。
事實上,現在在業界已經有很多公司都已經有採用這樣的方式來控管軟體資安品質。

不過在業界最真實的狀況是:「金融監督管理委員會」已經將「原始碼檢測」列為法規之一
所以,在台灣,證券、壽險、銀行及一級國家單位已經列入需要檢核的範圍之內了…
就是金管會強制規定的這樣… =v="

為了不會再有金融資安事件的發生,所以相對的對金融單位會有較嚴格的把關。
當然,後續會慢慢普及至政府機關、大型企業,不過,我想大概都要有事件發生吧 =v="

接下來大概簡單介紹一下幾個常用的靜態原始碼檢測軟體 =v=+
不是工商時間的心得文…

原始碼檢測相關產品

[Fortify] 金融或金流單位推薦

  • 大部份的金融單位都採用這套系統,我想是因為金管會跟國外多數金融機構都用這套
  • 動態程式驗證,結合IDE Plugin功能,包含共用dll及component相容開發IDE掃瞄方式
  • 弱點很全面,漏判的弱點少,誤判率較高,需要人工驗證
  • 作業系統最多、結合開發工具最多、程式語言最多
  • 支援客製報表
  • 詳細弱點描述、修補建議 & 程式碼、加入客製修補經驗
  • 設定掃瞄白名單、客製化規則
  • 適用平台: Windows/Linux/BSD/MacOS

[Checkmarx] 中小企業推薦

  • 雲端架構,線上掃描,節省成本,共享資源
  • 不會誤判,但可能有漏判的狀況
  • 支援客製報表
  • 簡單易上手
  • 介面好操作
  • 適用平台: Windows

用過幾款其他工具,但有時候拿Sample Code掃描出來都沒有弱點 XD
比較不穩健就是了,有空也是可以嘗試下載其他工具用看看:

[ITS4]

ITS4 是由 Cigital 公司制定發佈的一款自動化程式碼安全審查的工具。
ITS4 針對 C 及 C++ 程式語言提供簡易的靜態分析,以發現潛在的安全問題。
本專案使用的是命令列執行的方式進行,支援 Windows 及 Unix 平台。
適用平台: Windows/Linux/BSD
資料來源: http://www.cigital.com/its4/

[JeSS]

JeSS 是一個 Eclipse IDE 的外掛插件。
提供針對 Java 程式語言的靜態安全程式掃描器,得以發現潛在的程式安全問題。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://sourceforge.net/projects/jsecscanner/

[Clint]

Clint 是一款為靜態程式原始碼安全檢測的試驗平台。
它目前可以用來檢查常見的 C++ 程式語言的錯誤,並且提出改進的建議。
適用平台: Linux/BSD
資料來源: http://sourceforge.net/projects/clint/

[Graudit]

Graudit 是一個簡單的 script 腳本和特徵碼集合的工具組,讓你可以找到潛在的程式源碼安全漏洞。
這功能相當於使用靜態分析方式,支援 ASP, JSP, Perl,PHP 及 Python。
適用平台: Linux/BSD
資料來源: http://www.justanotherhacker.com/projects/graudit.html

[Findbugs]

Findbugs 是一個可以提供靜態程式源碼分析的工具。針對 Java 程式語言的特性來除錯。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://findbugs.sourceforge.net/

[PMD]

PMD 是一款專為 Java 程式語言安全分析的工具。
它可以發現沒有使用到的 Java 變數,空的 catch 區塊,沒有必要的物件產生等問題。
其它功能還包括提出更佳撰寫方式的建議。
適用平台: Windows/Linux/BSD/MacOS
資料來源: http://sourceforge.net/projects/pmd/


上一篇
[DayX]番外篇x題目吶x所謂絕對領域
下一篇
[Day03]原始碼檢測x弱點修補X驗證攻擊-SQL Injection
系列文
資安x系統x絕對領域47

尚未有邦友留言

立即登入留言