Qualitative & Quantitative Evaluation of Static Code Analysis Tools



Similar documents
SWAMP: Removing the Barriers to Adopting and Improving Software Assurance Capabilities

Application Code Development Standards

Software security assessment based on static analysis

SWAMP The Software Assurance Market Place

How To Improve Your Software

Code Dx: Visual analytics for triage of source code vulnerabilities

Source Code Review Using Static Analysis Tools

Software Code Quality Checking (SCQC) No Clearance for This Secret: Information Assurance is MORE Than Security

Comparing the Effectiveness of Penetration Testing and Static Code Analysis

Development Environment and Tools for Java. Brian Hughes IBM

The FDA Forensics Lab, New Tools and Capabilities

TOOL EVALUATION REPORT: FORTIFY

HP Fortify application security

Enterprise Software Security Strategies

Building Assurance Into Software Development Life- Cycle (SDLC)

Business Process Testing Accelerator for PeopleSoft Applications

POLAR IT SERVICES. Business Intelligence Project Methodology

Streamlining Application Vulnerability Management: Communication Between Development and Security Teams

Development Testing for Agile Environments

IBM Customer Experience Suite and Predictive Analytics

Axivion Bauhaus Suite Technical Factsheet

Using the Juliet Test Suite to compare Static Security Scanners

User Guide Monday, April 27, 2015

Minimizing code defects to improve software quality and lower development costs.

1.2 Tools support for management of testing & tests

Enabling Data Quality

Hybrid Analysis Mapping: Making Security and Development Tools Play Nice Together. Dan Cornell. CTO, Denim

Strategies to Meet Reporting and Data Sharing Requirements in Corrections

Software Security Assessment Tools Review

Integrating Web Application Security into the IT Curriculum

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Development Methodologies

Introduction to Static Analysis for Assurance

HP Fortify Software Security Center

ETICS - A Clean Approach to Open Source Cloud Software

Application Vulnerability Management

A Test Suite for Basic CWE Effectiveness. Paul E. Black.

Effective Software Verification for Medical Devices

Static Analysis Techniques for Testing Application Security. OWASP San Antonio January 31 st, 2008

Application Lifecycle Management Software Research. Executive Summary - July 2008

Static Analysis for Software Verification. Leon Moonen

Contents of This Paper

Practical Applications of Software Security Model Chris Nagel

HP Application Security Center

HP Fortify Application Security Lucas v. Stockhausen PreSales Manager HP Fortify EMEA Enterprise Security

Static Analysis Techniques for Testing Application Security. OWASP Austin March 25 th, 2008

Managing Your Application Security Program with the ThreadFix Ecosystem!! Dan

The Avocent Data Center Planner Real-World Insight for Smarter Data Center Management

META DATA QUALITY CONTROL ARCHITECTURE IN DATA WAREHOUSING

A white paper analysis from Orasi Software. Enterprise Security. Attacking the problems of application and mobile security

Abstract. Introduction. Summary

White Paper. How Streaming Data Analytics Enables Real-Time Decisions

Source Code Analysis for Security. Lu Zhao HP Fortify

Learning objectives for today s session

L'automazione dei test come elemento chiave delle pratiche DevOps

Java Software Quality Tools and techniques

Enabling Storage Services in Virtualized Cloud Environments

Harness Your SAP Data with User-Driven Dashboards

Common Errors in C/C++ Code and Static Analysis

Test-driving static analysis tools in search of C code vulnerabilities

Решения HP по информационной безопасности

IBM Software A Journey to Adaptive MDM

Project 100. How To Save 100 Million Dollars. Really!

PRODUCT INFORMATION. Know Your Business Better.

Customer Experience Audit

Black Box versus White Box: Different App Testing Strategies John B. Dickson, CISSP

CRN# CPET Cloud Computing: Technologies & Enterprise IT Strategies

Hybrid Analysis Mapping:! Making Security and Development Tools Play Nice Together!! Dan Cornell! CTO, Denim

Protecting Database Centric Web Services against SQL/XPath Injection Attacks

Levels of Software Testing. Functional Testing

Five Fundamental Data Quality Practices

Data Governance Implementation

CA NSM System Monitoring Option for OpenVMS r3.2

IoT Potential Risks and Challenges

Senem Kumova Metin & Ilker Korkmaz 1

Addressing IT governance, risk and compliance (GRC) to meet regulatory requirements and reduce operational risk in financial services organizations

Software Code Quality Checking (SCQC) No Clearance for This Secret: Software Assurance is MORE Than Security

BUSINESS INTELLIGENCE COMPETENCY CENTER (BICC) HELPING ORGANIZATIONS EFFECTIVELY MANAGE ENTERPRISE DATA

Application Security Testing How to find software vulnerabilities before you ship or procure code

IBM WebSphere E i r c c V e V r e b r ee e k

PUB (MPI) 1-62 Reference: Gartner Scorecard

Architectural Risk Analysis for Android Applications

Streamline Processes and Gain Business Insights in the Cloud

WebSphere Business Monitor V6.2 KPI history and prediction lab

Billing Code: P DEPARTMENT OF HEALTH AND HUMAN SERVICES. Agency for Toxic Substances and Disease Registry. [30Day ]

THE NEXT-GENERATION PRIVATE CAPITAL DATA PLATFORM

Trusted Experts in Business Analytics BUSINESS ANALYTICS FOR DEMAND PLANNING: HOW TO FORECAST STORE/SKU DEMAND

Software Qualimetry at Schneider Electric: a field background

DATA GOVERNANCE AT UPMC. A Summary of UPMC s Data Governance Program Foundation, Roles, and Services

IBM Software Group. IBM WebSphere Process Integration Technical Overview

Automatic vs. Manual Code Analysis

Ten steps to better requirements management.

Measuring your most important Asset: Human Capital

Towards a Resource Elasticity Benchmark for Cloud Environments. Presented By: Aleksey Charapko, Priyanka D H, Kevin Harper, Vivek Madesi

Software infrastructure for Java development projects

Top 4 Common Mistakes Made by IT Managers in Financial Services

Application Test Management and Quality Assurance

Data Governance Implementation

Pivotal CRM for Small and Mid-Sized Business. Big Benefits. Small Price.

Ubuntu and Hadoop: the perfect match

Transcription:

CYBER SECURITY DIVISION 2014 R&D SHOWCASE AND TECHNICAL WORKSHOP Qualitative & Quantitative Evaluation of Static Code Analysis Tools Indiana University-Purdue University Indianapolis Dr. James H. Hill (hillj@cs.iupui.edu) December 16-18, 2014

Project Overview Static code analysis (SCA) is a methodology of detecting errors in program based on the review of code marked by the analyzer in areas where potential errors may occur SCA tools aid developers in quickly identifying errors through automation memory leaks dead code code conformance etc.

Existing Static Code Analysis Tools Given the vast number of SCA tools, it can be hard identifying what SCA tools are best for the job! It is also a costly & timeconsuming process evaluating the quality of each tool HP Fortify Source Code Analyzer AdaControl Pylint Axivion Bauhaus Suite Astrée Parasoft C/C++test IBM Rational AppScan Source Edition cpplint Klocwork Insight Imagix 4D Clang SofCheck Inspector MALPAS PVS-Studio CodeRush CodeSonar Cppcheck Visual Studio Team System CodeIt.Right Protecode DMS Software Reengineering Toolkit FxCop FindBugs Kalistick Apparat PMD Our objective is to evaluate the quality of static code analysis tool, and understand how to best apply them to a given piece of source code

Current Status Acquired and deployed three commercial SCA tools into the System Integration Lab at IUPUI Developed an extensible framework for automating the evaluation of SCA tools (SCATE) Exploring methodology and reporting features Granularity Aggregating multiple tools Permutation heat map

Granularity Controls the required accuracy for the tool

Granularity Controls the required accuracy for the tool CWE835_Infinite_Loop do_01.c 10 void CWE835_Infinite_Loop do_01_bad() { 11 int i = 0; 12 13 /* FLAW: Infinite Loop - do..while() with no break point */ 14 do 15 { 16 printintline(i); 17 i = (i + 1) % 256; 18 } while(i >= 0); 19 }

Granularity Controls the required accuracy for the tool CWE835_Infinite_Loop do_01.c 10 void CWE835_Infinite_Loop do_01_bad() { 11 int i = 0; 12 13 /* FLAW: Infinite Loop - do..while() with no break point */ 14 do 15 { 16 printintline(i); 17 i = (i + 1) % 256; 18 } while(i >= 0); 19 } Flaw

Granularity Controls the required accuracy for the tool CWE835_Infinite_Loop do_01.c 10 void CWE835_Infinite_Loop do_01_bad() { 11 int i = 0; 12 13 /* FLAW: Infinite Loop - do..while() with no break point */ 14 do 15 { 16 printintline(i); 17 i = (i + 1) % 256; 18 } while(i >= 0); 19 } Flaw FILE The tool can find the flaw anywhere in the file FUNCTION The tool can find the flaw anywhere in the function LINE The tool must find the flaw on line 14

Granularity Controls the required accuracy for the tool Granularity Detected Flaws File 25,511 Function 3,565 Line 2,215 Increasing granularity reduces the quality of a Tool

Using Multiple Tools Organizations will often run multiple tools to reduce risk

Using Multiple Tools Organizations will often run multiple tools to reduce risk 5,155 206,433 12,235 9,174 25,511 111,397 Tool 1 Tool 2 Tool 3

Using Multiple Tools Organizations will often run multiple tools to reduce risk 5,155 206,433 12,235 9,174 25,511 111,397 Tool 1 Tool 2 Tool 3 Aggregate 31,329 327,004

Using Multiple Tools Organizations will often run multiple tools to reduce risk 5,155 206,433 12,235 9,174 25,511 111,397 Tool 1 Tool 2 Tool 3 11,572 Duplicate s Aggregate 31,329 327,004

Using Multiple Tools Organizations will often run multiple tools to reduce risk 5,155 206,433 12,235 9,174 25,511 111,397 Tool 1 Tool 2 Tool 3 11,572 Duplicate s Not all s are unique s increase but at the cost of many more s (reduced precision) Aggregate 31,329 327,004

Permutation Heat Map Permutations use Data and/or Control flows to obscurify a Flaw to test SCA tools

Permutation Heat Map Permutations use Data and/or Control flows to obscurify a Flaw to test SCA tools Permutation 01: void bad (void) { // FLAW: } Permutation 02: void bad (void) { if (1) { // FLAW: } } Permutation 03: void bad (void) { if (5==5) { // FLAW: } }

Permutation Heat Map

Permutation Heat Map CWE 415 (Double Free) 15: 50 % Flaws Found 16: 100% Flaws Found

Permutation Heat Map CWE 415 (Double Free) 15: 50 % Flaws Found 16: 100% Flaws Found Permutation 15: void bad (void) { switch(6) { case (6): // FLAW: break } } Permutation 16: void bad (void) { while (1) { // FLAW: break } }

Permutation Heat Map CWE 415 (Double Free) 15: 50 % Flaws Found 16: 100% Flaws Found Permutation 15: void bad (void) { switch(6) { case (6): // FLAW: break } } Permutation 16: void bad (void) { while (1) { // FLAW: break } } The type of permutation can affect a tool s quality

Future Work SWAMP Integration Tool behavioral model Predict tool quality against source code Streamline analysis into a cloud-based testing as a service product

Future Work SWAMP Integration Tool behavioral model Predict tool quality against source code Streamline analysis into a cloud-based testing as a service product Tool Results The SWAMP has multiple SCA tools integrated into their environment and can provide tool results SCATE

Future Work SWAMP Integration Tool behavioral model Predict tool quality against source code Streamline analysis into a cloud-based testing as a service product Evaluation Results Metadata Tool Model Code Metrics

Future Work SWAMP Integration Tool behavioral model Predict tool quality against source code Streamline analysis into a cloud-based testing as a service product Tool Model Source Code Quality Prediction

Future Work SWAMP Integration Tool behavioral model Predict tool quality against source code Streamline analysis into a cloud-based testing as a service product

Questions 4/30/2015 CYBER SECURITY DIVISION 2014 R&D SHOWCASE AND TECHNICAL WORKSHOP 25