代碼審計介紹
軟件代碼審計是在一個編程中對源代碼旨在發現錯誤、安全漏洞或違反編程約定的項目。它是防御性程序設計范例,它試圖在軟件發布之前減少錯誤。C、C++、php源代碼是最常見的審計代碼,因為許多高級語言,如Python,具有較少的潛在易受攻擊的函數(例如,不檢查邊界的函數)——維基百科
代碼審計(CodeAudit) 就是根據了解到的程序功能和關鍵業務,針對程序源代碼逐條進行檢查和分析,找出源代碼中可能引發的常見安全漏洞和業務邏輯問題的缺陷,并提供代碼修改建議或解決方案。
代碼審計技術
代碼檢查是代碼審計工作中最常用的技術手段,實際應用中,采用“自動分析+人工驗證”的方式進行。通常檢查項目包括:系統所用開源框架、源代碼設計、錯誤處理不當、直接對象引用、資源濫用、API濫用、后門代碼發現等。
通常能夠識別如下代碼中的風險點:
跨站腳本漏洞、跨站請求偽裝漏洞、SQL注入漏洞、命令執行漏洞、日志偽造漏洞、參數篡改、密碼明文存儲、配置文件缺陷、路徑操作錯誤、資源管理、不安全的Ajax調用、系統信息泄露、調試程序殘留、第三方控件漏洞、文件上傳漏洞、遠程命令執行、遠程代碼執行、越權下載、授權繞過漏洞。
環境部署
針對于源代碼審計工作環境的部署,其實如果是以服務的方式為客戶的代碼進行審計,審計的環境一般都會相對復雜,會面臨幾種情況:
1. 最理想的環境,客戶提供代碼同時有對應的測試環境,這樣的話就可以黑盒+白盒進行審計,可以提高審計的效率和覆蓋度。
2. 只提供項目源代碼,需要自己梳理整個項目源碼的架構,通讀所有關鍵代碼,相對時間成本比較大,但是可以徹底了解整個項目源代碼并且挖掘出高質量漏洞。
3. 只提供源代碼片段,這種情況首先需要跟客戶溝通是否可以提供完整項目源代碼,否則是在一定程度影響源代碼審計的完整性,因為部分功能代碼片段可能會找不到調用的接口函數,無法追蹤業務邏輯代碼。
所以客戶的代碼審計服務基本上沒有搭建環境的情況,因為他們不會提供數據庫,想跑也跑不起來。
代碼審計常用工具
代碼審計前期準備
1.需要和客戶確認最新源代碼版本
2.需要客戶準備入場后代碼審計環境,是我們自備電腦審計還是在客戶專用的電腦上做審計
3.如果是專用的電腦,需要在電腦上安裝office或者wps、代碼編輯器及IDE工具,同時部署代碼審計工具
4.需要提供被審計系統相關需求文檔及設計文檔,幫助審計人員了解業務,可以深入業務進行審計
5.需要跟開發團隊提前打好招呼,為審計人員講解代碼結構,可以方便審計人員迅速進入審計工作中
代碼審計流程
1.客戶提供源代碼,簽訂《保密協議》
2.源代碼部署完成后,通過專業的代碼審計工具對源代碼進行自動化審計
3.根據掃描的源代碼結果對暴露的常規漏洞和邏輯漏洞進行人工復核,刪除誤報漏洞
4.提交代碼片段和代碼審計報告
測試周期
測評周期一般15個工作日左右,具體看代碼數量和項目規模,有所增減。如果代碼整改不及時或牽涉到第三方程序,時間不好說。測評周期最不確定的因素就是代碼整改,整改的快自然結束的快,所以用戶單位想早點結束的話就得把代碼整改抓緊落實完成。
提供的材料
《軟件委托測試申請表》
《源代碼》
任務書、合同書、申報材料等
約束條件
簽訂《軟件測試委托合同》、《保密協議》
產出物
《軟件測試驗收報告》
服務區域
北京、上海、天津、重慶、遼寧省、黑龍江省、吉林省、廣東省、海南省、福建省、湖南省、四川省、重慶市、貴州省、云南省、廣西省、湖北省、河南省、山東省、甘肅省、新疆省、西藏自治區、河北省、陜西省、山西省、浙江省、江蘇省等地區等保測評報告。