[hyddd安全性测试笔记2]浅淡静态代码分析工具

简介:

本帖hyddd原创,转载请标明,谢谢8>~

这两天看关于静态代码扫描的东东,一开始没什么头绪,搜了一下发现N多东西,整理一下写成文档,由于资料太多,还有很多东西没写上去。

静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。”。

我看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可以自定义各种各样的复杂的规则去对代码进行分析。

以下将会列出的静态代码扫描工具,会由于实现方法,算法,分析的层次不同,功能上会差异很大。有的可以做SQL注入的检查,有的则不能(当然,由于时间问题还没有对规则进行研究,但要检查复杂的代码安全漏洞,是需要更高深分析算法的,所以有的东西应该不是设置规则库就可以检查到的,但在安全方面的检查,一定程度上也是可以通过设置规则进行检查的)

  以下我在网上搜集到的分析工具,我整理了以下挑了一些出来,这里只是一部分,另外一些可以到参考链接上看一下:

工具名 静态扫描语言 开源/付费 厂商 介绍 主页网址
ounec5.0 VB.Net、C、C++和C#,
还支持Java。
付  费 Ounce Labs \ http://www.ouncelabs.com/
Coverity Prevent C/C++,C#,JAVA 付费 Coverity 还有其他辅助工具:
1.Coverity Thread Analyzer for Java
2.Coverity Software Readiness Manager for Java
3.Coverity Architecture Analyzer
http://www.coverity.com/index.html
@stake SmartRisk™ 
Analyzer
C/C++,Java 付费 Symantec 
Corporation
@stake SmartRisk™ Analyzer harnesses the power of 
static analysis of binary executables (C, C++, and Java) to 
identify, categorize and prioritize security。
注:在Symantec没有搜到此产品?!
http://www.symantec.com/business/index.jsp
Rational Purify  C/C++,Java 付费 IBM Provides memory leak and memory corruption detection for 
Windows,Runtime?!
http://www-01.ibm.com/software/awdtools/purify/
PREfix \ \ microsoft 微软用的静态分析工具,但暂时没有找到下载,
现在好像在考虑发布中!
\
Jtext Java 付费 parasoft 同时还有其他静态分析代码的产品,如:C++Test...
详细请查询官网
http://www.parasoft.com/jsp/cn/support.jsp
flawfinder C/C++ 开源 \ 用Python编写的c、c++程序安全审核工具,
可以检查潜在的安全风险。
http://www.dwheeler.com/flawfinder/
Static Code 
Analyzer
C/C++,C#,JAVA 付费 Fortify \ http://www.fortify.com/
Klocwork Insight C/C++ ,Java  付费 Klocwork \ http://www.klocwork.com/products/insight.asp
PolySpace 
Client/Server
C/C++、Ada语言 付费 MathWorks \ http://www.mathworks.cn/
rats C/C++, Python,
 Perl, 
PHP代码进行安全审核的工具
开源 \ \ http://www.fortify.com/security-resources/rats.jsp
LAPSE Java 开源 \ LAPSE stands for a Lightweight Analysis for Program 
Security in Eclipse. LAPSE is designed to help with 
the task of auditing Java J2EE applications for common 
types of security vulnerabilities found in Web applications.
 LAPSE was developed by Benjamin Livshits as part of the 
Griffin Software Security Project. 
http://www.owasp.org/index.php/Category:OWASP_LAPSE_Project
Fluid java 开源 \ We have explored properties including:

    * race conditions and locking policies,
    * unique references and other programmer-significant
 aliasing properties,
    * effects,
    * appropriate typing,
    * realtime threading policies, and
    * single-threading policies.
http://www.fluid.cs.cmu.edu:8080/Fluid
Splint C 开源 University of 
Virginia,
Department of 
Computer
 Science
静态检测针对C语言的安全工具和漏洞检测。 http://www.splint.org/
cqual C/C++ 开源 马里兰大学 轻量级的静态扫描器,在类Linux系统下运行。 http://www.cs.umd.edu/~jfoster/cqual/
MOPS C 开源 berkeley大学 MOPS is a tool for finding security bugs in C programs 
and for verifying conformance to rules of defensive programming
http://www.cs.berkeley.edu/~daw/mops/
BOON  C 开源 berkeley大学 BOON is a tool for automatically finding buffer overrun 
vulnerabilities in C source code. Buffer overruns are one
 of the most common types of security holes, and we hope 
that BOON will enable software developers and code auditors
 to improve the quality of security-critical programs. 
http://www.cs.berkeley.edu/~daw/boon/
BLAST C 开源 The BLAST 
2.0 Team
BLAST is a software model checker for C programs.  
The goal of BLAST is to be able to check that software
 satisfies behavioral properties of the interfaces it uses.
 BLAST uses counterexample-driven automatic abstraction
 refinement to construct an abstract model which is model
 checked for safety properties. The abstraction is constructed
 on-the-fly, and only to the required precision.
http://mtc.epfl.ch/software-tools/blast/
SpikeWAMP Php 开源 \ for analyzing PHP programs http://developer.spikesource.com/wiki/index.php/SpikeWAMP
Pixy Php 开源 \ Finding XSS and SQLI vulnerabilities http://pixybox.seclab.tuwien.ac.at/pixy/
Mike Java 开源 \ Java source code security scanner built on top of Orizon.
 They are connected to OWASP.
http://milk.sourceforge.net/download.html
Smatch C 开源 \ \ http://smatch.sourceforge.net/
Oink C++ 开源 \ C++ Static Analysis Tools http://www.cubewano.org/oink
Frama-C C 开源 \ static analyzers for the C language. http://frama-c.cea.fr/
RTL-check \ 开源 \ RTL-check is an extensible and powerful abstract interpretation
 framework for static analysis of programs from a safety and
 security perspective
http://rtlcheck.sourceforge.net/
PMD Java 开源 \ PMD scans Java source code and looks for potential problems like:

    * Possible bugs - empty try/catch/finally/
switch statements
    * Dead code - unused local variables, parameters
 and private methods
    * Suboptimal code - wasteful String/StringBuffer usage
    * Overcomplicated expressions - unnecessary if statements,
 for loops that could be while loops
    * Duplicate code - copied/pasted code means copied/pasted bugs
http://pmd.sourceforge.net/
FindBugs Java 开源 马里兰大学 uses static analysis to look for bugs in Java code.
注意:提供Eclipse插件。
http://findbugs.sourceforge.net/
ITS4 C\C++ 开源 \ Cigital developed ITS4 to help automate source code
 review for security.
http://www.cigital.com/its4/
QJ-Pro Java 开源 \ QJ-Pro is a comprehensive software inspection tool targeted 
towards the software developer.

QJ-Pro checks:
    * conformance to coding standards,
    * misuse of the Java language,
    * best practice conformence
    * code structure and
    * potential bugs at the earliest stages of development.
注意:提供各种IDE插件!
http://qjpro.sourceforge.net/
Jint Java 开源 \ Jlint will check your Java code and find bugs, inconsistencies
 and synchronization problems by doing data flow analysis and
 building the lock graph.
http://artho.com/jlint/
Hammurapi Java 开源 \ code review system captures coding best practices and delivers
 them to developers' fingertips. It also generates consolidated
 reports for lead developers, architects, and managers to
 monitor codebase quality and evolution.
http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/index.html
DoctorJ Java 开源 \ Among what it detects:

    * misspelled words
    * parameter and exception names:
          o missing
          o misordered
          o misspelled
    * Javadoc tags:
          o invalid
          o misordered
          o missing expected arguments
          o invalid arguments
          o missing descriptions
    * undocumented classes, methods, fields, 
parameters
http://www.incava.org/projects/java/doctorj/index.html
Dependency Finder Java 开源 \ Dependency Finder is a suite of tools for analyzing
compiled Java code. At the core is a powerful dependency
analysis application that extracts dependency graphs and
mines them for useful information. This application comes
in many forms for your ease of use, including command-line 
tools, a Swing-based application, a web application ready
to be deployed in an application server, and a set of Ant
tasks.
http://depfind.sourceforge.net/
Checkstyle Java 开源 \ Checkstyle is a development tool to help programmers
 write Java code that adheres to a coding standard.
 It automates the process of checking Java code to spare
 humans of this boring (but important) task. This makes
 it ideal for projects that want to enforce a coding standard. 
注意:提供多种IDE的插件。
http://checkstyle.sourceforge.net/
Classycle Java 开源 \ Classycle's Analyser analyses the static class and package
 dependencies in Java applications or libraries.
http://classycle.sourceforge.net/
JDepend  Java 开源 \ JDepend traverses Java class file directories and generates
 design quality metrics for each Java package. 
JDepend allows you to automatically measure the quality
 of a design in terms of its extensibility, reusability,
and maintainability to manage package dependencies effectively. 
http://www.clarkware.com/software/JDepend.html
JCSC Java 开源 \ JCSC is a powerful tool to check source code against a highly
 definable coding standard and potential bad code.
http://jcsc.sourceforge.net/

......

以下是直接提供代码检查/相关帮助的厂商:

Fortify:  http://www.fortify.com/

ASPECT:  http://www.aspectsecurity.com/

OWASP:    http://www.owasp.org/index.php/Main_Page

securitycompass: http://www.securitycompass.com/resources.shtml


参考资料:

1. http://www.dwheeler.com/flawfinder/

2. http://www.java2s.com/Product/Java/Byte-Source-Code/Source-Analysis-Diagram.htm 

3. http://www.softwarelist.cn/?fsid=53&cid=530&cpath=ABAN 

4. http://www.hacker.com.cn/article/view_14804.html

5. http://www.cs.cmu.edu/~aldrich/courses/654/tools/

注:以上链接列举了大量相关工具


 


本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/archive/2008/12/16/1356310.html,如需转载请自行联系原作者。

目录
相关文章
|
9月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
745 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
9月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
720 6
|
10月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1994 10
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1571 23
|
11月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
10月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1287 0
|
12月前
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
3735 5
|
11月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。