Unix Security Use of a taxonomy of security faults By T. Aslam, I. Krsul, and E. H. Spafford.

Slides:



Advertisements
Similar presentations
Use of a One-Way Hash without a Salt
Advertisements

Lee Jae-song 1.  How to cryptanalysis DES?  C = E K (P)  E is DES encryption funtion  K is a key, 56-bit.  P is a plaintext, C is a ciphertext, both.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
CS 483 – SD SECTION BY DR. DANIYAL ALGHAZZAWI (7) AUTHENTICATION.
1 Vulnerability Analysis CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute April 26, 2004.
Models and Security Requirements for IDS. Overview The system and attack model Security requirements for IDS –Sensitivity –Detection Analysis methodology.
1 Chapter 11: Authentication Basics Passwords. 2 Establishing Identity Authentication: binding of identity to subject One or more of the following –What.
Physical design. Stage 6 - Physical Design Retrieve the target physical environment Create physical data design Create function component implementation.
Hellman’s TMTO 1 Hellman’s TMTO Attack. Hellman’s TMTO 2 Popcnt  Before we consider Hellman’s attack, consider simpler Time-Memory Trade-Off  “Population.
1 Software Testing and Quality Assurance Lecture 30 – Testing Systems.
Testing an individual module
Chapter 9 Database Design
Testing - an Overview September 10, What is it, Why do it? Testing is a set of activities aimed at validating that an attribute or capability.
Database Management Systems (DBMS)
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
Data Structures and Programming.  John Edgar2.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Hellman’s TMTO 1 Hellman’s TMTO Attack. Hellman’s TMTO 2 Popcnt  Before we consider Hellman’s attack, consider simpler Time-Memory Trade-Off  “Population.
Secure Software Development Chris Herrick 01/29/2007.
Calculating Discrete Logarithms John Hawley Nicolette Nicolosi Ryan Rivard.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Information Systems Security Computer System Life Cycle Security.
Time-Memory tradeoffs in password cracking 1. Basic Attacks Dictionary attack: –What if password is chosen well? Brute Force (online version): –Try all.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
CSCI 3140 Module 2 – Conceptual Database Design Theodore Chiasson Dalhousie University.
Computer Security and Penetration Testing
Module 7 Reading SQL Server® 2008 R2 Execution Plans.
Engineering Secure Software. A Ubiquitous Concern  You can make a security mistake at every step of the development lifecycle  Requirements that allow.
Lecture 11: Strong Passwords
ISV Innovation Presented by ISV Innovation Presented by Business Intelligence Fundamentals: Data Cleansing Ola Ekdahl IT Mentors 9/12/08.
1 Chapter 11: Authentication Basics Passwords. 2 Establishing Identity Authentication: binding of identity to subject One or more of the following –What.
Password authentication Basic idea –User has a secret password –System checks password to authenticate user Issues –How is password stored? –How does system.
Exercises Information Security Course Eric Laermans – Tom Dhaene.
1 HASHING Course teacher: Moona Kanwal. 2 Hashing Mathematical concept –To define any number as set of numbers in given interval –To cut down part of.
Today’s Agenda  Reminder: HW #1 Due next class  Quick Review  Input Space Partitioning Software Testing and Maintenance 1.
Operating Systems Security 1. The Boot Sequence The action of loading an operating system into memory from a powered-off state is known as booting or.
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
By Rashid Khan Lesson 6-Building a Directory Service.
Identification Authentication. 2 Authentication Allows an entity (a user or a system) to prove its identity to another entity Typically, the entity whose.
Lecture 5 User Authentication modified from slides of Lawrie Brown.
UNIT 5.  The related activities of sorting, searching and merging are central to many computer applications.  Sorting and merging provide us with a.
Unix Security Assessing vulnerabilities. Classifying vulnerability types Several models have been proposed to classify vulnerabilities in UNIX-type Oses.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Introduction.  Administration  Simple DBMS  CMPT 454 Topics John Edgar2.
Block Cipher- introduction
Operating Systems Security
Design Principles and Common Security Related Programming Problems
Testing Data Structures Tao Xie Visiting Professor, Peking University Associate Professor, North Carolina State University
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Chapter 12: Authentication Basics Passwords Challenge-Response Biometrics Location Multiple Methods Computer Security: Art and Science © Matt.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
 Encryption provides confidentiality  Information is unreadable to anyone without knowledge of the key  Hashing provides integrity  Verify the integrity.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Chapter 29: Program Security Dr. Wayne Summers Department of Computer Science Columbus State University
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
CSEN 1001 Computer and Network Security Amr El Mougy Mouaz ElAbsawi.
Engineering Secure Software. A Ubiquitous Concern  You can make a security mistake at every step of the development lifecycle  Requirements that allow.
ISQB Software Testing Section Meeting 10 Dec 2012.
Testing Tutorial 7.
Software Testing Techniques
Hellman’s TMTO Attack Hellman’s TMTO 1.
Lecture 14 Virtual Memory and the Alpha Memory Hierarchy
Verification and Validation Unit Testing
Kiran Subramanyam Password Cracking 1.
VA/PT.
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Chapter 29: Program Security
Presentation transcript:

Unix Security Use of a taxonomy of security faults By T. Aslam, I. Krsul, and E. H. Spafford

The approach The objective of this work is to facilitate discovery of vulnerabilities by non-security experts, using pattern-oriented approach Making vulnerability analysis more procedural The paper first considers classes of software errors that have been identified by software testing methods: Boundary condition errors, input validation errors, access validation errors, failure to handle exceptional condition errors, environment errors, synchronization errors, configuration errors

Boundary condition errors Boundary Value Analysis (BVA) uses test cases to verify the functionality of software modules. It ensures that test cases explore whether modules correctly implement functionality in boundary conditions. For instance, suppose a branch is taken if a variable x is less than a constant t. It is important to check what happens when x == t and when x differs from t by a small amount. This can find path selection errors. An important technique important in this case is Path Analysis. Path analysis is based on the observation that it is often easy to establish that a program correctly implements a particular functionality along a fixed path (I.e., for specific branch selection choices)

Input/Access validation errors A module (function, component) uses an input without verifying that it conforms to the expected format. As a result, the component (or an inter- dependent element) may fail as a result Path analysis can be effectively used to validate that a program does not fail on improper input Access validation errors result from incorrectly specified condition constructs. Branch and Relational Operator (BRO) testing techniques can facilitate the design of test cases that identify access validation errors

Exceptional conditions/environmental errors Failure to handle exceptional conditions is a common source of vulnerabilities For instance, failure to check return codes for memory/IO operations Often detectable through source code review Environment errors are vulnerabilities that only manifest themselves in specific environmental conditions (OS-dependent, configuration-dependent) E.g.: Integer overflow/underflow. Mutation testing (which involves creating erroneous variants of the program to ensure that a test set is sufficiently comprehensive) can facilitate the discovery of such errors. Similarly, path analysis can ensure that all possible categories of inputs leading to modification of program behavior are examined

Synchronization errors Introduced because of the existence of a time window between two operations. Such operations should occur in a specified order, or as an atomic unit Another process may intervene between the two operations. A classical example is a gap between a privilege access check and a file access. These errors are commonly known as race conditions Assigned reading: N. Borisov, R. Johnson, N. Sastry, D. Wagner. Fixing Races for Fun and Profit: How to abuse atime. Proc. 14th USENIX Security Symposium, pp. 303–

Configuration errors Faults that are introduced during the maintenance phase of the software life-cycle Software is deployed with configuration options that violate the environment’s security policies or is ported to new environments that were not contemplated during development Differ from environmental errors in that the latter are introduced during development phase, and refer to environmental conditions that should have been anticipated by developers (e.g., a deployment scenario that was envisioned for the component)

Fault classification scheme Coding Faults Synchronization errors Condition validation errors Emergent Faults Configuration errors Environmental faults

Finer-grained classification Synchronization Time window Improper serialization Configuration errors Installation location Setup parameters Incorrect permissions Environmental faults Condition validation Types of conditions Checking limits Checking access rights Input validation Origin validation Errors made Missing check Missing predicate (sub- case of a check) Incorrectly formed check leads to predicates being ignored

Study questions How does the fault classification scheme of M. Bishop relates to that of Aslam et.al.? For each fault type in Aslam et.al., seek to classify it in Bishop’s scheme. Does it fit into a single or multiple categories of Bishop’s? Is any of Bishop’s categories a refinement of Aslam et.al.’s Is any of Aslam et.al.’s a refinement of Bishop’s?

Time-memory tradeoffs Applications to password-breaking and cryptanalysis

Secure storage Passwords and cryptographic keys are often stored in file systems for convenience of access Passwords are hashed and/or encrypted and verified during login Keys are “wrapped” (a special encryption operation) using passwords Such values become vulnerable to dictionary attacks Online attacks recover the hashed/wrapped value and try all entries of password dictionary against it Offline attacks pre-compute large databases and perform a lookup against these values Time-memory trade-offs try to find an optimal balance between database pre-computation and online guessing The use of long salt values can make both offline and time- memory trade-off attacks less efficient than online attacks

Time-memory trade-off Compute enough information in a database to allow for faster online attacks Example: Without pre-computation and auxiliary databases, an online dictionary attack requires O(N) steps, where N is the size of the dictionary Time-memory trade-offs can cut the online cost to O(N 2/3 ), using a database of length O(N 2/3 ), at the expense of pre-computation

Example: Hellman method Cryptanalysis problem: Plaintext known in advance (same for many attacks) Ciphertext available at beginning of online phase of attack Find the key used to encrypt Example: password systems If the key-space is exhaustible, one can compute all possible ciphertexts in advance Iterate over keys in some chained fashion Save only the first and last results of the computation chain During the online attack, the availability of the chain begin/end points can reduce the length of the search space for keys Why not save all? Database would be too long

Details Plaintext: P 0, Ciphertext C 0 Which key k was used to encrypt? Notation: C 0 = S(k, P 0 ) Use an arbitrary reduction function R() taking ciphertext to keyspace Compute chains as k i  S(k i, P 0 ) = C i  R(C i ) = k i +1 Combining the two steps into a single function f() k i  f(k i ) = k i+1  f(k i+1 ) = k i+2  …

Database construction and details Compute m chains, each of length t Create a database with entries During the online phase Obtain C Compute k = R(C) Construct t-length chain k  f(k) = k 1  f(k 1 ) = k 2  … If key used to create C was examined during the creation of the database, one element in the online chain matches some ke i in the database From kb i, redo chain computation until k found The preceding element in this chain is the key for C

Characteristics of attack Many windows applications use 40-bit keys A straightforward attack requires at least 2 40 words, or 16 TB of data A time-memory trade-off requires only 2 27 words, or 2GB of data. Larger databases could be used to result in the best I/O to computation trade-off Such databases will typically not be comprehensive Performance depends on strategy to limit the number of false positives during online step Using multiple tables with different reduction functions at each step in the chain results in substantial improvements