SlideShare a Scribd company logo
1 of 49
Download to read offline
Static Analysis Techniques for
 Testing Application Security

              Houston TechFest

              January 24, 2009

      Dan Cornell – dan@denimgroup.com
Agenda
•   What is Application Security?
•   What is Static Analysis?
     – Static versus Dynamic
     – Overview
•   Different Approaches
•   Examples of Static Analysis Tools
     –   FindBugs (Java)
     –   PMD (Java)
     –   FxCop (.NET)
     –   XSSDetect (.NET)
•   Process Implications
•   Questions
What is Application Security?
•   Ensuring that applications behave as expected under the entire
    range of possible inputs
•   Really a subset of software correctness/QA – however…
•   More typically focused on what an application is NOT supposed
    to do rather than what it IS supposed to do
Software Implementation – Perfect World

            Actual
            Functionality      Intended
                               I t d d
                               Functionality




                                               4
Software Implementation – Real World

       Actual
       A t l                      Intended
                                  I t d d
       Functionality              Functionality




                       Built
                                  Bugs
                       Features



 Unintended
 And Undocumented
             y
 Functionality



                                                  5
How Not To Do It
•   Q: What are you all doing to address application security
    concerns in your organization?
•   A: We bought “XYZ Scanner”
•   Q: Okay… Are you actually using it?
•   A: We ran some scans
•   Q: And how did that go?
•   A: Oh we found some stuff…
•   Q: How did you address those issues?
•   A: I think we sent the report to the developers. Not sure what
    they did with them. I guess I ought to check in on that…



                                                                     6
What is Static Analysis?
•   Analyzing software artifacts in order to gain information about
    the software
     – Source code
     – Binaries
     – Configuration files
•   Analyzing soft are
    Anal ing software “at rest”
•   Also called “white box testing” and “source code review”

•   PLEASE NOTE: Unless otherwise discussed, Static Analysis
    will refer to Static Analysis being performed by an automated
    tool
Dynamic Analysis
•   Examining running software to see how it behaves under
    different stimuli
    – Analyzing request and response patterns
    – Checking remotely-detectable configuration settings
Which to Use?
•   Static Analysis
     – Advantages
     – Disadvantages
•   Dynamic Analysis
     – Advantages
     – Di d
       Disadvantages
               t
•   Actually Making a Decision
Static Analysis Advantages
•   Have access to the actual instructions the software will be
    executing
     – No need to guess or interpret behavior
     – Full access to all of the software’s possible behaviors
Static Analysis Disadvantages
•   Require access to source code or at least binary code
     – Typically need access to enough software artifacts to execute a build
•   Typically require proficiency running software builds
•   Will not find issues related to operational deployment
    environments
Dynamic Analysis Advantages
•   Only requires a running system to perform a test
•   No requirement to have access to source code or binary code
•   No need to understand how to write software or execute builds
     – Tools tend to be more “fire and forget”
•   Tests a specific, operational deployment
             p      , p             p y
     – Can find infrastructure, configuration and patch errors that Static Analysis
       tools will miss
Dynamic Analysis Disadvantages
•   Limited scope of what can be found
     – Application must be footprinted to find the test area
     – That can cause areas to be missed
     – You can only test what you have found
•   No access to actual instructions being executed
     – T l is exercising th application
       Tool i      i i the     li ti
     – Pattern matching on requests and responses
Dynamic, Static and Manual Testing
Actually Making a Decision
•   No access to source or binaries? Dynamic

•   Not a software developer, don’t understand software builds?
    Dynamic

•   Performing a “pen test” or other test of an operational
    environment? Dynamic

•   None of the previous problems? Static

•   Really
    R ll want t d th j b right? B th ( d then some…)
            t to do the job i ht? Both (and th     )
Actually Making a Decision
•   In our experience:
•   Information Security practitioners are more comfortable with
    the Dynamic Analysis tools
     – Analog to scanners such as Nessus or ISS
•   Software Development practitioners are comfortable with both
    Static and Dynamic Analysis tools, but can get the most value
    out of Static Analysis tools
     – More complete view of the software
     – I t
       Integration with IDEs is a plus
              ti    ith IDE i      l
•   Understand that there are things that tools can find, and things
    tools can’t find. Running a tool doesn’t make you “secure”
Overview
•   General Approach
•   Source or Binary?
General Approach
Source or Binary?
•   Access to source typically provides more information to the
    analysis tool than only having access to the binaries
•   Advantages of binaries:
     – More commonly available
     – If you dynamically generate binaries based on database schema, etc
Source or Binary – C/C++
•   “Vanilla” C can be reasonably easy to decompile, but…
•   C++ and C compiled with compiler optimizations can be
    challenging to decompile sensibly
Source or Binary – Java or .NET
•   These environments are pretty easy to decompile
    – “Source” recovery is typically pretty easy
•   Most .NET tools actually use binaries and disassemble them
    into IL
    – Thus they only have to have one parser to process IL rather than one for
      every .NET language
             NET
Different Approaches
•   Increasing the scope of analysis increases the capability of the
    tool to find potential errors
•   As scope increases, tools must either effectively prioritize
    analysis options or risk having excessive runtimes
Scope and Capability

    Scope of Analysis versus Capability of Tool
5

4

3

2

1

0
    Line    Function   Module     Program    System
Line Focus
•   Like using “grep” to identify banned or suspect function calls
•   This was the approach taken by early tools
•   Good way to make a quick pass for potential vulnerabilities
     – Good for targeting manual review
•   Challenging to use on large codebases
            g g              g
•   The more “signatures” that are included, the higher the noise to
    signal ratio will be
     – Just looking for specific functions
                  g      p
Line Focus Example
•   Rule: gets() is BAD

• Input:
my_str = gets();

•   Result: Flag this line for review

•   Pretty b i b t b tt than thi
    P tt basic, but better th nothing
Line Focus: C/C++
•   Known “bad” APIs:
    –   strcpy()
    –   gets()
    –   scanf()
    –   sprintf()
Line Focus: Java
•   SQL injection
    – [Connection].createStatement()
•   XSS
    – <%=
•   More general parameter tampering:
    –   [HttpServletRequest].getParameter()
    –   [HttpServletRequest].getParameterValue()
    –   [HttpServletRequest].getCookies()
    –   [HttpServletRequest].getHeader()
        [HttpServletRequest] getHeader()
Line Focus: .NET
•   SQL Injection:
     – SqlCommand
•   XSS
     – <%=
•   More general parameter tampering
     – Request[
     – Request.Cookies[
     – Request.Headers[
Two (Crappy) Scripts I Wrote
•   dotnetcheck.sh and javacheck.sh
•   Implement the checks I mentioned above
Function and Module Focus
•   At this point the tool needs to be acting as a compiler
     – Parse into tokens, determine lexical structure
•   This allows for much more sophisticated analysis
     – State machines
     – Control flow
     – D t flow
       Data fl
Function and Module Focus
     p
Example
•   Rule: Memory should only be freed once

•   Input:
void f()
{
   my_mem = malloc(256);
              ll (256)
   free(my_mem);
   free(my_mem);
}



•   Result:
     – my_mem is marked as allocated
     – my_mem is marked as freed
     – Flag the second call to free(my_mem) as an issue
Program and System Focus
•   Expanding the scope of inquiry allow tools to find more and
    more subtle flaws
•   Also helps avoid false positives
Dataflow and Taint Tracking
•   Track dataflows through the system
     – Sources and Sinks
•   Attach taint flags to inputs
     –   Web parameters and cookies
     –   Data read from files
     –   Environment variables
     –   Data read from databases
     –   Data read from web services
•   What type of taint?
     –   From the network
     –   From a configuration setting
     –   From a database
     –   And so on
•   Identify “cleaning” functions
Taint Sources and Sinks for a
      pp
Web Application
Taint Sources and Sinks for an
               y
SUID Root Binary
Program and System Focus
     p
Example
•   Rule:
    – User-supplied data should never be included in a SQL query without being
      properly escaped
            l        d
Program and System Focus
Example (continued)
     p (          )
•   Input:
public void doGet(HttpServletReqest req, HttpServlet Response resp)
{
    String user = req.getParameter(“username”);
    logStuff(user, “my_page”);
    //    Render out HTML…
}

private logStuff(String user, String location)
{
    Connection con = getConnection();
    Statement stmt = con createStatement();
                     con.createStatement();
    String sql
          = “INSERT INTO log (user, location) VALUES (‘” + user + “’, ‘” + location + “’”
    stmt.executeUpdate(sql);
}
Program and System Focus
Example (continued)
     p (          )
•   Result:
     – Input from getParameter() call is marks user variable as tained (Source)
     – Flow of data is traced into the logStuff() method
     – sql variable is also marked as tainted when it is concatenated with
       username parameter
     – executeUpdate() is marked as a security issue because it received tainted
       data (Sink)
Examples of Static Analysis Tools
•   FindBugs (Java)
•   PMD (Java)
•   FxCop (.NET)
•   XSSDetect (.NET)
FindBugs (Java)
•   Java-based static analysis tool
•   LGPL-licensed
•   Originally developed by Dr. Bill
    Pugh from the University of
    Maryland
•   Intended to find correctness
    issues, also identifies some
    security issues

findbugs.sourceforge.net
PMD (Java)
• Java-based static analysis tool
• BSD-licensed
• Lead developers are David Dixon-
  Peugh and Tom Copeland
• Intended to find correctness and
  complexity issues, also finds some
  security issues
pmd.sourceforge.net
p             g
FxCop (.NET)
• Microsoft-provided tool for .NET static analysis
• Freely available
• Enforces coding standards (variable naming, etc)
• Similar to FindBugs in its security capabilities
www.gotdotnet.com/Team/FxCop/
www gotdotnet com/Team/FxCop/
XSSDetect (.NET)
•   Microsoft-provided tool for .NET static analysis
•   Freely available (BETA!)
•   Performs data flow analysis to identify Cross Site Scripting
    (XSS) defects

blogs.msdn.com/ace_team/archive/2007/10/22/xssdetect-public-beta-now-available.aspx



•   Based on the Microsoft Research Phoenix framework
     – For software analysis and optimization
     – research.microsoft.com/phoenix/
Limitations
•   Static Analysis tools are a starting point for code review. Not a
    complete solution.
•   Static Analysis tools (like all automated tools) do not understand
    what your application is supposed to do
     – Out of the box rules are for general classes of security defects
     – Applications can still have issues with authorization and other trust issues
     – Only cover 50% of security defects (Dr. Gary McGraw)
•   False positives can be time consuming to address
•   Solutions?
     – Custom rules can help to add some application specific context
Process Implications
•   Static Analysis tools can provide tremendous benefits
•   It is easier to start a new project using a tool than to impose one
    on an existing system
•   I have found that using a Static Analysis tool while developing
    helps to improve my coding skills
     – Immediate feedback when mistakes are made
     – Learn more about language and platform internals
Process Implications: Questions
•   Who is going to run the tool?
•   When is the tool going to be run?
•   What will be done with the results?

•   Until you can answer these questions you should not assume
                                  questions,
    that a Static Analysis tool will help you improve security
OWASP Open Review Project
•   Provide automated static analysis services to Open Source
    projects
•   Also manual source code review
•   Based on technology made available from Fortify Software
•   Language:
        g g
     – PHP and Java supported online
     – Other platforms (.NET, C/C++) supported by contributors who are also
       Fortify SCA licensees
•   Currently working with:
     – Many OWASP Tools projects
     – Moodle
     – A tiS
         AntiSamy.NET
                  NET
•   http://www.owasp.org/index.php/Category:OWASP_Open_Review_Project
Additional Resources
•   Book: Secure Programming With Static Analysis (Brian Chess
    and Jacob West)
•   Blog: Microsoft Code Analysis and Code Metrics Team Blog
    – blogs.msdn.com/fxcop/
•   Website: FindBugs publications page
    – findbugs.sourceforge.net/publications.html
•   Various commercial vendors…
Questions
Dan Cornell - dan@denimgroup.com

(210) 572-4400

Website: www denimgroup com
         www.denimgroup.com
Blog: denimgroup.typepad.com

More Related Content

What's hot

Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Javaamaankhan
 
OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)TzahiArabov
 
Testing concepts ppt
Testing concepts pptTesting concepts ppt
Testing concepts pptRathna Priya
 
Manual testing interview questions by infotech
Manual testing interview questions by infotech Manual testing interview questions by infotech
Manual testing interview questions by infotech suhasreddy1
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | EdurekaEdureka!
 
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...Simplilearn
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To JenkinsKnoldus Inc.
 
What is sanity testing
What is sanity testingWhat is sanity testing
What is sanity testingpooja deshmukh
 
Kotlin Language powerpoint show file
Kotlin Language powerpoint show fileKotlin Language powerpoint show file
Kotlin Language powerpoint show fileSaurabh Tripathi
 
Function of software quality assurance lecture 2
Function of software quality assurance lecture 2Function of software quality assurance lecture 2
Function of software quality assurance lecture 2Abdul Basit
 
What Is Functional Testing?
What Is Functional Testing?What Is Functional Testing?
What Is Functional Testing?QA InfoTech
 
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building BlocksOCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building Blocksİbrahim Kürce
 

What's hot (20)

Sonarqube
SonarqubeSonarqube
Sonarqube
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
 
OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)OWASP Top 10 2021 Presentation (Jul 2022)
OWASP Top 10 2021 Presentation (Jul 2022)
 
Firebase PPT
Firebase PPTFirebase PPT
Firebase PPT
 
Testing concepts ppt
Testing concepts pptTesting concepts ppt
Testing concepts ppt
 
Presentation1
Presentation1Presentation1
Presentation1
 
Junit
JunitJunit
Junit
 
Code coverage
Code coverageCode coverage
Code coverage
 
Identifier
IdentifierIdentifier
Identifier
 
Manual testing interview questions by infotech
Manual testing interview questions by infotech Manual testing interview questions by infotech
Manual testing interview questions by infotech
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | Edureka
 
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
What is sanity testing
What is sanity testingWhat is sanity testing
What is sanity testing
 
Introduction to selenium
Introduction to seleniumIntroduction to selenium
Introduction to selenium
 
Kotlin Language powerpoint show file
Kotlin Language powerpoint show fileKotlin Language powerpoint show file
Kotlin Language powerpoint show file
 
Function of software quality assurance lecture 2
Function of software quality assurance lecture 2Function of software quality assurance lecture 2
Function of software quality assurance lecture 2
 
What Is Functional Testing?
What Is Functional Testing?What Is Functional Testing?
What Is Functional Testing?
 
Burp suite
Burp suiteBurp suite
Burp suite
 
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building BlocksOCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
 

Viewers also liked

Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...
Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...
Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...RootedCON
 
FaultHunter workshop (SourceMeter for SonarQube plugin module)
FaultHunter workshop (SourceMeter for SonarQube plugin module)FaultHunter workshop (SourceMeter for SonarQube plugin module)
FaultHunter workshop (SourceMeter for SonarQube plugin module)FrontEndART
 
Verification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationVerification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationRogue Wave Software
 
Complement Software Testing with Static Analysis
Complement Software Testing with Static AnalysisComplement Software Testing with Static Analysis
Complement Software Testing with Static AnalysisJohn Ruberto
 
Static Code Analysis and AutoLint
Static Code Analysis and AutoLintStatic Code Analysis and AutoLint
Static Code Analysis and AutoLintLeander Hasty
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniqueAndrey Karpov
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing ToolsDr Ganesh Iyer
 
Software testing tools
Software testing toolsSoftware testing tools
Software testing toolsGaurav Paliwal
 
Types of test tools
Types of test toolsTypes of test tools
Types of test toolsVaibhav Dash
 
Iseb, ISTQB Static Testing
Iseb, ISTQB Static TestingIseb, ISTQB Static Testing
Iseb, ISTQB Static Testingonsoftwaretest
 
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind Spot
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind SpotStatic Analysis Tools and Frameworks: Overcoming a Dangerous Blind Spot
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind SpotCigital
 
Software Testing Fundamentals
Software Testing FundamentalsSoftware Testing Fundamentals
Software Testing FundamentalsChankey Pathak
 
Static testing vs dynamic testing
Static testing vs dynamic testingStatic testing vs dynamic testing
Static testing vs dynamic testingpooja deshmukh
 

Viewers also liked (17)

Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...
Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...
Joxean Koret - Interactive Static Analysis Tools for Vulnerability Discovery ...
 
FaultHunter workshop (SourceMeter for SonarQube plugin module)
FaultHunter workshop (SourceMeter for SonarQube plugin module)FaultHunter workshop (SourceMeter for SonarQube plugin module)
FaultHunter workshop (SourceMeter for SonarQube plugin module)
 
Verification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationVerification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integration
 
Complement Software Testing with Static Analysis
Complement Software Testing with Static AnalysisComplement Software Testing with Static Analysis
Complement Software Testing with Static Analysis
 
Static Code Analysis and AutoLint
Static Code Analysis and AutoLintStatic Code Analysis and AutoLint
Static Code Analysis and AutoLint
 
Static code analysis
Static code analysisStatic code analysis
Static code analysis
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis technique
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing Tools
 
Software testing tools
Software testing toolsSoftware testing tools
Software testing tools
 
Types of test tools
Types of test toolsTypes of test tools
Types of test tools
 
Testing Tools
Testing ToolsTesting Tools
Testing Tools
 
Iseb, ISTQB Static Testing
Iseb, ISTQB Static TestingIseb, ISTQB Static Testing
Iseb, ISTQB Static Testing
 
Software testing
Software testing   Software testing
Software testing
 
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind Spot
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind SpotStatic Analysis Tools and Frameworks: Overcoming a Dangerous Blind Spot
Static Analysis Tools and Frameworks: Overcoming a Dangerous Blind Spot
 
Software Testing Fundamentals
Software Testing FundamentalsSoftware Testing Fundamentals
Software Testing Fundamentals
 
Software testing tools
Software testing toolsSoftware testing tools
Software testing tools
 
Static testing vs dynamic testing
Static testing vs dynamic testingStatic testing vs dynamic testing
Static testing vs dynamic testing
 

Similar to Static Analysis Techniques For Testing Application Security - Houston Tech Fest

Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static AnalysisConSanFrancisco123
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsGanesh Samarthyam
 
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should Have
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should HaveAppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should Have
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should HaveRobert Grupe, CSSLP CISSP PE PMP
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for TestersAdam Goucher
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcampahkjsdcsadc
 
Agile Software Development with Intrinsic Quality
Agile Software Development with Intrinsic QualityAgile Software Development with Intrinsic Quality
Agile Software Development with Intrinsic QualityDemetrius Nunes
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft HelpsSteve Lange
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08kingsfleet
 
Working With People Adl Uni
Working With People Adl UniWorking With People Adl Uni
Working With People Adl UniMatthew Landauer
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"LogeekNightUkraine
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияSQALab
 
Test Pyramid vs Roi
Test Pyramid vs Roi Test Pyramid vs Roi
Test Pyramid vs Roi COMAQA.BY
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis Engineering Software Lab
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPIoannis Baltopoulos
 
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareUsing Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareLastline, Inc.
 

Similar to Static Analysis Techniques For Testing Application Security - Houston Tech Fest (20)

Secure Programming With Static Analysis
Secure Programming With Static AnalysisSecure Programming With Static Analysis
Secure Programming With Static Analysis
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
 
Test
TestTest
Test
 
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should Have
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should HaveAppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should Have
AppSec Threat Modeling with 5 Agile Design Diagrams Every Project Should Have
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcamp
 
Agile Software Development with Intrinsic Quality
Agile Software Development with Intrinsic QualityAgile Software Development with Intrinsic Quality
Agile Software Development with Intrinsic Quality
 
PHX Session #1: Development Best Practices And How Microsoft Helps
PHX Session #1: Development  Best  Practices And  How  Microsoft  HelpsPHX Session #1: Development  Best  Practices And  How  Microsoft  Helps
PHX Session #1: Development Best Practices And How Microsoft Helps
 
How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08How the JDeveloper team test JDeveloper at UKOUG'08
How the JDeveloper team test JDeveloper at UKOUG'08
 
Working With People Adl Uni
Working With People Adl UniWorking With People Adl Uni
Working With People Adl Uni
 
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScaleGDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
GDD Japan 2009 - Designing OpenSocial Apps For Speed and Scale
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
 
Getting It Done
Getting It DoneGetting It Done
Getting It Done
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
 
Test Pyramid vs Roi
Test Pyramid vs Roi Test Pyramid vs Roi
Test Pyramid vs Roi
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
 
Continuous integration at CartoDB March '16
Continuous integration at CartoDB March '16Continuous integration at CartoDB March '16
Continuous integration at CartoDB March '16
 
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in FirmwareUsing Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
Using Static Binary Analysis To Find Vulnerabilities And Backdoors in Firmware
 

More from Denim Group

Long-term Impact of Log4J
Long-term Impact of Log4JLong-term Impact of Log4J
Long-term Impact of Log4JDenim Group
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Denim Group
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Denim Group
 
Optimizing Security Velocity in Your DevSecOps Pipeline at Scale
Optimizing Security Velocity in Your DevSecOps Pipeline at ScaleOptimizing Security Velocity in Your DevSecOps Pipeline at Scale
Optimizing Security Velocity in Your DevSecOps Pipeline at ScaleDenim Group
 
Application Asset Management with ThreadFix
 Application Asset Management with ThreadFix Application Asset Management with ThreadFix
Application Asset Management with ThreadFixDenim Group
 
OWASP San Antonio Meeting 10/2/20
OWASP San Antonio Meeting 10/2/20OWASP San Antonio Meeting 10/2/20
OWASP San Antonio Meeting 10/2/20Denim Group
 
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA Program
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA ProgramAppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA Program
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA ProgramDenim Group
 
Using Collaboration to Make Application Vulnerability Management a Team Sport
Using Collaboration to Make Application Vulnerability Management a Team SportUsing Collaboration to Make Application Vulnerability Management a Team Sport
Using Collaboration to Make Application Vulnerability Management a Team SportDenim Group
 
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...Denim Group
 
Security Champions: Pushing Security Expertise to the Edges of Your Organization
Security Champions: Pushing Security Expertise to the Edges of Your OrganizationSecurity Champions: Pushing Security Expertise to the Edges of Your Organization
Security Champions: Pushing Security Expertise to the Edges of Your OrganizationDenim Group
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsDenim Group
 
An Updated Take: Threat Modeling for IoT Systems
An Updated Take: Threat Modeling for IoT SystemsAn Updated Take: Threat Modeling for IoT Systems
An Updated Take: Threat Modeling for IoT SystemsDenim Group
 
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...Denim Group
 
A New View of Your Application Security Program with Snyk and ThreadFix
A New View of Your Application Security Program with Snyk and ThreadFixA New View of Your Application Security Program with Snyk and ThreadFix
A New View of Your Application Security Program with Snyk and ThreadFixDenim Group
 
Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Denim Group
 
AppSec in a World of Digital Transformation
AppSec in a World of Digital TransformationAppSec in a World of Digital Transformation
AppSec in a World of Digital TransformationDenim Group
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsDenim Group
 
Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Denim Group
 
AppSec in a World of Digital Transformation
 AppSec in a World of Digital Transformation AppSec in a World of Digital Transformation
AppSec in a World of Digital TransformationDenim Group
 
Enumerating Enterprise Attack Surface
Enumerating Enterprise Attack SurfaceEnumerating Enterprise Attack Surface
Enumerating Enterprise Attack SurfaceDenim Group
 

More from Denim Group (20)

Long-term Impact of Log4J
Long-term Impact of Log4JLong-term Impact of Log4J
Long-term Impact of Log4J
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
 
Optimizing Security Velocity in Your DevSecOps Pipeline at Scale
Optimizing Security Velocity in Your DevSecOps Pipeline at ScaleOptimizing Security Velocity in Your DevSecOps Pipeline at Scale
Optimizing Security Velocity in Your DevSecOps Pipeline at Scale
 
Application Asset Management with ThreadFix
 Application Asset Management with ThreadFix Application Asset Management with ThreadFix
Application Asset Management with ThreadFix
 
OWASP San Antonio Meeting 10/2/20
OWASP San Antonio Meeting 10/2/20OWASP San Antonio Meeting 10/2/20
OWASP San Antonio Meeting 10/2/20
 
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA Program
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA ProgramAppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA Program
AppSec Fast and Slow: Your DevSecOps CI/CD Pipeline Isn’t an SSA Program
 
Using Collaboration to Make Application Vulnerability Management a Team Sport
Using Collaboration to Make Application Vulnerability Management a Team SportUsing Collaboration to Make Application Vulnerability Management a Team Sport
Using Collaboration to Make Application Vulnerability Management a Team Sport
 
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...
Managing Penetration Testing Programs and Vulnerability Time to Live with Thr...
 
Security Champions: Pushing Security Expertise to the Edges of Your Organization
Security Champions: Pushing Security Expertise to the Edges of Your OrganizationSecurity Champions: Pushing Security Expertise to the Edges of Your Organization
Security Champions: Pushing Security Expertise to the Edges of Your Organization
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native Applications
 
An Updated Take: Threat Modeling for IoT Systems
An Updated Take: Threat Modeling for IoT SystemsAn Updated Take: Threat Modeling for IoT Systems
An Updated Take: Threat Modeling for IoT Systems
 
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...
Continuous Authority to Operate (ATO) with ThreadFix – Bringing Commercial In...
 
A New View of Your Application Security Program with Snyk and ThreadFix
A New View of Your Application Security Program with Snyk and ThreadFixA New View of Your Application Security Program with Snyk and ThreadFix
A New View of Your Application Security Program with Snyk and ThreadFix
 
Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...
 
AppSec in a World of Digital Transformation
AppSec in a World of Digital TransformationAppSec in a World of Digital Transformation
AppSec in a World of Digital Transformation
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native Applications
 
Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...Enabling Developers in Your Application Security Program With Coverity and Th...
Enabling Developers in Your Application Security Program With Coverity and Th...
 
AppSec in a World of Digital Transformation
 AppSec in a World of Digital Transformation AppSec in a World of Digital Transformation
AppSec in a World of Digital Transformation
 
Enumerating Enterprise Attack Surface
Enumerating Enterprise Attack SurfaceEnumerating Enterprise Attack Surface
Enumerating Enterprise Attack Surface
 

Recently uploaded

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 

Static Analysis Techniques For Testing Application Security - Houston Tech Fest

  • 1. Static Analysis Techniques for Testing Application Security Houston TechFest January 24, 2009 Dan Cornell – dan@denimgroup.com
  • 2. Agenda • What is Application Security? • What is Static Analysis? – Static versus Dynamic – Overview • Different Approaches • Examples of Static Analysis Tools – FindBugs (Java) – PMD (Java) – FxCop (.NET) – XSSDetect (.NET) • Process Implications • Questions
  • 3. What is Application Security? • Ensuring that applications behave as expected under the entire range of possible inputs • Really a subset of software correctness/QA – however… • More typically focused on what an application is NOT supposed to do rather than what it IS supposed to do
  • 4. Software Implementation – Perfect World Actual Functionality Intended I t d d Functionality 4
  • 5. Software Implementation – Real World Actual A t l Intended I t d d Functionality Functionality Built Bugs Features Unintended And Undocumented y Functionality 5
  • 6. How Not To Do It • Q: What are you all doing to address application security concerns in your organization? • A: We bought “XYZ Scanner” • Q: Okay… Are you actually using it? • A: We ran some scans • Q: And how did that go? • A: Oh we found some stuff… • Q: How did you address those issues? • A: I think we sent the report to the developers. Not sure what they did with them. I guess I ought to check in on that… 6
  • 7. What is Static Analysis? • Analyzing software artifacts in order to gain information about the software – Source code – Binaries – Configuration files • Analyzing soft are Anal ing software “at rest” • Also called “white box testing” and “source code review” • PLEASE NOTE: Unless otherwise discussed, Static Analysis will refer to Static Analysis being performed by an automated tool
  • 8. Dynamic Analysis • Examining running software to see how it behaves under different stimuli – Analyzing request and response patterns – Checking remotely-detectable configuration settings
  • 9. Which to Use? • Static Analysis – Advantages – Disadvantages • Dynamic Analysis – Advantages – Di d Disadvantages t • Actually Making a Decision
  • 10. Static Analysis Advantages • Have access to the actual instructions the software will be executing – No need to guess or interpret behavior – Full access to all of the software’s possible behaviors
  • 11. Static Analysis Disadvantages • Require access to source code or at least binary code – Typically need access to enough software artifacts to execute a build • Typically require proficiency running software builds • Will not find issues related to operational deployment environments
  • 12. Dynamic Analysis Advantages • Only requires a running system to perform a test • No requirement to have access to source code or binary code • No need to understand how to write software or execute builds – Tools tend to be more “fire and forget” • Tests a specific, operational deployment p , p p y – Can find infrastructure, configuration and patch errors that Static Analysis tools will miss
  • 13. Dynamic Analysis Disadvantages • Limited scope of what can be found – Application must be footprinted to find the test area – That can cause areas to be missed – You can only test what you have found • No access to actual instructions being executed – T l is exercising th application Tool i i i the li ti – Pattern matching on requests and responses
  • 14. Dynamic, Static and Manual Testing
  • 15. Actually Making a Decision • No access to source or binaries? Dynamic • Not a software developer, don’t understand software builds? Dynamic • Performing a “pen test” or other test of an operational environment? Dynamic • None of the previous problems? Static • Really R ll want t d th j b right? B th ( d then some…) t to do the job i ht? Both (and th )
  • 16. Actually Making a Decision • In our experience: • Information Security practitioners are more comfortable with the Dynamic Analysis tools – Analog to scanners such as Nessus or ISS • Software Development practitioners are comfortable with both Static and Dynamic Analysis tools, but can get the most value out of Static Analysis tools – More complete view of the software – I t Integration with IDEs is a plus ti ith IDE i l • Understand that there are things that tools can find, and things tools can’t find. Running a tool doesn’t make you “secure”
  • 17. Overview • General Approach • Source or Binary?
  • 19. Source or Binary? • Access to source typically provides more information to the analysis tool than only having access to the binaries • Advantages of binaries: – More commonly available – If you dynamically generate binaries based on database schema, etc
  • 20. Source or Binary – C/C++ • “Vanilla” C can be reasonably easy to decompile, but… • C++ and C compiled with compiler optimizations can be challenging to decompile sensibly
  • 21. Source or Binary – Java or .NET • These environments are pretty easy to decompile – “Source” recovery is typically pretty easy • Most .NET tools actually use binaries and disassemble them into IL – Thus they only have to have one parser to process IL rather than one for every .NET language NET
  • 22. Different Approaches • Increasing the scope of analysis increases the capability of the tool to find potential errors • As scope increases, tools must either effectively prioritize analysis options or risk having excessive runtimes
  • 23. Scope and Capability Scope of Analysis versus Capability of Tool 5 4 3 2 1 0 Line Function Module Program System
  • 24. Line Focus • Like using “grep” to identify banned or suspect function calls • This was the approach taken by early tools • Good way to make a quick pass for potential vulnerabilities – Good for targeting manual review • Challenging to use on large codebases g g g • The more “signatures” that are included, the higher the noise to signal ratio will be – Just looking for specific functions g p
  • 25. Line Focus Example • Rule: gets() is BAD • Input: my_str = gets(); • Result: Flag this line for review • Pretty b i b t b tt than thi P tt basic, but better th nothing
  • 26. Line Focus: C/C++ • Known “bad” APIs: – strcpy() – gets() – scanf() – sprintf()
  • 27. Line Focus: Java • SQL injection – [Connection].createStatement() • XSS – <%= • More general parameter tampering: – [HttpServletRequest].getParameter() – [HttpServletRequest].getParameterValue() – [HttpServletRequest].getCookies() – [HttpServletRequest].getHeader() [HttpServletRequest] getHeader()
  • 28. Line Focus: .NET • SQL Injection: – SqlCommand • XSS – <%= • More general parameter tampering – Request[ – Request.Cookies[ – Request.Headers[
  • 29. Two (Crappy) Scripts I Wrote • dotnetcheck.sh and javacheck.sh • Implement the checks I mentioned above
  • 30. Function and Module Focus • At this point the tool needs to be acting as a compiler – Parse into tokens, determine lexical structure • This allows for much more sophisticated analysis – State machines – Control flow – D t flow Data fl
  • 31. Function and Module Focus p Example • Rule: Memory should only be freed once • Input: void f() { my_mem = malloc(256); ll (256) free(my_mem); free(my_mem); } • Result: – my_mem is marked as allocated – my_mem is marked as freed – Flag the second call to free(my_mem) as an issue
  • 32. Program and System Focus • Expanding the scope of inquiry allow tools to find more and more subtle flaws • Also helps avoid false positives
  • 33. Dataflow and Taint Tracking • Track dataflows through the system – Sources and Sinks • Attach taint flags to inputs – Web parameters and cookies – Data read from files – Environment variables – Data read from databases – Data read from web services • What type of taint? – From the network – From a configuration setting – From a database – And so on • Identify “cleaning” functions
  • 34. Taint Sources and Sinks for a pp Web Application
  • 35. Taint Sources and Sinks for an y SUID Root Binary
  • 36. Program and System Focus p Example • Rule: – User-supplied data should never be included in a SQL query without being properly escaped l d
  • 37. Program and System Focus Example (continued) p ( ) • Input: public void doGet(HttpServletReqest req, HttpServlet Response resp) { String user = req.getParameter(“username”); logStuff(user, “my_page”); // Render out HTML… } private logStuff(String user, String location) { Connection con = getConnection(); Statement stmt = con createStatement(); con.createStatement(); String sql = “INSERT INTO log (user, location) VALUES (‘” + user + “’, ‘” + location + “’” stmt.executeUpdate(sql); }
  • 38. Program and System Focus Example (continued) p ( ) • Result: – Input from getParameter() call is marks user variable as tained (Source) – Flow of data is traced into the logStuff() method – sql variable is also marked as tainted when it is concatenated with username parameter – executeUpdate() is marked as a security issue because it received tainted data (Sink)
  • 39. Examples of Static Analysis Tools • FindBugs (Java) • PMD (Java) • FxCop (.NET) • XSSDetect (.NET)
  • 40. FindBugs (Java) • Java-based static analysis tool • LGPL-licensed • Originally developed by Dr. Bill Pugh from the University of Maryland • Intended to find correctness issues, also identifies some security issues findbugs.sourceforge.net
  • 41. PMD (Java) • Java-based static analysis tool • BSD-licensed • Lead developers are David Dixon- Peugh and Tom Copeland • Intended to find correctness and complexity issues, also finds some security issues pmd.sourceforge.net p g
  • 42. FxCop (.NET) • Microsoft-provided tool for .NET static analysis • Freely available • Enforces coding standards (variable naming, etc) • Similar to FindBugs in its security capabilities www.gotdotnet.com/Team/FxCop/ www gotdotnet com/Team/FxCop/
  • 43. XSSDetect (.NET) • Microsoft-provided tool for .NET static analysis • Freely available (BETA!) • Performs data flow analysis to identify Cross Site Scripting (XSS) defects blogs.msdn.com/ace_team/archive/2007/10/22/xssdetect-public-beta-now-available.aspx • Based on the Microsoft Research Phoenix framework – For software analysis and optimization – research.microsoft.com/phoenix/
  • 44. Limitations • Static Analysis tools are a starting point for code review. Not a complete solution. • Static Analysis tools (like all automated tools) do not understand what your application is supposed to do – Out of the box rules are for general classes of security defects – Applications can still have issues with authorization and other trust issues – Only cover 50% of security defects (Dr. Gary McGraw) • False positives can be time consuming to address • Solutions? – Custom rules can help to add some application specific context
  • 45. Process Implications • Static Analysis tools can provide tremendous benefits • It is easier to start a new project using a tool than to impose one on an existing system • I have found that using a Static Analysis tool while developing helps to improve my coding skills – Immediate feedback when mistakes are made – Learn more about language and platform internals
  • 46. Process Implications: Questions • Who is going to run the tool? • When is the tool going to be run? • What will be done with the results? • Until you can answer these questions you should not assume questions, that a Static Analysis tool will help you improve security
  • 47. OWASP Open Review Project • Provide automated static analysis services to Open Source projects • Also manual source code review • Based on technology made available from Fortify Software • Language: g g – PHP and Java supported online – Other platforms (.NET, C/C++) supported by contributors who are also Fortify SCA licensees • Currently working with: – Many OWASP Tools projects – Moodle – A tiS AntiSamy.NET NET • http://www.owasp.org/index.php/Category:OWASP_Open_Review_Project
  • 48. Additional Resources • Book: Secure Programming With Static Analysis (Brian Chess and Jacob West) • Blog: Microsoft Code Analysis and Code Metrics Team Blog – blogs.msdn.com/fxcop/ • Website: FindBugs publications page – findbugs.sourceforge.net/publications.html • Various commercial vendors…
  • 49. Questions Dan Cornell - dan@denimgroup.com (210) 572-4400 Website: www denimgroup com www.denimgroup.com Blog: denimgroup.typepad.com