CMSC 345 Defensive Programming Practices from Software Engineering 6th Edition by Ian Sommerville.

Slides:



Advertisements
Similar presentations
Verification and Validation
Advertisements

Understand Database Security Concepts
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development.
Static code check – Klocwork
Testing Without Executing the Code Pavlina Koleva Junior QA Engineer WinCore Telerik QA Academy Telerik QA Academy.
EEC 693/793 Special Topics in Electrical Engineering Secure and Dependable Computing Lecture 3 Wenbing Zhao Department of Electrical and Computer Engineering.
Web Defacement Anh Nguyen May 6 th, Organization Introduction How Hackers Deface Web Pages Solutions to Web Defacement Conclusions 2.
19.1 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java Chapter 19: Security The Security Problem Authentication Program Threats.
Introducing Computer and Network Security
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Information Networking Security and Assurance Lab National Chung Cheng University 1 Top Vulnerabilities in Web Applications (I) Unvalidated Input:  Information.
Methods For The Prevention, Detection And Removal Of Software Security Vulnerabilities Jay-Evan J. Tevis Department of Computer Science and Software Engineering.
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
CSCI 5801: Software Engineering
Secure Embedded Processing through Hardware-assisted Run-time Monitoring Zubin Kumar.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Project Quality Management
Chapter 15: Security (Part 1). The Security Problem Security must consider external environment of the system, and protect the system resources Intruders.
Security Exploiting Overflows. Introduction r See the following link for more info: operating-systems-and-applications-in-
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Introducing Computer and Network Security. Computer Security Basics What is computer security? –Answer depends on the perspective of the person you’re.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation Slightly adapted by Anders Børjesson.
Computer Security and Penetration Testing
 Chapter 13 – Dependability Engineering 1 Chapter 12 Dependability and Security Specification 1.
Information Systems Security Operations Security Domain #9.
Operating system Security By Murtaza K. Madraswala.
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
APPLICATION PENETRATION TESTING Author: Herbert H. Thompson Presentation by: Nancy Cohen.
Information Security What is Information Security?
CIS 450 – Network Security Chapter 14 – Specific Exploits for UNIX.
Linux Security. Authors:- Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel, of CodeSourcery LLC published by New Riders Publishing.
14.1/21 Part 5: protection and security Protection mechanisms control access to a system by limiting the types of file access permitted to users. In addition,
CHAPTER 9: VERIFICATION AND VALIDATION 1. Objectives  To introduce software verification and validation and to discuss the distinction between them 
Software Engineering, 8th edition Chapter 22 1 Courtesy: ©Ian Somerville 2006 April 27 th, 2009 Lecture # 19 Verification and Validation.
IT Security. What is Information Security? Information security describes efforts to protect computer and non computer equipment, facilities, data, and.
Computer Security By Duncan Hall.
14.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts with Java – 8 th Edition Protection.
Chapter 19: Building Systems with Assurance Dr. Wayne Summers Department of Computer Science Columbus State University
©Ian Sommerville 2000Dependability Slide 1 Chapter 16 Dependability.
VM: Chapter 7 Buffer Overflows. csci5233 computer security & integrity (VM: Ch. 7) 2 Outline Impact of buffer overflows What is a buffer overflow? Types.
References & User group Reference: Software Testing and Analysis Mauro Pezze Software Engineering Ian Sommerville Eight Edition (2007) User group:
Advanced System Security Dr. Wayne Summers Department of Computer Science Columbus State University
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 _____________,
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation.
Classic Buffer OVERFLOW ATTACKS CSCE 548 Student Presentation Mouiad Al Wahah.
 What threat assessments are  What vulnerability assessments are  What exploit assessments are.
Buffer Overflow Defenses
Buffer Overflows Incomplete Access Control
SE-1021 Software Engineering II
Critical Security Controls
Cybersecurity First Principles
Design for Security Pepper.
Security Testing Methods
Security Issues Formalization
Verification and Validation
Operating system Security
Secure Software Development: Theory and Practice
Answer the questions to reveal the blocks and guess the picture.
Verification and Validation
Verification and Validation
CS 465 Buffer Overflow Slides by Kent Seamons and Tim van der Horst
Chapter 19: Building Systems with Assurance
Verification and Validation Unit Testing
Security.
Operating System Concepts
Chapter 7 Software Testing.
Presentation transcript:

CMSC 345 Defensive Programming Practices from Software Engineering 6th Edition by Ian Sommerville

Defensive Programming Tactics Errors in system development can lead to security loop holes Unchecked I/O Unguarded Array bounds These loop holes allow accidental or malicious people to possibly gain more privileged access then they should have

Types of damage from External Attack Denial of Service Normal usage of the system by authorized users has been denied Corruption of programs or data Program or data contents can be modified, producing undesirable results Disclosure of confidential information Including things like passwords or SSN

Common Security Terms Exposure Vulnerability Attack Threats Control Possible loss or harm in a computing system Vulnerability A weakness in a computer-based system that may be exploited to cause loss or harm Attack An exploitation of a system vulnerability Threats Circumstances that have potential to cause loss or harm Control A protective measure that reduces a system vulnerability

To Ensure Security of a System Vulnerability Avoidance i.e. don’t connect a computer to the network if it doesn’t need to communicate with others Attack Detection & Neutralization i.e. using a virus checker to protect the computer from further exploitation Exposure Limitation i.e. regular back ups and constant security patch application protect a system from long term exposure

Dependable Software Fault Avoidance Fault Tolerance Design and implement the system in such a way as to minimize human error Fault Tolerance Design and implement the system such that even if faults do occur, they do not negatively impact the system

Dangerous Constructs Pointers Dynamic Memory Allocation Parallelism Biggest source of buffer overflows Dynamic Memory Allocation Could easily lead to memory leaks Parallelism Very difficult to minimize inter-process dependencies Recursion Difficult to debug and could result in accidental allocation of all a system’s memory

More Dangerous Constructs Interrupts Forced control to another area of code irrespective of code currently running could lead to critical operations being terminated Inheritance Could be difficult to track down code that your instantiation called on if there’s an error Default Input Processing Never allow input to absorbed into your program without first checking its contents for malicious intent

Information Hiding Similar to government security concept of ‘need to know’ Only allow programming constructs to gain direct access to methods and variables that they absolutely need for execution Languages like Java make this easier then languages like C Information Hiding prevents accidental or malicious use of your code

Good Testing Reduces Dangers Requirements inspection & management Continually review your requirements to make sure that you are developing your code to spec Code inspections Have your peers review your code looking for common problems and ask why you designed certain things in certain ways Static analysis Run a tool like lint or ITS4 against your code to search for common programming errors See http://www.wiretapped.net/indexes/development.html for more information and other tools Good Test planning & management Ensures that you cover all the bases and ensures that system requirements match up well with the final product

Static Analysis Software tool which scans the source text of a program and detects possible faults or anomalies Frequently used during code inspections Can be integrated into your development environment ITS4 can be melded with emacs /GS is the new part of MS Visual C++

Static Analysis Checks For… Control flow analysis Highlights loops with multiple entry & exit points and unreachable code Data use analysis Checks variable usage for things like Variables that are declared but never used Variables that are written twice without an intervening assignment

Static Analysis Checks For… Interface Analysis Performs additional type checking to ensure proper use Information Flow Analysis Identifies dependencies between input and output variables Path Analysis Unravels your program to show all the possible paths