#1 The Future of Software Security David Wagner U.C. Berkeley.

Slides:



Advertisements
Similar presentations
Static Analysis for Security
Advertisements

Mining Specifications Glenn Ammons, Dept. Computer Science University of Wisconsin Rastislav Bodik, Computer Science Division University of California,
Network Security Attack Analysis. cs490ns - cotter2 Outline Types of Attacks Vulnerabilities Exploited Network Attack Phases Attack Detection Tools.
David Brumley, Pongsin Poosankam, Dawn Song and Jiang Zheng Presented by Nimrod Partush.
Using Programmer-Written Compiler Extensions to Catch Security Holes Authors: Ken Ashcraft and Dawson Engler Presented by : Hong Chen CS590F 2/7/2007.
Detecting Format String Vulnerabilities with Type Qualifier Umesh Shankar, Kunal Talwar, Jeffrey S. Foster, David Wanger University of California at Berkeley.
#1 Program analysis for security: Making it scale David Wagner U.C. Berkeley Work by Hao Chen, Karl Chen, Rob Johnson, Ben Schwarz, and Jeremy Lin, Geoff.
ReferencesReferences DiscussionDiscussion Vulnerability Example: SQL injection Auditing Tool for Eclipse LAPSE: a Security Auditing Tool for Eclipse IntroductionIntroductionResultsResults.
Information Security in Real Business Asian Connection and Craig.
Visualizing Type Qualifier Inference with Eclipse David Greenfieldboyce Jeffrey S. Foster University of Maryland.
MOPS MOdelchecking Security Properties David Wagner U.C. Berkeley.
Software Security David Wagner University of California at Berkeley.
How to Protect Your PC Grayware Adware, Malware, Spyware.
LittleOrange Internet Security an Endpoint Security Appliance.
Assessing the Threat How much money is lost due to cyber crimes? –Estimates range from $100 million to $100s billions –Why the discrepancy? Companies don’t.
1 Security and Software Engineering Steven M. Bellovin AT&T Labs – Research
CQual: A Tool for Adding Type Qualifiers to C Jeff Foster et al UC Berkeley OSQ Retreat, May
Desktop Security: Worms and Viruses Brian Arkills, C&C NDC-Sysmgt.
Chapter Nine Maintaining a Computer Part III: Malware.
Web Security Demystified Justin C. Klein Keane Sr. InfoSec Specialist University of Pennsylvania School of Arts and Sciences Information Security and Unix.
Panorama: Capturing System-wide Information Flow for Malware Detection and Analysis Authors: Heng Yin, Dawn Song, Manuel Egele, Christoper Kruegel, and.
Outline  Infections  1) r57 shell  2) rogue software  What Can We Do?  1) Seccheck  2) Virus total  3) Sandbox  Prevention  1) Personal Software.
Data Security.
32-1 Internet Safety/Security Issues Trojan/Virus precautions When you run an executable program from an untrusted source you’re opening yourself.
IT security Sherana Kousar 11a/ib1  A virus is a file written with the intention of doing harm, or for criminal activity  Example of viruses are: 
Malware Fighting Spyware, Viruses, and Malware Ch 4.
Automatically Hardening Web Applications Using Precise Tainting Anh Nguyen-Tuong Salvatore Guarnieri Doug Greene Jeff Shirley David Evans University of.
Penetration Testing James Walden Northern Kentucky University.
CSCE 548 Code Review. CSCE Farkas2 Reading This lecture: – McGraw: Chapter 4 – Recommended: Best Practices for Peer Code Review,
BLENDED ATTACKS EXPLOITS, VULNERABILITIES AND BUFFER-OVERFLOW TECHNIQUES IN COMPUTER VIRUSES By: Eric Chien and Peter Szor Presented by: Jesus Morales.
Copyright 2007 © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Detection and Prevention of Buffer Overflow Exploit Cai Jun Anti-Virus Section Manager R&D Department Beijing Rising Tech. Corp. LTD.
CSC-682 Cryptography & Computer Security Sound and Precise Analysis of Web Applications for Injection Vulnerabilities Pompi Rotaru Based on an article.
LINUX ROOTKITS Chirk Chu Chief Security Officer University of Alaska Statewide System Information Technology Services.
SECURE PROGRAMMING Chapter 1. Overview What is the problem Cost? Threat? Software Security Concepts Policy Flaws Vulnerabilities Exploits Mitigations.
Security - Why Bother? Your projects in this class are not likely to be used for some critical infrastructure or real-world sensitive data. Why should.
Axel Naumann. Outline  Static Code Analysis  Coverity  Reporting Tools, Report Quality  "Demo": Examples Axel Naumann Application Area Meeting2.
Static Analysis James Walden Northern Kentucky University.
Linux Security. Authors:- Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel, of CodeSourcery LLC published by New Riders Publishing.
Buffer Overflow Attack Proofing of Code Binary Gopal Gupta, Parag Doshi, R. Reghuramalingam, Doug Harris The University of Texas at Dallas.
Highly Scalable Distributed Dataflow Analysis Joseph L. Greathouse Advanced Computer Architecture Laboratory University of Michigan Chelsea LeBlancTodd.
Information Security In the Corporate World. About Me Graduated from Utica College with a degree in Economic Crime Investigation (ECI) in Spring 2005.
Sampling Dynamic Dataflow Analyses Joseph L. Greathouse Advanced Computer Architecture Laboratory University of Michigan University of British Columbia.
Understand Malware LESSON Security Fundamentals.
1 Model Checking One Million Lines of C Code Hao Chen, UC Berkeley Drew Dean, SRI International David Wagner, UC Berkeley.
MOPS: an Infrastructure for Examining Security Properties of Software Authors Hao Chen and David Wagner Appears in ACM Conference on Computer and Communications.
What Causes Software Vulnerabilities? _____________________ ___________ ____________ _______________   flaws in developers own code   flaws resulting.
ESSoS: February Leuven, Belgium1 Measuring the Effect of Code Complexity on Static Analysis Results James Walden, Adam Messer, Alex Kuhl Northern.
By Ramesh Mannava.  Overview  Introduction  10 secure software engineering topics  Agile development with security development activities  Conclusion.
Vulnerabilities in Operating Systems Michael Gaydeski COSC December 2008.
Securing a Host Computer BY STEPHEN GOSNER. Definition of a Host  Host  In networking, a host is any device that has an IP address.  Hosts include.
Software Security Q: What does it mean to say that a program is secure? A: There is a sufficient amount of trust that the program maintains _____________,
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Secure Programming Dr. X
Presented by Rob Carver
Types for Programs and Proofs
Secure Programming Dr. X
Protection and OS Structure
EN Lecture Notes Spring 2016
Ik-Soon Kim December 18, 2010 Embedded Software Platform Team
Risk of the Internet At Home
Lightweight Verification of Array Indexing
All You Ever Wanted to Know About Dynamic Taint Analysis & Forward Symbolic Execution (but might have been afraid to ask) Edward J. Schwartz, Thanassis.
CS240: Advanced Programming Concepts
Computer Security.
CSC-682 Advanced Computer Security
Semantic Type Qualifiers
Automatically Hardening Web Applications Using Precise Tainting
Implementation Lessons Learned Application Security Summit 2007
Sampling Dynamic Dataflow Analyses
Presentation transcript:

#1 The Future of Software Security David Wagner U.C. Berkeley

#2 The Scale of the Problem Viruses and worms prevalent — and especially nasty ones can cost > $1 billion per occurrence Phishing, pharming, botnets, rootkits, privacy spills Cybercrime profits for 2004 ($105 billion) claimed to exceed those of drug crime [Treasury Dept.] 80% of home users infected with spyware [NCSA] MTTI (Mean Time To Infection) for WinXP out-of-box:  15 minutes [SANS] Why? (1) Because we haven’t made security usable. (2) Because our software is riddled with defects.

#3 Software security is a software quality problem Software bugs = security holes = bad Where is Software Security Heading? Traditional approaches aren’t adequate operating system security — a good OS can’t make up for a buggy app virus detectors, IDS — a kludge on its last legs patch-and-pray — can’t keep up with the blackhats working around buggy end hosts in the network — a nice idea, killed by HTTP, SOAP, … We’ve got an application security problem

#4 Application Security Matters Application quality can make a measurable difference Browser # safe days (in 2004) # unpatched (2/18/06) days to patch Internet Explorer 7( 2%) Opera 300(82%) 0 93 Firefox 339(93%) 2 43 “unsafe” = remotely exploitable hole is publicly known and no patch available; “safe” = anything else.Sources: scanit, Secunia

#5 Complexity: No End in Sight Complexity is the enemy of security — yet is on the rise

#6 What can we do about it? Try harder Hardened languages and execution environments Tools to find security bugs in legacy code Languages, programming disciplines, tools to eliminate security bugs in new code Approaches

#7 Experiment: Analyze an entire Linux distribution Redhat 9, all C packages (732 pkgs, ~ 50 MLOC) Examined 5 sample security rules Team of 4 manually examined 900+ warnings Laborious: multiple person-months of effort Found 108 new security holes in Linux apps MOPS: A C Model Checker Security PropertyWarningsReal bugsBug ratio TOCTTOU790415% temporary files % strncpy (  165–468?) ~ 5-10% Total Lesson: Security bugfinding tools can be very effective

#8 Idea: static taint tracking Inputs from untrusted sources are “tainted” Prevent the flow of tainted data to trusting sinks Input Validation Crude implementation — abuse the C type system: struct taintedstr { char *p; }; struct taintedstr name = mktaintedstr(gethostbyaddr(...)->h_name); printf(name);// TYPE ERROR! Cheesy hack — augmented (Apps) Hungarian: char *tszName = gethostbyaddr(…)->h_name; printf(tszName);// BUG! char *name = gethostbyaddr(...)->h_name; printf(name);// BUG!

#9 A better way: type qualifier inference (CQual) New types: $tainted int, $untainted int, etc. Tool infers these qualifiers, where needed, so you don’t have to Taint Analysis Through Type Inference Application: Detection of user/kernel vulnerabilities in the Linux kernel Linux : 11 exploitable security holes Linux : 10 exploitable security holes Application: Detection of format string vulnerabilities Partial results: 3 vulnerabilities in 200K LOC In progress: analysis of an entire Linux distribution (260M LOC, 16K packages)

#10 Experiment: Can CQual verify absence of u/k bugs? Sound whole-kernel analysis User/Kernel Security Holes Found 10 exploitable holes in Linux core Sparse: missed all 10 bugs; 7000 annotations; many FPs MECA: missed 6/8 bugs; 75 annotations; very few FPs Linux kernelWarningsBugsAnnotationsSize default K LoC Lesson: Verifying absence of (certain) bugs is within reach Lesson: Verification tools find more bugs

#11 Security (quality) is a whole-systems problem Affects all elements of the system Pervades SW lifecycle: design, implementation, QA Security (quality) is a people problem Training, user testing, processes,... Program analysis tools can help with the gruntwork Bottom line: Better tools and better languages can help, but there’s no silver bullet If we haven’t solved the software quality problem yet, we probably won’t solve the software security problem any time soon, either Parting Thoughts