- 代碼審計:企業級Web代碼安全架構
- 尹毅
- 1704字
- 2018-12-31 21:29:51
2.2 代碼審計工具
代碼審計工具是一類輔助我們做白盒測試的程序,它可以分很多類,例如安全性審計以及代碼規范性審計,等等。當然,也可以按它能審計的編程語言分類,目前商業性的審計軟件大多支持多種編程語言,也有個人或團隊開發的免費開源審計軟件,像筆者的“Seay源代碼審計系統”就是開源程序。使用一款好的代碼審計軟件可以極大地降低審計成本,可以幫助審計師快速發現問題所在,同時也能降低審計門檻,但也不能過分依賴審計軟件。目前常用的代碼安全審計軟件還有Fortify SCA、RIPS、FindBugs、Codescan等。下面介紹幾款常用代碼安全審計工具。
2.2.1 Seay源代碼審計系統
這是筆者基于C#語言開發的一款針對PHP代碼安全性審計的系統,主要運行于Windows系統上。這款軟件能夠發現SQL注入、代碼執行、命令執行、文件包含、文件上傳、繞過轉義防護、拒絕服務、XSS跨站、信息泄露、任意URL跳轉等漏洞,基本上覆蓋常見PHP漏洞。另外,在功能上,它支持一鍵審計、代碼調試、函數定位、插件擴展、自定義規則配置、代碼高亮、編碼調試轉換、數據庫執行監控等數十項強大功能。主界面如圖2-9所示。

圖2-9
Seay源代碼審計系統主要特點如下:
1)一鍵自動化白盒審計,新建項目后,在菜單欄中打開“自動審計”即可看到自動審計界面。點擊“開始”按鈕即可開始自動化審計。當發現可疑漏洞后,則會在下方列表框顯示漏洞信息,雙擊漏洞項即可打開文件跳轉到漏洞代碼行并高亮顯示漏洞代碼行,如圖2-10所示。

圖2-10
2)代碼調試,代碼調試功能極大地方便了審計師在審計過程中測試代碼。可以在編輯器中選中代碼,然后點擊右鍵選擇“調試選中”即可將代碼在調試界面打開,如圖2-11所示。

圖2-11
3)正則編碼,Seay源代碼審計系統集成了實時正則調試功能,考慮到特殊字符無法直接在編輯框進行輸入,在實時正則調試功能中還支持對字符串實時解碼后調試。另外,支持MD5、URl、Base64、Hex、ASCII、Unicode等多種編碼解碼轉換功能,如圖2-12所示。

圖2-12
4)自定義插件及規則,Seay源代碼審計系統支持插件擴展,并且插件的開發非常簡單,只需要將插件的dll文件放入到安裝目錄下的plugins文件夾內即可自動加載插件。目前自帶插件包括黑盒+白盒的信息泄露審計以及MySQL數據庫執行監控。
除了上述功能外,它還支持自定義審計規則,在規則配置界面中即可添加或修改以及禁用、刪除規則,還可針對審計過程做很多審計習慣優化,使得程序簡單容易上手。
2.2.2 Fortify SCA
Fortify SCA是由惠普研發的一款商業軟件產品,針對源代碼進行專業的白盒安全審計,當然,它是收費的,而且這種商業軟件一般都價格不菲。它有Windows、Linux、UNIX以及Mac版本,通過內置的五大主要分析引擎(數據流、控制流、語義、結構以及配置)對應用軟件的源代碼進行靜態分析。關于這五大分析引擎的介紹如表2-1所示。
表2-1 五大分析引擎概述

Fortify SCA是目前支持最多編程語言的審計軟件。它支持的編程語言如下所示:
ASP.NET VB6 VB.NET Java C#.NET JSP ASP JavaScript VBScript HTML Action Script XML Objective-C C/C++ ColdFusion 5.0 PHP Python T-SQL(MSSQL) COBOL PL/SQL(Oracle) SAP-ABAP
分析的過程中與它特有的軟件安全漏洞規則集進行全面的匹配、搜索,在最終的漏洞結果中,包括詳細的漏洞信息,以及漏洞相關的安全知識說明和修復意見。
2.2.3 RIPS
RIPS是一款基于PHP開發的針對PHP代碼安全審計的軟件。另外,它也是一款開源軟件,由國外安全研究員Johannes Dahse開發,程序只有450KB,目前能下載到的最新版是0.54,筆者發現這款程序在2013年2月已經暫停更新。在寫這段文字之前筆者特意讀過它的源碼,它最大的亮點在于調用了PHP內置解析器接口token_get_all,并且使用Parser做了語法分析,實現了跨文件的變量及函數追蹤,掃描結果中非常直觀地展示了漏洞形成及變量傳遞過程,誤報率非常低。RIPS能夠發現SQL注入、XSS跨站、文件包含、代碼執行、文件讀取等多種漏洞,支持多種樣式的代碼高亮。比較有意思的是,它還支持自動生成漏洞利用。
圖2-13為RIPS截圖。

圖2-13
RIPS的使用非常簡單,只需在主界面填入我們要掃描的路徑,其余配置可根據自己的需要設置。完成設置后點擊scan按鈕即可開始自動審計。掃描結束后,程序會顯示漏洞數量、漏洞比例等信息。查看漏洞詳情時,只需點擊提示漏洞處的“-”即可顯示漏洞源代碼和變量過程,如圖2-14所示。

圖2-14
筆者通過RIPS發現ecshop文件包含漏洞,圖2-15所示為RIPS漏洞掃描詳細結果。

圖2-15
代碼查看也非常方便,只需要點擊“review code”即可跳轉到漏洞代碼處,將鼠標指針懸浮在變量上,同文件的變量會高亮顯示,如圖2-16所示。

圖2-16
- RESTful Java Web Services Security
- unidbg逆向工程:原理與實踐
- Wireshark 2 Quick Start Guide
- 黑客攻防與無線安全從新手到高手(超值版)
- 數據安全實踐指南
- 網絡安全三十六計:人人該懂的防黑客技巧
- 數據安全與隱私計算(第3版)
- 信息安全等級保護測評與整改指導手冊
- 網絡服務安全與監控
- Hands-On Artificial Intelligence for Cybersecurity
- 黑客攻擊與防范實戰從入門到精通
- Practical Internet of Things Security
- 2010年中國互聯網網絡安全報告
- ATT&CK視角下的紅藍對抗實戰指南
- Cisco Firepower威脅防御(FTD)設備的高級排錯與配置