代碼安全審計工具推薦
0×00 簡介
企業安全規劃建設過程中,往往會涉及到開發的代碼安全,而更多可以實現落地的是源代碼安全審計中,使用自動化工具代替人工漏洞挖掘,并且可以交付給研發人員直接進行安全自查,同時也更符合SDL的原則,此外可以顯著提高審計工作的效率。
0×01 代碼安全審計概述
以下鏈接為當前比較熱門的代碼審計推薦文章,門類齊全,點評到位,很值得參考。
http://www.freebuf.com/sectool/101256.html
https://www.owasp.org/index.php
https://www.dwheeler.com/essays/static-analysis-tools.html
https://github.com/mre/awesome-static-analysis
https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
如何開發安全程序的教程
https://www.dwheeler.com/secure-programs/3.71/Secure-Programs-HOWTO/index.html
0×01 PHP代碼審計
1、RIPS開源
一款開源的,具有較強漏洞挖掘能力的自動化代碼審計工具。它使用PHP語言編寫的,用于靜態審計PHP代碼的安全性。代碼安全審計RIPS的主要功能特點如下:
1)能夠檢測XSS、SQL注入、文件泄露、本地/遠程文件包含、遠程命令執行以及更多種類型的漏洞。
2)有5種級別選項用于顯示以及輔助調試掃描結果。
3)標記存在漏洞的代碼行。
4)對變量高亮顯示。
5)在用戶定義函數上懸停光標可以顯示函數調用。
6)在函數定義和調用之間靈活跳轉。
7)詳細列出所有用戶定義函數(包括定義和調用)、所有程序入口點(用戶輸入)和所有掃描過文件(包括include的文件)。
8)以可視化的圖表展示源代碼文件、包含文件、函數及其調用。
9)僅用幾個鼠標點擊就可以使用CURL創建針對檢測到漏洞的EXP實例。
10)詳細列出每個漏洞的描述、舉例、PoC、補丁和安全函數。
11)7種不同的語法高亮顯示模式。
12)使用自頂向下或者自底向上的方式追溯顯示掃描結果。
13)一個支持PHP的本地服務器和瀏覽器即可滿足使用需求。
14) 正則搜索功能。
當前有商業版,但開源已經夠用了,最新版本的RIPS是0.55,下載鏈接如下:https://sourceforge.net/projects/rips-scanner/,
0×02 Java代碼審計
代碼質量:findbugs
代碼安全:findsecuritybugs
FindSecurityBugs是Java靜態分析工具FindBugs的插件,通過一系列的規則發現代碼中的Java安全漏洞。這個工具可以集成在很多IDE中,包括Eclipse或IntelliJ。目前這個項目已經在安全社區中獲得了不少關注度。該工具的最新版本還增加了專門針對Android端產品的漏洞類型。因此,它也是一個不錯的移動端安全掃描工具。如果你想更詳細的了解它,可以去訪問
下載地址:http://findbugs.sourceforge.net/downloads.html
https://www.jianshu.com/p/c43940c4e025
https://find-sec-bugs.github.io/
https://wiki.jenkins.io/display/JENKINS/FindBugs+Plugin
0×03 其他語言代碼審計
1 .net
https://security-code-scan.github.io/
2.C++:
代碼質量:cppcheck
代碼安全:
flawfinder
https://sourceforge.net/projects/flawfinder/
http://www.doc88.com/p-669125880049.html
https://sourceforge.net/p/flawfinder/feature-requests/4/ xml格式支持
3.JS:
代碼質量:eslint
代碼安全:https://github.com/ajinabraham/NodeJsScan
https://blog.csdn.net/yalishandalee/article/details/61916454
https://github.com/nodesecurity/eslint-plugin-security#rules
4.Go:
代碼質量:golint、go tool vet
代碼安全:gas
https://github.com/GoASTScanner/gas
5.Python:
代碼質量:pylint
代碼安全:bandit,py-find-injection,pyt
https://wiki.openstack.org/wiki/Security/Projects/Bandit
https://github.com/openstack/bandit
https://github.com/uber/py-find-injection
https://github.com/bit4woo/python_sec
https://github.com/python-security/pyt
6.多種語言的安全代碼檢查工具:sonar
https://docs.sonarqube.org/display/SONAR
https://www.sonarsource.com/products/codeanalyzers/sonarjava/rules.html#Vulnerability_Detection
https://github.com/SonarSource/sonarqub
7.ruby
https://github.com/thesp0nge/dawnscanner
https://github.com/presidentbeef/brakeman
0x04 商業代碼審計工具
1、 Fortify SCA
Fortify Software公司是一家總部位于美國硅谷,致力于提供應用軟件安全開發工具和管理方案的廠商。Fortify為應用軟件開發組織、安全審計人員和應用安全管理人員提供工具并確立最佳的應用軟件安全實踐和策略,幫助他們在軟件開發生命周期中花最少的時間和成本去識別和修復軟件源代碼中的安全隱患。

Fortify SCA是一個靜態的、白盒的軟件源代碼安全測試工具,它通過內置的五大主要分析引擎:數據流、語義、結構、控制流、配置流等對應用軟件的源代碼進行靜態的分析,分析的過程中與它特有的軟件安全漏洞規則集進行全面地匹配、查找,從而將源代碼中存在的安全漏洞掃描出來,并給予整理報告。掃描的結果中不但包括詳細的安全漏洞的信息,還會有相關的安全知識的說明,以及修復意見的提供。
Fortify SCA支持Java,JSP,ASP.NET,C#,VB.NET,C,C++,COBOL,ColdFusion,
Transact-SQL,PL/SQL,JavaScript/Ajax,Classic,ASP,VBScript,VB6,PHPjava,jsp多種語言,600多種風險類型,支持CWE/OWASP國際主流標準,交付形態為純軟件。
2、Checkmarx CxSuite
Checkmarx 是以色列的一家高科技軟件公司。它的產品CheckmarxCxSuite專門設計為識別、跟蹤和修復軟件源代碼上的技術和邏輯方面的安全風險。首創了以查詢語言定位代碼安全問題,其采用獨特的詞匯分析技術和CxQL專利查詢技術來掃描和分析源代碼中的安全漏洞和弱點。

Checkmarx CxSuite的掃描結果可以以靜態報表形式展示,也可以通過可以對軟件安全漏洞和質量缺陷在代碼的運行時的數據傳遞和調用圖跟蹤的代碼缺陷的全過程,同時還可以提供對安全漏洞和質量缺陷進行修復提供指導建議。也可以對結果進行審計,從而消除誤報。
Checkmarx CxSuite支持JAVA、ASP.NET(C#、VB.NET)、JavaScript、Jscript、C/C++、APEX等語言,500多種風險類型,支持CWE/OWASP國際主流標準,交付形態為純軟件。
3、360代碼衛士
360代碼衛士是360企業安全集團基于多年源代碼安全實踐經驗推出的新一代源代碼安全檢測解決方案,包括源代碼缺陷檢測、合規檢測、溯源檢測三大檢測功能,同時360代碼衛士還可實現軟件安全開發生命周期管理,與企業已有代碼版本管理系統、缺陷管理系統、構建工具等無縫對接,將源代碼檢測融入企業開發流程,實現軟件源代碼安全目標管理、自動化檢測、差距分析、Bug修復追蹤等功能,幫助企業以最小代價建立代碼安全保障體系并落地實施,構筑信息系統的“內建安全”。

代碼衛士目前支持Windows、Linux、Android、Apple iOS、IBM AIX等平臺上的代碼安全檢測,支持的編程語言涵蓋C/C++/C#/Objective-C/Java/JSP/JavaScript/PHP/Python/Cobol等主流語言。在軟件代碼缺陷檢測方面,代碼衛士支持24大類,700多個小類代碼安全缺陷的檢測,兼容國際CWE、ISO/IEC 24772、OWASP Top 10、SANS Top 25等標準和最佳實踐;在軟件編碼合規檢測方面,代碼衛士可支持US CERT C/C++/Java安全編碼規范的檢測,并可根據用戶需求進行靈活定制;在開源代碼溯源檢測方面,代碼衛士可支持80000多個開源代碼模塊識別,28000多個開源代碼漏洞的檢測。