如何高效實施靜態程式碼檢測工具SAST?

zktq2021發表於2021-06-17

自2017年以來,全球網路攻擊致使洩漏資料的數量平均每年增長高達224%,2020年網路釣魚攻擊翻一番。資料安全風險逐年上漲,但安全人員數量卻遠遠少於開發人員。某行業技術人員稱,每千行程式碼就可能引入4-6個安全缺陷,對於一個組織來說,即使是在其應用程式的一小部分上,尋找資源來執行程式碼審查都具有極大的挑戰性。因此,將靜態程式碼安全檢測手段整合到SDLC中可以顯著提高程式碼整體質量。

靜態程式碼安全性測試

SAST(靜態程式碼安全檢測)主要對應用程式的原始碼進行分析來查詢其中存在的漏洞。靜態程式碼安全檢測(SAST)是在編譯程式碼之前掃描程式碼,因此它是一種白盒測試。SAST的使用已經被實踐10多年,這項技術手段可以幫助開發人員在軟體開發生命週期(SDLC)早期階段發現程式碼安全漏洞,此外SAST 無需實際執行或編譯程式碼即可確保符合安全編碼標準。

更重要的是,SAST(靜態程式碼安全檢測)可以自動化並透明地整合到專案的工作流程中。這減少了通常與安全性測試應用程式相關的一些麻煩,與DAST(動態應用程式測試)形成鮮明對比。在DAST中,對於大型專案,需要建立特殊的基礎設施、執行特殊的測試以及應用程式的多個例項與不同的輸入資料並行執行,而IAST覆蓋路徑少檢測範圍較窄,無法對整體程式碼實施安全檢測。

在SDLC中SAST是如何起作用的

因為SAST是被整合到軟體開發生命週期(SDLC)的早期階段,並能夠分析100%的程式碼庫,它們比人工執行的安全程式碼審查要快得多,可以在幾分鐘內掃描數萬行程式碼。透過靜態程式碼檢測有助於開發人員及時找到易受攻擊的程式碼,同時在不破壞任何構建的情況下,進行任何相應的修改以修復缺陷程式碼。

高效實施SAST的關鍵步驟

為了有效和高效地實施SAST,應執行以下步驟:

選擇合適的SAST工具:該工具支援所使用的程式語言並可以對應用程式執行程式碼審查;

建立基礎設施並部署工具:選擇工具後,下一步驟包括處理許可要求、設定身份驗證和授權,以及設定部署工具所需的基礎設施;

定製工具:此步驟涉及根據組織的需要定製工具。例如:配置工具以找出誤檢,將工具整合到構建或CI/CD環境中,建立用於跟蹤掃描結果的指示板並生成自定義報告;

優先順序和載入應用程式:掃描所有應用程式,如果有一個很長的應用程式列表,應該首先掃描高風險的應用程式。應用程式掃描應該每天或每月與釋出週期同步。

分析掃描結果:對結果進行分類以消除假陽性,將已確定的問題集傳送給開發人員並修補缺陷。

SAST工具重要的選擇標準

1. 是否支援所使用的程式語言及作業系統

2. 可以檢測到的漏洞型別(在OWASP 前十名中(還有更多?))

3. 有多準確?誤報/誤報率在多少?

4. 滿足您使用的庫/框架嗎?

5. 是否支援跨類、跨函式的缺陷/漏洞檢測?

6. 是否具備深度檢測能力?

7. 可以整合到開發者的IDE中嗎?

8. 設定/使用有多難?

9. 可以連續自動執行嗎?

10. 能否根據實際情況進行定製化功能?(每個企業所需要的檢測重點不同)

常見好用的SAST工具

以下是常用的SAST軟體,認真做好檢測可以確保Web應用程式免受網路攻擊:

Checkmarx(以色列)

Wukong原始碼檢測(國產信創)

Coverity(美國)

Fortify(美國)

SAST工具的優點:

1.擴充套件性好,支援多語言多操作環境,可以在很多軟體上執行

2.對於發現緩衝區溢位、跨站點指令碼(XSS)、SQL隱碼攻擊、硬編碼機密等具有重大影響的漏洞非常有用

3.透過突出顯示原始檔、行號等,為開發人員生成詳細的輸出報告,便於修改程式碼

4.在研發階段早期發現並修復缺陷和安全漏洞,節省大量精力和財力

程式碼安全漏洞可能導致應用程式及其資料遭到破壞,甚至遭到網路犯罪分子勒索。美國國土資源局曾表示,90%的漏洞都是錯誤程式碼造成的。網路安全的本質就是軟體安全、程式碼安全,大多數情況下這些漏洞都是人為原因造成的,因此在部署上線之前,將安全滲透在研發的各個階段可以減少系統漏洞數量,降低網路安全風險。

在程式碼編寫過程中,如果將問題發現和修復程式碼移至編碼階段可以為企業節省20%成本,而在產品釋出後,修改缺陷成本則將增加五倍。這也是很多企業正在意識到的一點,因此更加願意選擇利用 靜態程式碼安全檢測工具從源頭減少bug的出現,減少修改錯誤的時間與成本。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2777210/,如需轉載,請註明出處,否則將追究法律責任。

相關文章