代碼審計

代碼審計

顧名思義就是檢查原始碼中的安全缺陷,檢查程式原始碼是否存在安全隱患,或者有編碼不規範的地方,通過自動化工具或者人工審查的方式,對程式原始碼逐條進行檢查和分析,發現這些原始碼缺陷引發的安全漏洞,並提供代碼修訂措施和建議。

基本介紹

  • 中文名:代碼審計
  • 外文名:Code audit
  • 作用:消除錯誤
  • 對象:程式語言
簡介,對象,內容包括,具體過程,高風險漏洞,低風險漏洞,工具,要求,

簡介

代碼審計(Code audit)是一種以發現程式錯誤,安全漏洞和違反程式規範為目標的原始碼分析。軟體代碼審計是對編程項目中原始碼的全面分析,旨在發現錯誤,安全漏洞或違反編程約定。 它是防禦性編程範例的一個組成部分,它試圖在軟體發布之前減少錯誤。 C和C ++原始碼是最常見的審計代碼,因為許多高級語言(如Python)具有較少的潛在易受攻擊的功能(例如,不檢查邊界的函式)。

對象

我們的代碼審計對象包括並不限於對Windows和Linux系統環境下的以下語言進行審核:java、C、C#、ASP、PHP、JSP、.NET。

內容包括

1.前後台分離的運行架構
2.WEB服務的目錄許可權分類
3.認證會話與套用平台的結合
4.資料庫的配置規範
5.SQL語句的編寫規範
6WEB服務的許可權配置
7.對抗爬蟲引擎的處理措施

具體過程

審核軟體時,應對每個關鍵組件進行單獨審核,並與整個程式一起進行審核。 首先搜尋高風險漏洞並解決低風險漏洞是個好主意。 高風險和低風險之間的漏洞通常存在,具體取決於具體情況以及所使用的原始碼的使用方式。 應用程式滲透測試試圖通過在可能的訪問點上啟動儘可能多的已知攻擊技術來嘗試降低軟體中的漏洞,以試圖關閉應用程式。這是一種常見的審計方法,可用於查明是否存在任何特定漏洞,而不是原始碼中的漏洞。 一些人聲稱周期結束的審計方法往往會壓倒開發人員,最終會給團隊留下一長串已知問題,但實際上並沒有多少改進; 在這些情況下,建議採用線上審計方法作為替代方案。

高風險漏洞

由於使用以下原因,可能存在一些常見的高風險漏洞:
  • 非邊界檢查函式(例如,strcpy,sprintf,vsprintf和sscanf)可能導致緩衝區溢出漏洞
  • 可能幹擾後續邊界檢查的緩衝區的指針操作,例如:if((bytesread = net_read(buf,len))> 0)buf + = bytesread;
  • 調用像execve(),執行管道,system()和類似的東西,尤其是在使用非靜態參數調用時
  • 輸入驗證,例如(在SQL中):statement:=“SELECT * FROM users WHERE name ='”+ userName +“';”是一個SQL注入漏洞的示例
  • 檔案包含功能,例如(在PHP中):include($ page。'。php');是遠程檔案包含漏洞的示例
  • 對於可能與惡意代碼連結的庫,返回對內部可變數據結構(記錄,數組)的引用。惡意代碼可能會嘗試修改結構或保留引用以觀察將來的更改。

低風險漏洞

以下是審計代碼時應該找到的低風險漏洞列表,但不會產生高風險情況。
  • 客戶端代碼漏洞不影響伺服器端(例如,跨站點腳本)
  • 用戶名枚舉
  • 目錄遍歷(在Web應用程式中)

工具

原始碼審計工具通常會查找常見漏洞,僅適用於特定的程式語言。 這種自動化工具可用於節省時間,但不應依賴於深入審計。 建議將這些工具作為基於政策的方法的一部分。

要求

如果設定為低閾值,則大多數軟體審計工具會檢測到許多漏洞,尤其是在以前未審核過代碼的情況下。 但是,這些警報的實際重要性還取決於應用程式的使用方式。 可能與惡意代碼連結的庫(並且必須對其免疫)具有非常嚴格的要求,例如克隆所有返回的數據結構,因為有意破壞系統的嘗試是預期的。 只能暴露於惡意輸入(如Web伺服器後端)的程式必須首先關心此輸入(緩衝區溢出,SQL注入等)。 對於僅受保護基礎結構中的授權用戶內部使用的程式,可能永遠不會發生此類攻擊。

相關詞條

熱門詞條

聯絡我們