我看了一系列的靜態代碼掃描或者叫靜態代碼分析工具后,總結對工具的看法:靜態代碼掃描工具,和編譯器的某些功能其實是很相似的,他們也需要詞法分析,語法分析,語意分析 ...但和編譯器不一樣的是他們可以自定義各種各樣的復雜的規則去對代碼進行分析。
以下將會列出的靜態代碼掃描工具,會由于實現方法,算法,分析的層次不同,功能上會差異很大。有的可以做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:
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/
注:以上鏈接列舉了大量相關工具