• 滲透式資訊安全測試結果報告範例

    筆者公司因為處於資訊安全領域的頂尖地位,因此相關的軟體與測試對於資訊安全測試會特別注重。

    除了內部有一定的資訊安全測試流程與評審外,在特定專案也會與知名的資訊安全顧問公司合作,針對整個專業的資訊安全進行測試與評估。

    這樣的資訊安全測試最後的測試報告產出為何? 與一般軟體測試報告有什麼不同? 資訊安全測試報告應該要包含哪些要素?

    這篇文章會以一個範例討論這些議題。

     

    業界範例

    這個組織 PTES (Penetration Testing Execution Standards) 主要將資訊安全測試分為七大步驟,其中測試報告結果建議範本如下:

    http://www.pentest-standard.org/index.php/Reporting

    http://www.vulnerabilityassessment.co.uk/report%20template.html

    執行的七大步驟分別為:

    實際個案

    下列是筆者與一家知名的國際資安顧問公司合作的測試報告結果。大綱內容大致如下。

    Penetration testing report agenda

    這個測試報告主要分為四大部分

    • Executive Summary: 整體資訊安全風險與弱點的整理摘要
    • Scope: 整個專案測試範圍
    • Methodology: 測試的工具、方法與風險的定義
    • Findings: 測試結果的發現、使用工具、Reproduce Steps 等。這部分佔了整個測試報告的 80%以上。也是研發工程部分主要參考的地方。

    分別說明如下

    Executive Summary

    主要說明針對專案的範圍發現了多少的問題

    • xxx 高風險的問題
    • xxx 中度風險問題
    • xxx 低風險問題

    測試主要用哪些方法 (Code review, gray-box, business logic, authentication 等)。不包含什麼 (architecture risk analysis)。

     

    Methodology

    主要說明測試的方法。例如筆者合作的顧問公司採用的兩種

    • Dynamic Threat-based Penetration Testing : 主要針對網路互動行為做測試
    • Validation by Source code review:主要針對程式碼做評審

    Risk Assessment

    說明風險的定義。最後產品出貨前,根據這樣的定義決定哪些是出貨前一定要解決,哪些是可以出貨後再解決。

    下面的例子定義為五個等級。筆者建議其實三個等級符合專案所需,容易了解與執行即可。

     

    Findings

    測試過程中發現的資訊安全漏洞。這部分的篇幅占據整個報告的 80%以上。一開頭建議有一個 summary表格如下

    列出所有發現的問題並且註明發生的可能性、造成的影響、嚴重性。

    Finding Likelihood Impact Severity Status
    SSL Cookie without Secure Flag Med High Low Open
    HTTP TRACE method Enabled High Med Low Open

    ….

    每一個測試結果發生的個案要怎樣描述呢? 筆者舉一個例子。

    Finding1: Denial Of Service 

    測試結果發現惡意程式可能可以透過特定方式造成服務中斷。這樣的服務中斷會導致 XXX 功能的異常。

    影響的產品範圍

    ProductA, ProductB, productC….

    使用測試工具

    • Logcat
    • Fuzzer
    • Android Debug Bridge

    Reproduce Steps 

    adb shell am start packageName/activityName

    測試結果畫面 Results

    (眼見為憑。把關鍵的測試結果畫面附上。)

    發生的機率 Likelihood

    高: 惡意程式只要透過上述步驟就可以將服務中止

    影響嚴重性 Impact

    高: 造成特定服務無法正常運作,導致…….受到影響。

    Mitigation 防護建議

    對於手機程式執行與惡意參數的輸入可以採取下列三個方式

    • 檢查相關的輸入與參數。Broadcast receivers對於字串與 Null 等作檢查與錯誤處理。
    • 評審Broadcast receivers 將 public 改為 private
    • 適當的設定 AndroidManifest.xml (android:exported=”false”)

    參考資料

    http://developer.android.com/guide/topics/manifest/permission-element.html

    https://www.defcon.org/images/defcon-19/dc-19-presentations/O’Neil-Chin/DEFCON-19-O’Neil-Chin-Google-Android.pdf

     

     

     

     

     

     

     

     

     

    Posted by Tony @ 10:17 am

  • Leave a Reply

    Your email address will not be published.