代碼掃描

靜態原始碼掃描是近年被人提及較多的軟體套用安全解決方案之一。它是指在軟體工程中,程式設計師在寫好原始碼後,無需經過編譯器編譯,而直接使用一些掃描工具對其進行掃描,找出代碼當中存在的一些語義缺陷、安全漏洞的解決方案。目前的靜態掃描技術已經從90年代時候的,編碼規則匹配這種由編譯技術拓展過來的分析技術向程式模擬全路徑執行的方向發展,由此,這種模擬執行相對的執行路徑比動態執行更多,能夠發現很多動態測試難以發現的缺陷。

概述

信息安全是一個隨時都在發展和變化的動態事物,攻擊的領域已經由傳統的網路和系統層面上升到了套用層面,近期越來越多的套用系統面臨攻擊威脅。套用系統的安全性能,一方面立足於系統安全方案的分析與設計,而另一方面同樣也取決於系統實現過程中是否存在安全性缺陷。為降低套用系統的安全風險,減少軟體代碼編寫中可能出現的安全漏洞,提高套用系統自身安全防護能力,軟體的套用方越來越依賴於採用原始碼安全掃描工具在軟體開發的過程中去幫助軟體開發團隊快速查找、定位、修復和管理軟體代碼安全問題,套用靜態原始碼安全掃描的的主要價值在於能夠快速、準確地查找,定位和修復軟代碼中存在的安全風險,增加工具投資所帶來的最大效益,節約代碼安全分析的成本,最終開發安全的。可靠的軟體。

靜態原始碼掃描

這個方案的優點在於,無需進行編譯、也無需去搭建運行環境,就可以對程式設計師所寫的原始碼進行掃描。可以節省大量的人力和時間成本,提高開發效率,並且能夠發現很多靠人力無法發現的安全漏洞,站在黑客的角度上去審查程式設計師的代碼,大大降低項目中的安全風險,提高軟體質量。

在靜態原始碼掃描技術上,現在被普遍套用的是第一代和第二代技術。

不足

第一代技術是指:傳統的靜態分析,傳統的靜態分析都是基於語法解析或者編譯器,這些方式分析代碼的缺陷是以代碼所匹配的規則模式(patterns)去評估代碼,只要模式匹配或者相似就報出來。需要人工去分辨出其中的真假,主要存在的問題:

– False positive(誤報)

– False negative(漏報)

出現上述問題的原因是:

在作靜態分析時,要先描繪出代碼所有的路徑,然後去對每種路徑上的變數作計算,並比較。基於語法的解析路徑是可以描繪出路徑來的,但要計算每個路徑上的變數在使用前後的值,並跟蹤他們,目前採用的算法幾乎不可能,就是上面的程式也要花費相當長的時間,幾乎無法接受。因此目前許多靜態工具只是把感染的路徑找到,但不計算和不作比較,需要藉助人工去分辨所有可能的情況,這就是他們誤報率非常高的原因。

在小量的代碼前提下,簡單的代碼將不是問題,也是可以接受的。但是,如果是大量的代碼,複雜的代碼,傳統的掃描技術將幾乎不可行,因為它將大量浪費開發和安全審計人員的時間,有時人眼也無能為力。

改進

近期,美國和以色列的一些技術人員又提出了一種新的代碼掃描技術,也稱之為第二代的靜態原始碼掃描技術。

這種技術可簡單的理解為,把代碼劈開,把待分析的代碼及代碼之間的關係以對象的方式存放在記憶體中,同時也使用了一種可以接受的算法在有效的時間裡描繪出套用的路徑圖形,並採用了一種特殊的查詢語言CxQL來查找安全問題,每一個查詢語句就針對一類安全漏洞問題,因此幾乎可以達到完美的結果,消除了誤報(false positive). (其原理有點像建立在資料庫為基礎的查詢引擎、查詢語言和查詢語句一樣)

用戶可以利用CxQL語言定製自己的查詢語句(規則),查找特定的安全和邏輯的問題,解決漏報(false Negative)問題。使得代碼掃描變得更加現實和可用。也可以給項目開發節省大量的時間各人力成本,大大提升軟體的安全性能。

相關詞條

熱門詞條

聯絡我們