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多个开源代码漏洞的检测。