This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "Source Code Analysis Tools"

From OWASP
Jump to: navigation, search
(Alphabetized OSS tools. Dropped RATS - Fortify site now has no mention. Dropped RIPS; also 404. Added SonarQube. Dropped old TODO)
(Changed the description of Kiuwan and updated the link to the home page.)
 
(68 intermediate revisions by 21 users not shown)
Line 1: Line 1:
{{taggedDocument
+
[[Static_Code_Analysis | Source code analysis]] tools, also referred to as Static Application Security Testing (SAST) Tools, are designed to analyze source code and/or compiled versions of code to help find security flaws.  
| type=partialOld
 
}}
 
 
 
Source code analysis tools are designed to analyze source code and/or compiled version of code in order to help find security flaws. Ideally, such tools would automatically find security flaws with such a high degree of confidence that what's found is indeed a flaw. However, this is beyond the state of the art for many types of application security flaws. Thus, such tools frequently serve as aids for an analyst to help them zero in on security relevant portions of code so they can find flaws more efficiently, rather than a tool that just automatically finds flaws.
 
  
 
Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development life cycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful, especially when compared to finding vulnerabilities much later in the development cycle.
 
Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development life cycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful, especially when compared to finding vulnerabilities much later in the development cycle.
  
== Strengths and weaknesses ==
+
== Strengths and Weaknesses ==
  
 
=== Strengths ===
 
=== Strengths ===
  
* Scales well -- can be run on lots of software, and can be repeatedly (as with nightly builds)
+
* Scales well -- can be run on lots of software, and can be run repeatedly (as with nightly builds or continuous integration)
 
* Useful for things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, and so forth
 
* Useful for things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, and so forth
 
* Output is good for developers -- highlights the precise source files, line numbers, and even subsections of lines that are affected
 
* Output is good for developers -- highlights the precise source files, line numbers, and even subsections of lines that are affected
Line 17: Line 13:
 
=== Weaknesses ===
 
=== Weaknesses ===
  
* Many types of security vulnerabilities are very difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. Tools of this type are getting better, however.
+
* Many types of security vulnerabilities are difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. However, tools of this type are getting better.
 
* High numbers of false positives.
 
* High numbers of false positives.
 
* Frequently can't find configuration issues, since they are not represented in the code.
 
* Frequently can't find configuration issues, since they are not represented in the code.
Line 23: Line 19:
 
* Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.
 
* Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.
  
==Important selection criteria==
+
==Important Selection Criteria==
  
* Requirement: Must support your language, but not usually a key factor once it does.
+
* Requirement: Must support your programming language, but not usually a key factor once it does.
 
* Types of vulnerabilities it can detect (out of the [[OWASP Top Ten]]?) (plus more?)
 
* Types of vulnerabilities it can detect (out of the [[OWASP Top Ten]]?) (plus more?)
 +
* How accurate is it? False Positive/False Negative rates?
 +
** Does the tool have an OWASP [[Benchmark]] score?
 +
* Does it understand the libraries/frameworks you use?
 
* Does it require a fully buildable set of source?
 
* Does it require a fully buildable set of source?
 
* Can it run against binaries instead of source?
 
* Can it run against binaries instead of source?
 
* Can it be integrated into the developer's IDE?
 
* Can it be integrated into the developer's IDE?
 +
* How hard is it to setup/use?
 +
* Can it be run continuously and automatically?
 
* License cost for the tool. (Some are sold per user, per org, per app, per line of code analyzed. Consulting licenses are frequently different than end user licenses.)
 
* License cost for the tool. (Some are sold per user, per org, per app, per line of code analyzed. Consulting licenses are frequently different than end user licenses.)
  
 
==OWASP Tools Of This Type==
 
==OWASP Tools Of This Type==
  
 +
* [[OWASP SonarQube Project]]
 
* [http://www.owasp.org/index.php/Category:OWASP_Orizon_Project OWASP Orizon Project]
 
* [http://www.owasp.org/index.php/Category:OWASP_Orizon_Project OWASP Orizon Project]
 
* [[OWASP_LAPSE_Project | OWASP LAPSE Project]]
 
* [[OWASP_LAPSE_Project | OWASP LAPSE Project]]
Line 41: Line 43:
 
==Disclaimer==
 
==Disclaimer==
  
Disclaimer: The tools listed in the tables below are presented in alphabetical order. OWASP does not endorse any of the vendors or tools by listing them in the table below. We have made every effort to provide this information as accurately as possible. If you are the vendor of a tool below and think that this information is incomplete or incorrect, please send an e-mail to our mailing list and we will make every effort to correct this information.
+
Disclaimer: <b>The tools listed in the tables below are presented in alphabetical order. <i>OWASP does not endorse any of the vendors or tools by listing them in the table below.</i> We have made every effort to provide this information as accurately as possible. If you are the vendor of a tool below and think that this information is incomplete or incorrect, please send an e-mail to our mailing list and we will make every effort to correct this information.</b>
  
 
==Open Source or Free Tools Of This Type==
 
==Open Source or Free Tools Of This Type==
  
 +
* [https://wiki.openstack.org/wiki/Security/Projects/Bandit Bandit] - bandit is a comprehensive source vulnerability scanner for Python
 
* [http://brakemanscanner.org/ Brakeman] - Brakeman is an open source vulnerability scanner specifically designed for Ruby on Rails applications
 
* [http://brakemanscanner.org/ Brakeman] - Brakeman is an open source vulnerability scanner specifically designed for Ruby on Rails applications
* [http://rubygems.org/gems/codesake-dawn Codesake Dawn] - Codesake Dawn is an open source security source code analyzer designed for Sinatra, Padrino and Ruby on Rails applications. It can work also for non web application wrote in Ruby programming language
+
* [http://rubygems.org/gems/codesake-dawn Codesake Dawn] - Codesake Dawn is an open source security source code analyzer designed for Sinatra, Padrino for Ruby on Rails applications. It also works on non-web applications written in Ruby
* [http://findbugs.sourceforge.net/ FindBugs] - Find Bugs (including some security flaws) in Java Programs
+
* [https://discotek.ca/deepdive.xhtml Deep Dive] - Byte code analysis tool for discovering vulnerabilities in Java deployments (Ear, War, Jar).
 +
* [http://findbugs.sourceforge.net/ FindBugs] - (Legacy - NOT Maintained - Use SpotBugs (see below) instead) - Find bugs (including a few security flaws) in Java programs
 +
* [https://find-sec-bugs.github.io/ FindSecBugs] - A security specific plugin for SpotBugs that significantly improves SpotBugs's ability to find security vulnerabilities in Java programs. Works with the old FindBugs too,
 
* [http://www.dwheeler.com/flawfinder/ Flawfinder] Flawfinder - Scans C and C++
 
* [http://www.dwheeler.com/flawfinder/ Flawfinder] Flawfinder - Scans C and C++
* [http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx FxCop] (Microsoft) - FxCop is an application that analyzes managed code assemblies (code that targets the .NET Framework common language runtime) and reports information about the assemblies, such as possible design, localization, performance, and security improvements.
+
* [https://github.com/golangci/golangci-lint GolangCI-Lint] - A Go Linters aggregator - One of the Linters is [https://github.com/securego/gosec gosec (Go Security)], which is off by default but can easily be enabled.
* [https://www.bishopfox.com/resources/tools/google-hacking-diggity/attack-tools/ Google CodeSearchDiggity] - Uses Google Code Search to identifies vulnerabilities in open source code projects hosted by Google Code, MS CodePlex, SourceForge, Github, and more. The tool comes with over 130 default searches that identify SQL injection, cross-site scripting (XSS), insecure remote and local file includes, hard-coded passwords, and much more.  ''Essentially, Google CodeSearchDiggity provides a source code security analysis of nearly every single open source code project in existence – simultaneously.''  
+
* [https://www.bishopfox.com/resources/tools/google-hacking-diggity/attack-tools/ Google CodeSearchDiggity] - Uses Google Code Search to identifies vulnerabilities in open source code projects hosted by Google Code, MS CodePlex, SourceForge, Github, and more. The tool comes with over 130 default searches that identify SQL injection, cross-site scripting (XSS), insecure remote and local file includes, hard-coded passwords, and much more.  ''Essentially, Google CodeSearchDiggity provides a source code security analysis of nearly every single open source code project in existence – simultaneously.''
* [https://www.owasp.org/index.php/Category:OWASP_SWAAT_Project OWASP SWAAT Project] - Simplistic Beta Tool - Languages: Java, JSP, ASP .Net, and PHP
+
* [https://github.com/wireghoul/graudit/ Graudit] - Scans multiple languages for various security flaws.
 +
* [https://lgtm.com/help/lgtm/about-lgtm LGTM] - A free for open source static analysis service that automatically monitors commits to publicly accessible code in: Bitbucket Cloud, GitHub, or GitLab. Supports C/C++, C#, COBOL (in beta), Java, JavaScript/TypeScript, Python
 +
* [https://dotnet-security-guard.github.io/ .NET Security Guard] - Roslyn analyzers that aim to help security audits on .NET applications. It will find SQL injections, LDAP injections, XXE, cryptography weakness, XSS and more.
 +
* [https://github.com/FloeDesignTechnologies/phpcs-security-audit phpcs-security-audit] - phpcs-security-audit is a set of PHP_CodeSniffer rules that finds flaws or weaknesses related to security in PHP and its popular CMS or frameworks.  It currently has core PHP rules as well as Drupal 7 specific rules.
 
* [http://pmd.sourceforge.net/ PMD] - PMD scans Java source code and looks for potential code problems (this is a code quality tool that does not focus on security issues)
 
* [http://pmd.sourceforge.net/ PMD] - PMD scans Java source code and looks for potential code problems (this is a code quality tool that does not focus on security issues)
* [http://msdn.microsoft.com/en-us/library/ms933794.aspx PreFast] (Microsoft) - PREfast is a static analysis tool that identifies defects in C/C++ programs
+
* [http://msdn.microsoft.com/en-us/library/ms933794.aspx PreFast] (Microsoft) - PREfast is a static analysis tool that identifies defects in C/C++ programs. Last update 2006.
* [http://http://www.sonarqube.org/ SonarQube] - Scans source code for more than 20 languages for Bugs, Vulnerabilities, and Code Smells
+
* [https://github.com/designsecurity/progpilot Progpilot] - Progpilot is a static analyzer tool for PHP that detects security vulnerabilities such as XSS and SQL Injection.
* [http://sourceforge.net/projects/visualcodegrepp/ VCG] - Scans C/C++, Java, C# and PL/SQL for security issues and for comments which may indicate defective code. The config files can be used to carry out additional checks for banned functions or functions which commonly cause security issues.
+
* [https://pumascan.com/ Puma Scan] - Puma Scan is a .NET C# open source static source code analyzer that runs as an IDE plugin for Visual Studio and via MSBuild in CI pipelines.
 +
* [https://pyre-check.org/ Pyre] - A performant type-checker for Python 3, that also has [https://pyre-check.org/docs/static-analysis.html limited security/data flow analysis] capabilities.
 +
* [http://rips-scanner.sourceforge.net/ RIPS] - RIPS Open Source is a static source code analyzer for vulnerabilities in PHP web applications. Please see notes on the sourceforge.net site.
 +
* [https://discotek.ca/sinktank.xhtml Sink Tank] - Byte code static code analyzer for performing source/sink (taint) analysis.
 +
* [http://www.sonarqube.org/ SonarQube] - Scans source code for more than 20 languages for Bugs, Vulnerabilities, and Code Smells. SonarQube IDE plugins for Eclipse, Visual Studio, and IntelliJ provided by [http://www.sonarlint.org/ SonarLint].
 +
* [https://spotbugs.github.io/ SpotBugs] - This is the active fork replacement for FindBugs, which is not maintained anymore.
 +
* [http://sourceforge.net/projects/visualcodegrepp/ VisualCodeGrepper (VCG)] - Scans C/C++, C#, VB, PHP, Java, and PL/SQL for security issues and for comments which may indicate defective code. The config files can be used to carry out additional checks for banned functions or functions which commonly cause security issues.
 +
 
 +
[https://docs.gitlab.com/ee/user/application_security/sast/index.html#supported-languages-and-frameworks GitLab has lashed a free SAST tool for a bunch of different languages natively into GitLab. So you might be able to use that, or at least identify a free SAST tool for the language you need from that list].
 +
 
 +
An even broader list of free static analysis tools (not just for security) for lots of different languages is here called: [https://endler.dev/awesome-static-analysis/ Awesome Static Analysis]
  
 
==Commercial Tools Of This Type==
 
==Commercial Tools Of This Type==
 
+
* [https://www.ptsecurity.com/ww-en/products/ai/ Application Inspector] (Positive Technologies) - combines SAST, DAST, IAST, SCA, configuration analysis and other technologies, incl. unique abstract interpretation; has capability to generate test queries (exploits) to verify detected vulnerabilities during SAST analysis; Supported languages include: Java, C#, PHP, JavaScript, Objective C, VB.Net, PL/SQL, T-SQL, and others.
* [https://buguroo.com/products/bugblast-next-gen-appsec-platform/bugscout-sca bugScout] (Buguroo Offensive Security)
+
* [https://www.ibm.com/us-en/marketplace/application-security-on-cloud Application Security on Cloud] (IBM) - Provides SAST, DAST and mobile security testing as well as OpenSource library known vulnerability detection as a cloud service.
** Latest generation source code analysis tool bugScout detects source code vulnerabilities and makes possible an accurate management of the life cycles due to its easy use.
+
* [https://www.ibm.com/us-en/marketplace/ibm-appscan-source AppScan Source] (IBM)
* [http://www.contrastsecurity.com/ Contrast from Contrast Security]
+
* [https://www.blueclosure.com BlueClosure BC Detect] (BlueClosure) - Analyzes client-side JavaScript.
** Contrast is not a static analysis tool like these others. It instruments the running application and provides code level results, but doesn't actually perform static analysis. It monitors the code that is actually running.
+
* [https://bugscout.io/en/ bugScout] (Nalbatech, Formally Buguroo)
* [http://www-01.ibm.com/software/rational/products/appscan/source/ IBM Security AppScan Source Edition] (formerly Ounce)
+
* [https://www.castsoftware.com/products/application-intelligence-platform CAST AIP] (CAST) Performs static and architectural analysis to identify numerous types of security issues. Supports over 30 languages. [https://www.castsoftware.com/solutions/application-security/cwe#SupportedSecurityStandards AIP's security specific coverage is here].
* [http://www.klocwork.com/products/insight.asp Insight] (KlocWork)
+
* [https://www.codacy.com/ Codacy] Offers security patterns for languages such as Python, Ruby, Scala, Java, JavaScript and more. Integrates with tools such as Brakeman, Bandit, FindBugs, and others. (free for open source projects)
 +
* [https://www.grammatech.com/products/codesonar CodeSonar] tool that supports C, C++, Java and C# and maps against the OWASP top 10 vulnerabilities.
 +
* [https://www.contrastsecurity.com/interactive-application-security-testing-iast Contrast Assess] (Contrast Security) - Contrast performs code security without actually doing static analysis. Contrast does Interactive Application Security Testing (IAST), correlating runtime code & data analysis. It provides code level results without actually relying on static analysis.
 +
* [http://www.coverity.com/products/code-advisor/ Coverity Code Advisor] (Synopsys)
 +
* [https://www.checkmarx.com/technology/static-code-analysis-sca/ CxSAST] (Checkmarx)
 +
* [https://www.microfocus.com/en-us/products/static-code-analysis-sast Fortify] (Micro Focus, Formally HP)
 +
* [https://hdivsecurity.com/interactive-application-security-testing-iast Hdiv Detection] (Hdiv Security) - Hdiv performs code security without actually doing static analysis. Hdiv does Interactive Application Security Testing (IAST), correlating runtime code & data analysis. It provides code-level results without actually relying on static analysis.
 +
* [http://www.juliasoft.com/solutions Julia] (JuliaSoft) - SaaS Java static analysis
 +
* [http://www.klocwork.com/capabilities/static-code-analysis KlocWork] (KlocWork)
 +
* [https://www.kiuwan.com/ Kiuwan] (a division of Idera, Inc.) provides an application security testing and analytics platform – including SAST and SCA solutions – that reduces risk and improves change management and DevOps processes.
 
* [http://www.parasoft.com/jsp/capabilities/static_analysis.jsp?itemId=547 Parasoft Test] (Parasoft)
 
* [http://www.parasoft.com/jsp/capabilities/static_analysis.jsp?itemId=547 Parasoft Test] (Parasoft)
* [http://www.pitbullsoftware.net/pitbull-scc-en/ Pitbull Source Code Control] (Pitbull SCC)
+
* [https://pitss.com/products/pitss-con/ PITSS.CON] (PITTS)
**Software application designed to solve efficiently application source code control with the appropriate compiled files to ensure integrity prior to placing it into production. Providing added value,allows the analysis of source code to identify if it has a malware that affects the normal functioning of the application.
+
* [https://www.ptsecurity.com/ww-en/products/ai/ PT Application Inspector] combines SAST, DAST, IAST, SCA, configuration analysis and other technologies, incl. unique abstract interpretation for high accuracy rate with minimum false positives; has a unique capability to generate special test queries (exploits) to verify detected vulnerabilities during SAST analysis; integrates with CI/CD, VCS, etc. PT AI helps to easily understand, verify, and fix flaws; has a simple UI; is highly automated and easy to use. Supported languages are Java, C#, PHP, JavaScript, Objective C, VB.Net, PL/SQL, T-SQL, and others.
* [http://www.quotium.com/prod/security.php Seeker] ([http://www.quotium.com/ Quotium])
+
* [https://pumascanpro.com/ Puma Scan Professional] - A .NET C# static source code analyzer that runs as a Visual Studio IDE extension, Azure DevOps extension, and Command Line (CLI) executable.
** Seeker performs code security without actually doing static analysis. Seeker does Interactive Application Security Testing (IAST), correlating runtime code & data analysis with simulated attacks. It provides code level results without actually relying on static analysis.
+
* [http://www.viva64.com/en/ PVS-Studio] (PVS-Studio) - For C/C++, C#
 +
* [https://www.reshiftsecurity.com reshift] - A CI/CD tool that uses static code analysis to scan for vulnerabilities and uses machine learning to give a prediction on false positives. Supports Java with future support for NodeJS and JavaScript planned for sometime in 2019.
 +
* [https://www.ripstech.com/ RIPS Code Analysis] (RIPS Technologies) - A SAST solution specialized for Java and PHP that detects unknown security vulnerabilities and code quality issues.
 +
* [https://www.synopsys.com/software-integrity/resources/datasheets/secureassist.html SecureAssist] (Synopsys) - Scans code for insecure coding and configurations automatically as an IDE plugin for Eclipse, IntelliJ, and Visual Studio etc. Supports (Java, .NET, PHP, and JavaScript)
 +
* [https://www.whitehatsec.com/products/static-application-security-testing/ Sentinel Source] (Whitehat)
 +
* [https://www.synopsys.com/software-integrity/products/interactive-application-security-testing.html Seeker] (Synopsys) Seeker performs code security without actually doing static analysis. Seeker does Interactive Application Security Testing (IAST), correlating runtime code & data analysis with simulated attacks. It provides code level results without actually relying on static analysis.
 +
* [https://smartdecscanner.com/ SmartDec Scanner] (SmartDec) Capable of identifying vulnerabilities and backdoors (undocumented features) in over 30 programming languages by analyzing source code or executables, without requiring debug info.
 
* [http://www.sourcepatrol.co.uk/ Source Patrol] (Pentest)
 
* [http://www.sourcepatrol.co.uk/ Source Patrol] (Pentest)
* [http://www.armorize.com/codesecure/ Static Source Code Analysis with CodeSecure™] (Armorize Technologies)
+
* [https://www.defensecode.com/thunderscan.php Thunderscan SAST] (DefenseCode)
* [http://www.kiuwan.com  Kiuwan - SaaS Software Quality & Security Analysis] ([http://www.optimyth.com Optimyth])
+
* [http://www.veracode.com/products/binary-static-analysis-sast Veracode Static Analysis] (Veracode)
* [http://www.checkmarx.com/technology/static-code-analysis-sca/ Static Code Analysis] (Checkmarx)
+
* [http://www.xanitizer.net Xanitizer] - Scans Java and Scala for security vulnerabilities, mainly via taint analysis. Free for academic and open source projects (see [https://www.rigs-it.com/xanitizer-pricing/]).
* [http://www.coverity.com/products/security-advisor.html Security Advisor] (Coverity)
 
* [http://www.viva64.com/en/ PVS-Studio] (PVS-Studio)
 
* [https://www.fortify.com/products/hpfssc/source-code-analyzer.html Source Code Analysis] (HP/Fortify)
 
* [http://www.veracode.com/ Veracode] (Veracode)
 
* [https://www.whitehatsec.com/offerings.html  Sentinel Source solution] (Whitehat)
 
  
 
==More info==
 
==More info==
Line 84: Line 112:
 
* [[Appendix_A:_Testing_Tools | Appendix A: Testing Tools]]
 
* [[Appendix_A:_Testing_Tools | Appendix A: Testing Tools]]
 
* [http://samate.nist.gov/index.php/Source_Code_Security_Analyzers.html NIST's list of Source Code Security Analysis Tools]
 
* [http://samate.nist.gov/index.php/Source_Code_Security_Analyzers.html NIST's list of Source Code Security Analysis Tools]
 +
* [[:Category:Vulnerability_Scanning_Tools | DAST Tools]] - Similar info on Dynamic Application Security Testing (DAST) Tools
 +
* [[Free for Open Source Application Security Tools]] - This page lists the Commercial Source Code Analysis Tools (SAST) we know of that are free for Open Source
  
 
[[Category:OWASP .NET Project]]
 
[[Category:OWASP .NET Project]]
 
[[Category:SAMM-CR-2]]
 
[[Category:SAMM-CR-2]]
 
__NOTOC__
 
__NOTOC__

Latest revision as of 02:51, 20 December 2019

Source code analysis tools, also referred to as Static Application Security Testing (SAST) Tools, are designed to analyze source code and/or compiled versions of code to help find security flaws.

Some tools are starting to move into the IDE. For the types of problems that can be detected during the software development phase itself, this is a powerful phase within the development life cycle to employ such tools, as it provides immediate feedback to the developer on issues they might be introducing into the code during code development itself. This immediate feedback is very useful, especially when compared to finding vulnerabilities much later in the development cycle.

Strengths and Weaknesses

Strengths

  • Scales well -- can be run on lots of software, and can be run repeatedly (as with nightly builds or continuous integration)
  • Useful for things that such tools can automatically find with high confidence, such as buffer overflows, SQL Injection Flaws, and so forth
  • Output is good for developers -- highlights the precise source files, line numbers, and even subsections of lines that are affected

Weaknesses

  • Many types of security vulnerabilities are difficult to find automatically, such as authentication problems, access control issues, insecure use of cryptography, etc. The current state of the art only allows such tools to automatically find a relatively small percentage of application security flaws. However, tools of this type are getting better.
  • High numbers of false positives.
  • Frequently can't find configuration issues, since they are not represented in the code.
  • Difficult to 'prove' that an identified security issue is an actual vulnerability.
  • Many of these tools have difficulty analyzing code that can't be compiled. Analysts frequently can't compile code because they don't have the right libraries, all the compilation instructions, all the code, etc.

Important Selection Criteria

  • Requirement: Must support your programming language, but not usually a key factor once it does.
  • Types of vulnerabilities it can detect (out of the OWASP Top Ten?) (plus more?)
  • How accurate is it? False Positive/False Negative rates?
    • Does the tool have an OWASP Benchmark score?
  • Does it understand the libraries/frameworks you use?
  • Does it require a fully buildable set of source?
  • Can it run against binaries instead of source?
  • Can it be integrated into the developer's IDE?
  • How hard is it to setup/use?
  • Can it be run continuously and automatically?
  • License cost for the tool. (Some are sold per user, per org, per app, per line of code analyzed. Consulting licenses are frequently different than end user licenses.)

OWASP Tools Of This Type

Disclaimer

Disclaimer: The tools listed in the tables below are presented in alphabetical order. OWASP does not endorse any of the vendors or tools by listing them in the table below. We have made every effort to provide this information as accurately as possible. If you are the vendor of a tool below and think that this information is incomplete or incorrect, please send an e-mail to our mailing list and we will make every effort to correct this information.

Open Source or Free Tools Of This Type

  • Bandit - bandit is a comprehensive source vulnerability scanner for Python
  • Brakeman - Brakeman is an open source vulnerability scanner specifically designed for Ruby on Rails applications
  • Codesake Dawn - Codesake Dawn is an open source security source code analyzer designed for Sinatra, Padrino for Ruby on Rails applications. It also works on non-web applications written in Ruby
  • Deep Dive - Byte code analysis tool for discovering vulnerabilities in Java deployments (Ear, War, Jar).
  • FindBugs - (Legacy - NOT Maintained - Use SpotBugs (see below) instead) - Find bugs (including a few security flaws) in Java programs
  • FindSecBugs - A security specific plugin for SpotBugs that significantly improves SpotBugs's ability to find security vulnerabilities in Java programs. Works with the old FindBugs too,
  • Flawfinder Flawfinder - Scans C and C++
  • GolangCI-Lint - A Go Linters aggregator - One of the Linters is gosec (Go Security), which is off by default but can easily be enabled.
  • Google CodeSearchDiggity - Uses Google Code Search to identifies vulnerabilities in open source code projects hosted by Google Code, MS CodePlex, SourceForge, Github, and more. The tool comes with over 130 default searches that identify SQL injection, cross-site scripting (XSS), insecure remote and local file includes, hard-coded passwords, and much more. Essentially, Google CodeSearchDiggity provides a source code security analysis of nearly every single open source code project in existence – simultaneously.
  • Graudit - Scans multiple languages for various security flaws.
  • LGTM - A free for open source static analysis service that automatically monitors commits to publicly accessible code in: Bitbucket Cloud, GitHub, or GitLab. Supports C/C++, C#, COBOL (in beta), Java, JavaScript/TypeScript, Python
  • .NET Security Guard - Roslyn analyzers that aim to help security audits on .NET applications. It will find SQL injections, LDAP injections, XXE, cryptography weakness, XSS and more.
  • phpcs-security-audit - phpcs-security-audit is a set of PHP_CodeSniffer rules that finds flaws or weaknesses related to security in PHP and its popular CMS or frameworks. It currently has core PHP rules as well as Drupal 7 specific rules.
  • PMD - PMD scans Java source code and looks for potential code problems (this is a code quality tool that does not focus on security issues)
  • PreFast (Microsoft) - PREfast is a static analysis tool that identifies defects in C/C++ programs. Last update 2006.
  • Progpilot - Progpilot is a static analyzer tool for PHP that detects security vulnerabilities such as XSS and SQL Injection.
  • Puma Scan - Puma Scan is a .NET C# open source static source code analyzer that runs as an IDE plugin for Visual Studio and via MSBuild in CI pipelines.
  • Pyre - A performant type-checker for Python 3, that also has limited security/data flow analysis capabilities.
  • RIPS - RIPS Open Source is a static source code analyzer for vulnerabilities in PHP web applications. Please see notes on the sourceforge.net site.
  • Sink Tank - Byte code static code analyzer for performing source/sink (taint) analysis.
  • SonarQube - Scans source code for more than 20 languages for Bugs, Vulnerabilities, and Code Smells. SonarQube IDE plugins for Eclipse, Visual Studio, and IntelliJ provided by SonarLint.
  • SpotBugs - This is the active fork replacement for FindBugs, which is not maintained anymore.
  • VisualCodeGrepper (VCG) - Scans C/C++, C#, VB, PHP, Java, and PL/SQL for security issues and for comments which may indicate defective code. The config files can be used to carry out additional checks for banned functions or functions which commonly cause security issues.

GitLab has lashed a free SAST tool for a bunch of different languages natively into GitLab. So you might be able to use that, or at least identify a free SAST tool for the language you need from that list.

An even broader list of free static analysis tools (not just for security) for lots of different languages is here called: Awesome Static Analysis

Commercial Tools Of This Type

  • Application Inspector (Positive Technologies) - combines SAST, DAST, IAST, SCA, configuration analysis and other technologies, incl. unique abstract interpretation; has capability to generate test queries (exploits) to verify detected vulnerabilities during SAST analysis; Supported languages include: Java, C#, PHP, JavaScript, Objective C, VB.Net, PL/SQL, T-SQL, and others.
  • Application Security on Cloud (IBM) - Provides SAST, DAST and mobile security testing as well as OpenSource library known vulnerability detection as a cloud service.
  • AppScan Source (IBM)
  • BlueClosure BC Detect (BlueClosure) - Analyzes client-side JavaScript.
  • bugScout (Nalbatech, Formally Buguroo)
  • CAST AIP (CAST) Performs static and architectural analysis to identify numerous types of security issues. Supports over 30 languages. AIP's security specific coverage is here.
  • Codacy Offers security patterns for languages such as Python, Ruby, Scala, Java, JavaScript and more. Integrates with tools such as Brakeman, Bandit, FindBugs, and others. (free for open source projects)
  • CodeSonar tool that supports C, C++, Java and C# and maps against the OWASP top 10 vulnerabilities.
  • Contrast Assess (Contrast Security) - Contrast performs code security without actually doing static analysis. Contrast does Interactive Application Security Testing (IAST), correlating runtime code & data analysis. It provides code level results without actually relying on static analysis.
  • Coverity Code Advisor (Synopsys)
  • CxSAST (Checkmarx)
  • Fortify (Micro Focus, Formally HP)
  • Hdiv Detection (Hdiv Security) - Hdiv performs code security without actually doing static analysis. Hdiv does Interactive Application Security Testing (IAST), correlating runtime code & data analysis. It provides code-level results without actually relying on static analysis.
  • Julia (JuliaSoft) - SaaS Java static analysis
  • KlocWork (KlocWork)
  • Kiuwan (a division of Idera, Inc.) provides an application security testing and analytics platform – including SAST and SCA solutions – that reduces risk and improves change management and DevOps processes.
  • Parasoft Test (Parasoft)
  • PITSS.CON (PITTS)
  • PT Application Inspector combines SAST, DAST, IAST, SCA, configuration analysis and other technologies, incl. unique abstract interpretation for high accuracy rate with minimum false positives; has a unique capability to generate special test queries (exploits) to verify detected vulnerabilities during SAST analysis; integrates with CI/CD, VCS, etc. PT AI helps to easily understand, verify, and fix flaws; has a simple UI; is highly automated and easy to use. Supported languages are Java, C#, PHP, JavaScript, Objective C, VB.Net, PL/SQL, T-SQL, and others.
  • Puma Scan Professional - A .NET C# static source code analyzer that runs as a Visual Studio IDE extension, Azure DevOps extension, and Command Line (CLI) executable.
  • PVS-Studio (PVS-Studio) - For C/C++, C#
  • reshift - A CI/CD tool that uses static code analysis to scan for vulnerabilities and uses machine learning to give a prediction on false positives. Supports Java with future support for NodeJS and JavaScript planned for sometime in 2019.
  • RIPS Code Analysis (RIPS Technologies) - A SAST solution specialized for Java and PHP that detects unknown security vulnerabilities and code quality issues.
  • SecureAssist (Synopsys) - Scans code for insecure coding and configurations automatically as an IDE plugin for Eclipse, IntelliJ, and Visual Studio etc. Supports (Java, .NET, PHP, and JavaScript)
  • Sentinel Source (Whitehat)
  • Seeker (Synopsys) Seeker performs code security without actually doing static analysis. Seeker does Interactive Application Security Testing (IAST), correlating runtime code & data analysis with simulated attacks. It provides code level results without actually relying on static analysis.
  • SmartDec Scanner (SmartDec) Capable of identifying vulnerabilities and backdoors (undocumented features) in over 30 programming languages by analyzing source code or executables, without requiring debug info.
  • Source Patrol (Pentest)
  • Thunderscan SAST (DefenseCode)
  • Veracode Static Analysis (Veracode)
  • Xanitizer - Scans Java and Scala for security vulnerabilities, mainly via taint analysis. Free for academic and open source projects (see [1]).

More info