Software security specification and verification



Similar documents
Source Code Review Using Static Analysis Tools

Software & Hardware Security

Introduction. Secure Software Development 9/03/2015. Matias starts. Daan takes over. Matias takes over. Who are we? Round of introductions

Secure Software Programming and Vulnerability Analysis

Automatic vs. Manual Code Analysis

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

X05. An Overview of Source Code Scanning Tools. Loulwa Salem. Las Vegas, NV. IBM Corporation IBM System p, AIX 5L & Linux Technical University

elearning for Secure Application Development

Malicious Code on Java Card Smartcards: Attacks and Countermeasures

TOOL EVALUATION REPORT: FORTIFY

Secure Programming with Static Analysis. Jacob West

Application Code Development Standards

Top Signs You re Prime for a Data Breach in 2014

Computer Software Bugs and Other IT Threats to Critical Infrastructure: A Preliminary Set of Considerations for IT Governance

The Need for Fourth Generation Static Analysis Tools for Security From Bugs to Flaws

How to Build a Trusted Application. John Dickson, CISSP

Seven Practical Steps to Delivering More Secure Software. January 2011

Web application testing

Joeri de Ruiter Sicco Verwer

Software security assessment based on static analysis

SAFECode Security Development Lifecycle (SDL)

D. Best Practices D.1. Assurance The 5 th A

Network and Host-based Vulnerability Assessment

Introduction to Web Application Security. Microsoft CSO Roundtable Houston, TX. September 13 th, 2006

Learning security through insecurity

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

NETWORK PENETRATION TESTS FOR EHR MANAGEMENT SOLUTIONS PROVIDER

Course Modules for Software Security

Testing for Security

Deep Security/Intrusion Defense Firewall - IDS/IPS Coverage Statistics and Comparison

Static Checking of C Programs for Vulnerabilities. Aaron Brown

Software Security Analysis - Execution Phase Audit

90% of data breaches are caused by software vulnerabilities.

Linux Kernel. Security Report

Deep Security Intrusion Detection & Prevention (IDS/IPS) Coverage Statistics and Comparison

Application Security and the SDLC. Dan Cornell Denim Group, Ltd.

Creating Stronger, Safer, Web Facing Code. JPL IT Security Mary Rivera June 17, 2011

Plain English Guide To Common Criteria Requirements In The. Field Device Protection Profile Version 0.75

Introduction to Automated Testing

Securing Network Software using Static Analysis

CSE331: Introduction to Networks and Security. Lecture 32 Fall 2004

Enterprise Application Security Program

Development. Resilient Software. Secure and. Mark S. Merkow Lakshmikanth Raghavan. CRC Press. Taylor& Francis Croup. Taylor St Francis Group,

The purpose of this report is to educate our prospective clients about capabilities of Hackers Locked.

THE HACKERS NEXT TARGET

Secure Programming and Source-Code Reviews - In the UNIX Environment. Thomas Biege <thomas@suse.de>

Improving Software Security at the. Source

Nessus. A short review of the Nessus computer network vulnerability analysing tool. Authors: Henrik Andersson Johannes Gumbel Martin Andersson

Threat Modeling. Categorizing the nature and severity of system vulnerabilities. John B. Dickson, CISSP

Programming Flaws and How to Fix Them

<Insert Picture Here> Third Party Software Some Security Considerations

Hands-on Hacking Unlimited

Iron Chef: John Henry Challenge

Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security

Bringing Security Testing to Development. How to Enable Developers to Act as Security Experts

Web Application Threats and Vulnerabilities Web Server Hacking and Web Application Vulnerability

WEB APPLICATION SECURITY

Coverity White Paper. Reduce Your Costs: Eliminate Critical Security Vulnerabilities with Development Testing

Development Processes (Lecture outline)

Will Dormann: Sure. Fuzz testing is a way of testing an application in a way that you want to actually break the program.

WhiteHat Security White Paper. Top 11 PCI DSS 3.0 Changes That Will Affect Your Application Security Program

Software Security. Group project: application security verification using OWASP ASVS

Designing and Coding Secure Systems

FIREWALLS & NETWORK SECURITY with Intrusion Detection and VPNs, 2 nd ed. Chapter 4 Finding Network Vulnerabilities

Software Assurance Forum for Excellence in Code

Oracle Database Security. Nathan Aaron ICTN 4040 Spring 2006

White Paper. Blindfolded SQL Injection

Secure Web Application Coding Team Introductory Meeting December 1, :00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda

Protect Your Organization With the Certification That Maps to a Master s-level Education in Software Assurance

Threat Modeling. Frank Piessens ) KATHOLIEKE UNIVERSITEIT LEUVEN

The Security Development Lifecycle. OWASP 24 June The OWASP Foundation

Application Security: What Does it Take to Build and Test a Trusted App? John Dickson, CISSP Denim Group

Software Development: The Next Security Frontier

Bypassing Memory Protections: The Future of Exploitation

ASL IT SECURITY XTREME XPLOIT DEVELOPMENT

Java Card Applet Firewall Exploration and Exploitation

Chapter 1 Web Application (In)security 1

Homeland Security Red Teaming

Introduction to Web Security

Application Security Testing. Erez Metula (CISSP), Founder Application Security Expert

The Hacker Strategy. Dave Aitel Security Research

Using JML to protect Java code against SQL injection. Johan Janssen June 26, 2007

How to achieve PCI DSS Compliance with Checkmarx Source Code Analysis

<Insert Picture Here> What's New in NetBeans IDE 7.2

Precise XSS Detection with Static Analysis using String Analysis

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

Application Security and the SDLC. Dan Cornell Denim Group, Ltd.

WEB SECURITY. Oriana Kondakciu Software Engineering 4C03 Project

Vulnerability Management in Software: Before Patch Tuesday KYMBERLEE PRICE BUGCROWD

Columbia University Web Security Standards and Practices. Objective and Scope

STATIC CODE ANALYSIS Alexandru G. Bardas 1

How To Ensure That Your Computer System Is Safe

Hacking Database for Owning your Data

Vulnerability Assessment for Middleware

CYBER SECURITY: A REPORT FROM THE TRENCHES 2015 AGC NATIONAL & CHAPTER LEADERSHIP CONFERENCE MIKE.ZUSMAN@CARVESYSTEMS.COM

Architectural Risk Analysis for Android Applications

RIPS - A static source code analyser for vulnerabilities in PHP scripts

Vulnerability Management in an Application Security World. January 29 th, 2009

Using the Juliet Test Suite to compare Static Security Scanners

Effective Software Verification for Medical Devices

Transcription:

Software security specification and verification Erik Poll Security of Systems (SoS) group Radboud University Nijmegen

Software (in)security specification and verification/detection Erik Poll Security of Systems (SoS) group Radboud University Nijmegen

How I got interested in software security Tool-supported formal specification and verification of Java software JavaCard programs for smartcards ideal target for verification But... what are the security properties to verify?? Physical attacks on smartcards better understood than logical attacks on software Properties to verify: absence of runtime exceptions or integer overflow, preservation of invariants,... rather than complete functional specs Erik Poll SoS - Radboud Univ. Nijmegen 3

Software security Vast majority of security problems are caused by software Software security excludes crypto, but not implementation of crypto social engineering attacks hardware security, eg. tamper-resistance Erik Poll SoS - Radboud Univ. Nijmegen 4

Getting software secure is difficult! Eg, from www.cert.org/advisories for (Open)SSH CA-2001-35 Recent Activity Against Secure Shell Daemons (Dec 13) There are multiple vulnerabilities in several implementations of SSH.... CA-2002-18 OpenSSH Vulnerability in challenge-response handling (Jun 26) There are vulnerabilities in challenge response handling code... CA-2002-23 Multiple Vulnerabilities in OpenSSH (July 30) There are four remotely exploitable buffer overflows in... CA-2002-24 Trojan Horse OpenSSH Distribution (Aug 1) Some copies of the source code of OpenSSH package contain a Trojan horse.... CA-2002-36 Multiple Vulnerabilities in SSH Implementations (Dec 16) Multiple vendors' implementations of SSH contain vulnerabilities... CA-2003-24: Buffer Management Vulnerability in OpenSSH (Sept 16) There is a remotely exploitable buffer overflow in versions of OpenSSH prior to 3.7 Will there be more? Note that crypto is not the solution to our problems. Erik Poll SoS - Radboud Univ. Nijmegen 5

Some reasons why security is difficult Security concerns are always secondary primary goal of software is to provide some functionality or services; managing risks this introduces is a derived/secondary concern. Saying what is not secure is easier than saying what is secure Security problems can go unnoticed during normal use and testing Security may conflict with functionality and convenience for users, but also for programmers and sys-admins Erik Poll SoS - Radboud Univ. Nijmegen 6

Example: programmer convenience vs security generally accepted Java coding standard: prefer protected to private motivation: allows useful subclassing but Java security guideline: avoid using protected motivation: protected really means unprotected Erik Poll SoS - Radboud Univ. Nijmegen 7

Security in software development life cycle Security is a concern throughout SDLC Ideally, catch problems as early as possible Still, many software vulnerabilities are introduced in the coding phase. Namely coding bugs eg buffer overflows as opposed to architectural flaws eg use of RPC under Windows Erik Poll SoS - Radboud Univ. Nijmegen 8

Typical software vulnerabilities 17% 0% 26% 37% buffer overflow input validation code defect design defect crypto 20% Security bugs found in Microsoft bug fix month (2002) Erik Poll SoS - Radboud Univ. Nijmegen 9

Example: famous Java security bug in JDK1.1 package java.lang; public class Class { private Object[] signers;... public Object[] getsigners() { return signers; }... This bug won t be caught by typical functional specs, or detected by typical tests Erik Poll SoS - Radboud Univ. Nijmegen 10

The bad news There are many things that can go wrong in coding phase: long lists of dont s These may involve interaction of features, and can be hard to spot (or test) Programmers often not aware of them Eg. one major creditcard company lists 214 requirements for JavaCard smartcard code, to be checked in source code reviews. Erik Poll SoS - Radboud Univ. Nijmegen 11

The good news The same things tend to go wrong Largely independent of application, but depending on the programming language eg. buffer overflows in C(++) the platform/os eg. unsafe use of system calls and environment variables the kind of application eg. SQL command injections in webservers Erik Poll SoS - Radboud Univ. Nijmegen 12

The problem with long checklists of dont s Are programmers even aware of them? Educate programmers How do we know the list is complete? Publish & discuss these lists Challenge for scientific research How do we check them? Automate this! Using static checkers aka source code analysers Erik Poll SoS - Radboud Univ. Nijmegen 13

Some (free) source code analysers ITS4 (C/C++) RATS (C/C++/Perl/PHP) Flawfinder (C/C++) FindBugs (Java)... Source code analysis not just for security, but for general software quality Erik Poll SoS - Radboud Univ. Nijmegen 14

Example: FindBugs source code analyser Erik Poll SoS - Radboud Univ. Nijmegen 15

Of course, ideally flaws should be prevented at the language level. Eg no buffer overflows in Java or C# tainted mode for input data in Perl escaping meta-characters in PHP Erik Poll SoS - Radboud Univ. Nijmegen 16

Conclusions the bad news Be aware that security tends to be ignored Security is hard to specify long lists of dont s Software flaws are main cause of security problems Software flaws can be hard to uncover with testing or detect with normal use Erik Poll SoS - Radboud Univ. Nijmegen 17

Conclusions some good news More standard patterns of security vulnerabilities are widely known Improving static checkers can detect such patterns (also thanks to Moore s Law) Newer languages and platforms will have fewer vulnerabilities? Erik Poll SoS - Radboud Univ. Nijmegen 18