Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,

Slides:



Advertisements
Similar presentations
Secure Systems Research Group - FAU Process Standards (and Process Improvement)
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
Secure Design Principles  secure the weakest link  reduce the attack surface  practice defense in depth  minimize privilege  compartmentalize  fail.
FUNDAMENTAL PRACTICES FOR SECURE SOFTWARE DEVELOPMENT SAFECode Oct Presented by Hema Neelima.
It’s always better live. MSDN Events Security Best Practices Part 2 of 2 Reducing Vulnerabilities using Visual Studio 2008.
Information Networking Security and Assurance Lab National Chung Cheng University The Ten Most Critical Web Application Security Vulnerabilities Ryan J.W.
Information Networking Security and Assurance Lab National Chung Cheng University 1 Top Vulnerabilities in Web Applications (I) Unvalidated Input:  Information.
Security+ Guide to Network Security Fundamentals, Third Edition Chapter 9 Performing Vulnerability Assessments.
Security Engineering II. Problem Sources 1.Requirements definitions, omissions, and mistakes 2.System design flaws 3.Hardware implementation flaws, such.
Leveraging User Interactions for In-Depth Testing of Web Applications Sean McAllister, Engin Kirda, and Christopher Kruegel RAID ’08 1 Seoyeon Kang November.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
Software Security Course Course Outline Course Overview Introduction to Software Security Common Attacks and Vulnerabilities Overview of Security.
Designing Security In Web Applications Andrew Tomkowiak 10/8/2013 UW-Platteville Software Engineering Department
Secure Software Development Mini Zeng University of Alabama in Huntsville 1.
SEC835 Database and Web application security Information Security Architecture.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
Network Security Policy Anna Nash MBA 737. Agenda Overview Goals Components Success Factors Common Barriers Importance Questions.
Architecting secure software systems
Chapter 2 The process Process, Methods, and Tools
Information Systems Security Computer System Life Cycle Security.
A Framework for Automated Web Application Security Evaluation
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
 Protect customers with more secure software  Reduce the number of vulnerabilities  Reduce the severity of vulnerabilities  Address compliance requirements.
A Security Review Process for Existing Software Applications
Computer Security and Penetration Testing
Microsoft Security Development Lifecycle
Moving into Implementation SYSTEMS ANALYSIS AND DESIGN, 6 TH EDITION DENNIS, WIXOM, AND ROTH © 2015 JOHN WILEY & SONS. ALL RIGHTS RESERVED.Roberta M. Roth.
Slide 1 Construction (Testing) Chapter 15 Alan Dennis, Barbara Wixom, and David Tegarden John Wiley & Sons, Inc. Slides by Fred Niederman Edited by Solomon.
© Copyright 2011 John Wiley & Sons, Inc.
1 Vulnerability Assessment of Grid Software James A. Kupsch Computer Sciences Department University of Wisconsin Condor Week 2007 May 2, 2007.
Chapter 1 Overview The NIST Computer Security Handbook defines the term Computer Security as:
PowerPoint Presentation for Dennis & Haley Wixom, Systems Analysis and Design, 2 nd Edition Copyright 2003 © John Wiley & Sons, Inc. All rights reserved.
Engineering Essential Characteristics Security Engineering Process Overview.
APPLICATION PENETRATION TESTING Author: Herbert H. Thompson Presentation by: Nancy Cohen.
Security+ Guide to Network Security Fundamentals, Third Edition Chapter 9 Performing Vulnerability Assessments.
Systems Analysis and Design in a Changing World, Fourth Edition
.  Define risk and risk management  Describe the components of risk management  List and describe vulnerability scanning tools  Define penetration.
Lecture slides prepared for “Computer Security: Principles and Practice”, 3/e, by William Stallings and Lawrie Brown, Chapter 1 “Overview”. © 2016 Pearson.
Security Development Life Cycle Baking Security into Development September 2010.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
OWASP Building Secure Web Applications And the OWASP top 10 vulnerabilities.
Lecture 13 Page 1 CS 236 Online Major Problem Areas for Secure Programming Certain areas of programming have proven to be particularly prone to problems.
Principles of Computer Security, Fourth Edition Copyright © 2016 by McGraw-Hill Education. All rights reserved. Secure Software Development Chapter 18.
SANS Top 25 Most Dangerous Programming Errors Catagory 1: Insecure Interaction Between Components These weaknesses are related to insecure ways.
What Causes Software Vulnerabilities? _____________________ ___________ ____________ _______________   flaws in developers own code   flaws resulting.
By Ramesh Mannava.  Overview  Introduction  10 secure software engineering topics  Agile development with security development activities  Conclusion.
Chapter 11 Software Security. Many vulnerabilities result from poor programming practices Consequence from insufficient checking and validation of data.
Vulnerability / Cybersecurity Research Discussion Dwayne Melancon, CISA Chief Technology Officer and VP of Research & Development.
Secure Programming Dr. X
SQL Injection.
Secure Software Development
SE-1021 Software Engineering II
CMSC 345 Defensive Programming Practices from Software Engineering 6th Edition by Ian Sommerville.
Chapter 7: Identifying Advanced Attacks
Security Testing Methods
Security Issues Formalization
Secure Programming Dr. X
Theodore Lawson CSCE548 Student Presentation, Topic #2
Compliance with hardening standards
Control system network security issues and recommendations
A Security Review Process for Existing Software Applications
Secure Software Development
FUNDAMENTAL PRACTICES FOR
Secure Software Development
CMGT/431 INFORMATION SYSTEMS SECURITY The Latest Version // uopcourse.com
CMGT 431 CMGT431 cmgt 431 cmgt431 Entire Course // uopstudy.com
Presentation transcript:

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Secure Software Development Chapter 18

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Objectives Describe how secure coding can be incorporated into the software development process. List the major types of coding errors and their root cause. Describe good software development practices and explain how they impact application security. Describe how using a software development process enforces security inclusion in a project.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Key Terms Agile model Black-box testing Buffer overflow Canonicalization error Code injection Common Vulnerabilities and Exposures (CVE) Common Weakness Enumeration (CWE) Cryptographically random Deprecated functions Fuzzing Grey-box testing Least privilege Misuse case Penetration testing Requirements phase Secure development lifecycle (SDL) model Spiral model SQL injection Testing phase Top 25 list Use case Waterfall model White-box testing

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Software Engineering Software engineering is the systematic development of software to fill a variety of functions. Nonfunctional requirements take a low priority. Security described as a nonfunctional requirement in many projects and has been neglected. Growing dependency on software demands better software security.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Software Engineering Process Several specific models have been developed to make the process of programming more effective and efficient. Some major models include: –The waterfall model –The spiral model –The evolutionary model –The agile model –The secure development lifecycle model (SDL)

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Process Models The waterfall model The spiral model The evolutionary model The agile model The secure development model (SDL)

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Secure Development Lifecycle Firms have recognized the need for secure code. Security should be an issue that is addressed throughout the development process. The SDL accounts for security in each of its four major phases: –Requirements phase –Design phase –Coding phase –Testing phase

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition SDL Requirements Phase Define the specific requirements of the project. Ensure the resultant software functions as desired. Items specifically regarding security should be enumerated during this step. Outcome of this phase is a document guiding security throughout the rest of the process. Adding security later tends to cost exponentially more than implementing it from the start.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Analysis of security and privacy risk Authentication and password management Audit logging and analysis Authorization and role management Code integrity and validation testing Cryptography and key management Security Considerations for Requirements Phase

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Data validation and sanitization Network and data security Ongoing education and awareness Team staffing requirements Third-party component analysis Security Considerations for Requirements Phase (continued)

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition SDL Design Phase Becomes more important as scope grows since complexity and chance of failure also grow. Two secure coding principle are applied during the design phase: –Minimizing the attack surface area –Threat modeling

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Threat Modeling and Surface Area Minimization Threat modeling is the process of analyzing threats and their effects on software in a granular fashion. Attack surface minimization is a strategy to reduce the place where code can be attacked.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Threat Modeling Steps 1.Define scope 2.Enumerate assets 3.Decompose assets 4.Enumerate threats 5.Classify threats 6.Associate threats to assets 7.Score and rank threats 8.Create threat trees 9.Determine and score mitigation

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition SDL Coding Phase Phase where the design is implemented. Software is checked for vulnerabilities using enumerations of known software vulnerabilities: –Common Weakness Enumeration (CWE) –Common Vulnerabilities and Exposures (CVE) Manual review is also used to reduce vulnerabilities. Static code analysis tools may be used to search software code for possible errors.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Major Programming Errors SANS & MITRE maintain a list of the 25 most dangerous programming errors in three categories: –Insecure interaction between components –Risky resource management –Porous defenses Common problems with erroneous code include: –Buffer overflows –Improper input handling –Improper output handling –Least privilege problems –Injection vulnerabilities –Cryptographic failures –Language specific failures

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Buffer Overflows Nearly half of all exploits of computer programs stem historically from some form of buffer overflow. The generic classification of buffer overflows includes many variants: –Static buffer overruns –Indexing errors –Format string bugs –Unicode and ANSI buffer size mismatches –Heap overruns

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Improper Input Handling Users have the ability to manipulate inputs and it is up to the programmer to appropriately handle the input to prevent malicious entries from having an effect. Canonicalization is when application programs manipulate strings to a base form, creating a foundational representation of the input. Canonicalization errors are inputs to a web application may be processed by multiple applications, such as web server, application server, and database server, each with its own parsers to resolve appropriate canonicalization issues.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Improper Output Handling A second, and equally important, line of defense is proper string handling. String handling is a common event in programs, and string-handling functions are the source of a large number of known buffer-overflow vulnerabilities.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Injections Another issue with unvalidated input is the case of code injection. Rather than the input being appropriate for the function, this code injection changes the function in an unintended way. A SQL injection attack is a form of code injection aimed at any Structured Query Language (SQL)–based database, regardless of vendor.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Testing for SQL Injection Vulnerability There are two main steps associated with testing for SQL injection vulnerability. –The first step is to confirm that the system is at all vulnerable. –The second step is to use the error message information to attempt to perform an actual exploit against the database.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Least Privilege Least privilege requires that the developer understand what privileges are required specifically for an application to execute and access all its required resources. Determine what needs to be accessed and what the appropriate level of permission is, then use that level in design and implementation.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Cryptographic Failures One typical mistake is choosing to develop your own cryptographic algorithm. One of the axioms of cryptography is that there is no security through obscurity. Use a trusted algorithm instead.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Use Only Approved Cryptographic Functions Always use vetted and approved libraries for all cryptographic work. Never create your own cryptographic functions, even when using known algorithms. The generation of a real random number is not a trivial task.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Language-Specific Failures Modern programming languages are built around libraries that permit reuse and speed the development process. The development of many library calls and functions was done without regard to secure coding implications. Developing and maintaining a series of deprecated functions and prohibiting their use in new code, while removing them from old code when possible, is a proven path toward more secure code.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Microsoft Recommended Deprecated C Functions Function families to deprecate/remove: –strcpy() and strncpy() –strcat() and strncat() –scanf() –sprint() –gets() –memcpy(), CopyMemory(), and RtlCopyMemory() Banned functions are easily handled via automated code reviews during the check-in process.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition SDL Testing Phase Final opportunity to test the product before it is given to the end user. Fuzzing often used to find errors in this phase. –Refers to a method used to test software that automates numerous input sequences to uncover possible exploits Other automated code-checking tools may be run in this phase to find errors.

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Testing Methodologies White-box testing Grey-box testing Black-box testing Penetration testing Misuse cases

Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond, Third Edition Chapter Summary Describe how secure coding can be incorporated into the software development process. List the major types of coding errors and their root cause. Describe good software development practices and explain how they impact application security. Describe how using a software development process enforces security inclusion in a project.