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

Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineeringDarshit Metaliya
 
Software myths | Software Engineering Notes
Software myths | Software Engineering NotesSoftware myths | Software Engineering Notes
Software myths | Software Engineering NotesNavjyotsinh Jadeja
 
Java if else condition - powerpoint persentation
Java if else condition - powerpoint persentationJava if else condition - powerpoint persentation
Java if else condition - powerpoint persentationManeesha Caldera
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel ExploitationzeroSteiner
 
SAST vs. DAST: What’s the Best Method For Application Security Testing?
SAST vs. DAST: What’s the Best Method For Application Security Testing?SAST vs. DAST: What’s the Best Method For Application Security Testing?
SAST vs. DAST: What’s the Best Method For Application Security Testing?Cigital
 
Software Testing Fundamentals
Software Testing FundamentalsSoftware Testing Fundamentals
Software Testing FundamentalsChankey Pathak
 
Software Testing Basics
Software Testing BasicsSoftware Testing Basics
Software Testing BasicsBelal Raslan
 
Event Handling in java
Event Handling in javaEvent Handling in java
Event Handling in javaGoogle
 
Program and System Threats
Program and System ThreatsProgram and System Threats
Program and System ThreatsReddhi Basu
 

What's hot (20)

Metaploit
MetaploitMetaploit
Metaploit
 
System software
System softwareSystem software
System software
 
Black box & white-box testing technique
Black box & white-box testing techniqueBlack box & white-box testing technique
Black box & white-box testing technique
 
Software testing
Software testingSoftware testing
Software testing
 
Slides chapters 26-27
Slides chapters 26-27Slides chapters 26-27
Slides chapters 26-27
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
Jhon the ripper
Jhon the ripper Jhon the ripper
Jhon the ripper
 
Software myths | Software Engineering Notes
Software myths | Software Engineering NotesSoftware myths | Software Engineering Notes
Software myths | Software Engineering Notes
 
Java if else condition - powerpoint persentation
Java if else condition - powerpoint persentationJava if else condition - powerpoint persentation
Java if else condition - powerpoint persentation
 
Race condition
Race conditionRace condition
Race condition
 
Practical Windows Kernel Exploitation
Practical Windows Kernel ExploitationPractical Windows Kernel Exploitation
Practical Windows Kernel Exploitation
 
SAST vs. DAST: What’s the Best Method For Application Security Testing?
SAST vs. DAST: What’s the Best Method For Application Security Testing?SAST vs. DAST: What’s the Best Method For Application Security Testing?
SAST vs. DAST: What’s the Best Method For Application Security Testing?
 
Software Testing Fundamentals
Software Testing FundamentalsSoftware Testing Fundamentals
Software Testing Fundamentals
 
Software Testing Basics
Software Testing BasicsSoftware Testing Basics
Software Testing Basics
 
Event Handling in java
Event Handling in javaEvent Handling in java
Event Handling in java
 
Features of java
Features of javaFeatures of java
Features of java
 
Program and System Threats
Program and System ThreatsProgram and System Threats
Program and System Threats
 
Event handling
Event handlingEvent handling
Event handling
 
IDAPRO
IDAPROIDAPRO
IDAPRO
 
Software testing ppt
Software testing pptSoftware testing ppt
Software testing ppt
 

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
 
Static testing vs dynamic testing
Static testing vs dynamic testingStatic testing vs dynamic testing
Static testing vs dynamic testingpooja deshmukh
 

Viewers also liked (16)

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 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

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 

Recently uploaded (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 

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