CS 5950/6030 Network Security Class 16 (F, 10/7/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Testing and Quality Assurance
Chapter 4 Quality Assurance in Context
Software Construction
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Software Testing. Overview Definition of Software Testing Problems with Testing Benefits of Testing Effective Methods for Testing.
MSIS 110: Introduction to Computers; Instructor: S. Mathiyalakan1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
CS 5950/6030 Network Security Class 19 (F, 10/14/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing.
1 Building with Assurance CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute May 10, 2004.
Illinois Institute of Technology
Testing an individual module
Lecture 15 Overview. Kinds of Malicious Codes Virus: a program that attaches copies of itself into other programs. – Propagates and performs some unwanted.
Computer Security: Principles and Practice
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Outline Types of errors Component Testing Testing Strategy
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Design, Implementation and Maintenance
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Introduction to Computer Technology
Software Dependability CIS 376 Bruce R. Maxim UM-Dearborn.
Chapter 3 – Program Security Section 3.4 Targeted Malicious Code Section 3.5 Controls Against Program Threats.
System Implementation. System Implementation and Seven major activities Coding Testing Installation Documentation Training Support Purpose To convert.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
TESTING.
CS 5950/6030 Network Security Class 15 (W, 10/5/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing.
Information Systems Security Computer System Life Cycle Security.
Cmpe 471 Computer Crime: Techniques and Countermeasures.
FMEA-technique of Web Services Analysis and Dependability Ensuring Anatoliy Gorbenko Vyacheslav Kharchenko Olga Tarasyuk National Aerospace University.
CPIS 357 Software Quality & Testing
CSE 303 – Software Design and Architecture
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
CS 5950/6030 Network Security Class 15 (W, 10/5/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing.
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Cohesion and Coupling CS 4311
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Safety-Critical Systems 7 Summary T V - Lifecycle model System Acceptance System Integration & Test Module Integration & Test Requirements Analysis.
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Principles of Information Systems, Sixth Edition 1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
CS 5950/6030 Network Security Class 18 (W, 10/12/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing.
KUFA UNIVERSITY Department of Computer Science. Fundamentals of Software Engineering Presented By Neamah Hassan Presented By Neamah Hassan.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Writing Secure Programs. Program Security CSCE Farkas/Eastman - Fall Program Flaws Taxonomy of flaws: how (genesis) when (time) where (location)
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Integration Testing.
Quality Management Perfectqaservices.
Maintaining software solutions
Software testing strategies 2
Lecture 09:Software Testing
Verification and Validation Unit Testing
Chapter 1 Introduction(1.1)
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Presentation transcript:

CS 5950/6030 Network Security Class 16 (F, 10/7/05) Leszek Lilien Department of Computer Science Western Michigan University Based on Security in Computing. Third Edition by Pfleeger and Pfleeger. Using some slides courtesy of: Prof. Aaron Striegel — at U. of Notre Dame Prof. Barbara Endicott-Popovsky and Prof. Deborah Frincke — at U. Washington Prof. Jussipekka Leiwo — at Vrije Universiteit (Free U.), Amsterdam, The Netherlands Slides not created by the above authors are © by Leszek T. Lilien, 2005 Requests to use original slides for non-profit purposes will be gladly granted upon a written request.

2 3. Program Security 3.1. Secure Programs – Defining & Testing 3.2. Nonmalicious Program Errors 3.3. Malicious Code General-Purpose Malicious Code (incl. Viruses) Targeted Malicious Code a.Trapdoors a.Salami attack b.Covert channels Class 15

3 b. Salami attack  Salami attack - merges bits of seemingly inconsequential data to yield powerful results  Old example: interest calculation in a bank:  Fractions of 1 ¢ „shaved off” n accounts and deposited in attacker’s account  Nobody notices/cares if 0.1 ¢ vanishes  Can accumulate to a large sum  Easy target for salami attacks: Computer computations combining large numbers with small numbers  Require rounding and truncation of numbers  Relatively small amounts of error from these op’s are accepted as unavoidable – not checked unless a strong suspicion  Attacker can hide „salami slices” within the error margin

4 c. Covert Channels (CC) (1)  Outline: i.Covert Channels - Definition and Examples ii.Types of Covert Channels iii.Storage Covert Channels iv.Timing Covert Channels v.Identifying Potential Covert Channels vi.Covert Channels - Conclusions

5 Class 15 Ended Here

6 3. Program Security 3.1. Secure Programs – Defining & Testing 3.2. Nonmalicious Program Errors 3.3. Malicious Code General-Purpose Malicious Code (incl. Viruses) Targeted Malicious Code a.Trapdoors a.Salami attack b.Covert channels 3.4. Controls for Security a.Introduction b.Developmental controls for security — PART 1 Class 16 Class 15

Controls for Security  How to control security of pgms during their development and maintenance  Outline: a.Introduction b.Developmental controls for security c.Operating system controls for security d.Administrative controls for security e.Conclusions

8 a.Introduction  „Better to prevent than to cure”  Preventing security flaws  We have seen a lot of possible security flaws  How to prevent (some of) them?  Software engineering concentrates on developing and maintaining quality s/w  We’ll take a look at some techniques useful specifically for developing/ maintaining secure s/w  Three types of controls for security (against pgm flaws) : 1)Developmental controls 2)OS controls 3)Administrative controls

9 b. Developmental Controls for Security (1)  Nature of s/w development  Collaborative effort  Team of developers, each involved in  1 of stages:  Requirement specification  Regular req. specs: „do X”  Security req. specs: „do X and nothing more”  Design  Implementation  Testing  Documenting at each stage  Reviewing at each stage  Managing system development thru all stages  Maintaining deployed system (updates, patches, new versions, etc.)  Both product and process contribute to overall quality — incl. security dimension of quality

10 Developmental Controls for Security (2)  Fundamental principles of s/w engineering 1)Modularity 2)Encapsulation 3)Info hiding 1) Modularity  Modules should be:  Single-purpose - logically/functionally  Small - for a human to grasp  Simple - for a human to grasp  Independent – high cohesion, low coupling  High cohesion – highly focused on (single) purpose  Low coupling – free from interference from other modules  Modularity should improve correctness  Fewer flaws => better security

11 Developmental Controls for Security (3) 2) Encapsulation  Minimizing info sharing with other modules => Limited interfaces reduce # of covert channels  Well documented interfaces  „Hiding what should be hidden and showing what should be visible.” 3) Information hiding  Module is a black box  Well defined function and I/O  Easy to know what module does but not how it does it  Reduces complexity, interactions, covert channels,... => better security

12 Developmental Controls for Security (4)  Techniques for building solid software 1)Peer reviews 2)Hazard analysis 3)Testing 4)Good design 5)Risk prediction & mangement 6)Static analysis 7)Configuration management 8)Additional developmental controls... all discussed below... [cf. B. Endicott-Popovsky]

13 Developmental Controls for Security (5) 1) Peer reviews - three types Reviews Informal Team of reviewers Gain consensus on solutions before development Walk-throughs Developer walks team through code/document Discover flaws in a single design document Inspection Formalized and detailed Statistical measures used Various types of peer reviews can be highly effective [cf. B. Endicott-Popovsky]

14 Developmental Controls for Security (6) 2) Hazard analysis = systematic techniques to expose potentially hazardous system states, incl. security vulnerabilities Components of HA Hazard lists What-if scenarios – identifies non-obvious hazards System-wide view (not just code) Begins Day 1 Continues throughout SDLC (= s/w dev’t life cycle) Techniques HAZOP – hazard and operability studies FMEA – failure modees and effects analysis FTA – fault tree analysis [cf. B. Endicott-Popovsky]

15 Developmental Controls for Security (7) 3) Testing – phases: Module/component/unit testing of indiv. modules Integration testing of interacting (sub)system modules (System) function testing checking against requirement specs (System) performance testing (System) acceptance testing – with customer against customer’s requirements — on seller’s or customer’s premises (System) installation testing after installation on customer’s system Regression testing after updates/changes to s/w Types of testing Black Box testing – testers can’t examine code White Box / Clear box testing – testers can examine design and code, can see inside modules/system

16 Developmental Controls for Security (8) 4) Good design Good design uses: i.Modularity / encapsulation / info hiding ii.Fault tolerance iii.Consistent failure handling policies iv.Design rationale and history v.Design patterns i. Using modularity / encapsulation / info hiding - as discussed above

17 Developmental Controls for Security (9a) 4) Good design – cont.1a ii. Using fault tolerance for reliability and security System tolerates component failures System more reliable than any of its components Different than for security, where system is as secure as its weakest component Fault-tolerant approach: Anticipate faults (car: anticipate having a flat tire) Active fault detection rather than pasive fault detection (e.g., by use of mutual suspicion: active input data checking) Use redundancy (car: have a spare tire) Isolate damage Minimize disruption (car: replace flat tire, continue your trip) [cf. B. Endicott-Popovsky]

18 Developmental Controls for Security (9b) 4) Good design – cont.1b Example 1: Majority voting (using h/w redundancy) 3 processor running the same s/w E.g., in a spaceship Result accepted if results of  2 processors agree Example 2: Recovery Block (using s/w redundancy) Primary Code e.g., Quick Sort Secondary Code e.g., Bubble Sort Acceptance Test Quick Sort – – new code (faster) Bubble Sort – – well-tested code

19 Developmental Controls for Security (10) 4) Good design – cont.2 iii. Using consistent failure handling policies Each failure handled by one of 3 ways: Retrying Restore previous state, redo service using different „path” E.g., use secondary code instead of primary code Correcting Restore previous state, correct sth, run service using the same code as before Reporting Restore previous state, report failure to error handler, don’t rerun service Example — How fault-tolerance enhances security If security fault destroys important data (availability in CIA), use f-t to revert to backup data set

20 Developmental Controls for Security (11) 4) Good design – cont.3 iv. Using design rationale and history Knowing it (incl. knowing design rationale and history for security mechanisms) helps developers modifying or maintaining system v. Using design patterns Knowing it enables looking for patterns showing what works best in which situation

21 Developmental Controls for Security (12) Value of Good Design Easy maintenance Understandability Reuse Correctness Better testing => translates into (saving) BIG bucks ! [cf. B. Endicott-Popovsky]

22 Developmental Controls for Security (13) 5) Risk prediction & management Predict and manage risks involved in system development and deployment Make plans to handle unwelcome events should they occur Risk prediction/mgmt are esp. important for security Bec. unwelcome and rare events can have security consequences Risk prediction/mgmt helps to select proper security controls (e.g., proportional to risk)

23 Developmental Controls for Security (14) 6) Static analysis Before system is up and running, examine its design and code to locate security flaws More than peer review Examines Control flow structure (sequence in which instructions are executed, incl. iterations and loops) Data flow structure (trail of data) Data structures Automated tools available [cf. B. Endicott-Popovsky]

24 Developmental Controls for Security (15) 7) Configuration management = process of controling system modifications during development and maintenance Offers security benefits by scrutinizing new/changed code Problems with system modifications One change interefering with other change E.g., neutralizing it Proliferation of different versions and releases Older and newer For different platforms For different application environments (and/or customers categories)

25 End of Class 16