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

Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLSergey Petrunya
 
This keyword in java
This keyword in javaThis keyword in java
This keyword in javaHitesh Kumar
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling pptJavabynataraJ
 
Mutation Testing
Mutation TestingMutation Testing
Mutation TestingESUG
 
[Meetup] a successful migration from elastic search to clickhouse
[Meetup] a successful migration from elastic search to clickhouse[Meetup] a successful migration from elastic search to clickhouse
[Meetup] a successful migration from elastic search to clickhouseVianney FOUCAULT
 
Software Testing and Quality Assurance Assignment 2
Software Testing and Quality Assurance Assignment 2Software Testing and Quality Assurance Assignment 2
Software Testing and Quality Assurance Assignment 2Gurpreet singh
 
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...Edureka!
 
Class object method constructors in java
Class object method constructors in javaClass object method constructors in java
Class object method constructors in javaRaja Sekhar
 
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?Takuya Ogawa
 
White box techniques
White box techniquesWhite box techniques
White box techniquesQA Guards
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaArafat Hossan
 
Classes, objects in JAVA
Classes, objects in JAVAClasses, objects in JAVA
Classes, objects in JAVAAbhilash Nair
 
Control Flow Statements
Control Flow Statements Control Flow Statements
Control Flow Statements Tarun Sharma
 
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...ScyllaDB
 

What's hot (20)

Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQL
 
This keyword in java
This keyword in javaThis keyword in java
This keyword in java
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling ppt
 
AAA Automated Testing
AAA Automated TestingAAA Automated Testing
AAA Automated Testing
 
Mutation Testing
Mutation TestingMutation Testing
Mutation Testing
 
[Meetup] a successful migration from elastic search to clickhouse
[Meetup] a successful migration from elastic search to clickhouse[Meetup] a successful migration from elastic search to clickhouse
[Meetup] a successful migration from elastic search to clickhouse
 
Software Testing and Quality Assurance Assignment 2
Software Testing and Quality Assurance Assignment 2Software Testing and Quality Assurance Assignment 2
Software Testing and Quality Assurance Assignment 2
 
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...
Java Strings Tutorial | String Manipulation in Java | Java Tutorial For Begin...
 
Software testing
Software testingSoftware testing
Software testing
 
Class object method constructors in java
Class object method constructors in javaClass object method constructors in java
Class object method constructors in java
 
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
 
Introduction to JUnit
Introduction to JUnitIntroduction to JUnit
Introduction to JUnit
 
White box techniques
White box techniquesWhite box techniques
White box techniques
 
JAVA PROGRAMMING
JAVA PROGRAMMING JAVA PROGRAMMING
JAVA PROGRAMMING
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & Tricks
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Classes, objects in JAVA
Classes, objects in JAVAClasses, objects in JAVA
Classes, objects in JAVA
 
Control Flow Statements
Control Flow Statements Control Flow Statements
Control Flow Statements
 
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
MongoDB vs Scylla: Production Experience from Both Dev & Ops Standpoint at Nu...
 
Arrays & Strings
Arrays & StringsArrays & Strings
Arrays & Strings
 

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

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Recently uploaded (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

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