Avoiding The Top 10 Software Security Design Flaws Summary of Report Boston.NET Architecture Group Robert Hurlbut Presented 9/17/2014 This summary is distributed.

Slides:



Advertisements
Similar presentations
Kerberos 1 Public domain image of Heracles and Cerberus. From an Attic bilingual amphora, 530–520 BC. From Italy (?).
Advertisements

Operating System Security
TCSEC: The Orange Book. TCSEC Trusted Computer System Evaluation Criteria.
Cryptography and Network Security 2 nd Edition by William Stallings Note: Lecture slides by Lawrie Brown and Henric Johnson, Modified by Andrew Yang.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
ATTACKING AUTHENTICATION The Web Application Hacker’s Handbook, Ch. 6 Presenter: Jie Huang 10/31/2012.
Access Control Methodologies
Network Isolation Using Group Policy and IPSec Paula Kiernan Senior Consultant Ward Solutions.
CPSC 875 John D. McGregor Security. Write down the AADL specification for a simple queue.
Advanced Metering Infrastructure AMI Security Roadmap April 13, 2007.
1 Cryptography and Network Security Third Edition by William Stallings Lecturer: Dr. Saleem Al_Zoubi.
Chapter 4: Security Policies Overview The nature of policies What they cover Policy languages The nature of mechanisms Types Secure vs. precise Underlying.
It’s always better live. MSDN Events Security Best Practices Part 2 of 2 Reducing Vulnerabilities using Visual Studio 2008.
CMSC 414 Computer (and Network) Security Lecture 2 Jonathan Katz.
Ensuring Non-Functional Properties. What Is an NFP?  A software system’s non-functional property (NFP) is a constraint on the manner in which the system.
Lesson 11-Virtual Private Networks. Overview Define Virtual Private Networks (VPNs). Deploy User VPNs. Deploy Site VPNs. Understand standard VPN techniques.
Information Networking Security and Assurance Lab National Chung Cheng University 1 Top Vulnerabilities in Web Applications (I) Unvalidated Input:  Information.
CMSC 414 Computer and Network Security Lecture 9 Jonathan Katz.
Securing Data Storage Protecting Data at Rest Advanced Systems Group Dell Computer Asia Ltd.
Security Engineering II. Problem Sources 1.Requirements definitions, omissions, and mistakes 2.System design flaws 3.Hardware implementation flaws, such.
Applied Cryptography for Network Security
Towards Application Security On Untrusted OS
Cryptography and Network Security Chapter 1. Chapter 1 – Introduction The art of war teaches us to rely not on the likelihood of the enemy's not coming,
Overview of the Multos construction process Chad R. Meiners.
Cryptography and Network Security Third Edition by William Stallings Lecture slides by Lawrie Brown.
Designing Security In Web Applications Andrew Tomkowiak 10/8/2013 UW-Platteville Software Engineering Department
OWASP Mobile Top 10 Why They Matter and What We Can Do
Dr. Lo’ai Tawalbeh 2007 INCS 741: Cryptography Chapter 1:Introduction Dr. Lo’ai Tawalbeh New York Institute of Technology (NYIT) Jordan’s Campus
Lecture 18 Page 1 CS 111 Online Design Principles for Secure Systems Economy Complete mediation Open design Separation of privileges Least privilege Least.
Cryptography and Network Security
Eng. Wafaa Kanakri Second Semester 1435 CRYPTOGRAPHY & NETWORK SECURITY Chapter 1:Introduction Eng. Wafaa Kanakri UMM AL-QURA UNIVERSITY
 Prototype for Course on Web Security ETEC 550.  Huge topic covering both system/network architecture and programming techniques.  Identified lack.
Lesson 20-Wireless Security. Overview Introduction to wireless networks. Understanding current wireless technology. Understanding wireless security issues.
General Key Management Guidance. Key Management Policy  Governs the lifecycle for the keying material  Hope to minimize additional required documentation.
Network Security Lecture 9 Presented by: Dr. Munam Ali Shah.
SEC835 Practical aspects of security implementation Part 1.
Chapter 2. Core Defense Mechanisms. Fundamental security problem All user input is untrusted.
Lecture 16 Page 1 Advanced Network Security Perimeter Defense in Networks: Virtual Private Networks Advanced Network Security Peter Reiher August, 2014.
CSCE 522 Secure Software Development Best Practices.
APPLICATION PENETRATION TESTING Author: Herbert H. Thompson Presentation by: Nancy Cohen.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Action SecWG1012:9 “Investigate how role-based access, in compliance with FIPS 140-2, can be used by flight crypto systems.” Where this question comes.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Topic 1 – Introduction Huiqun Yu Information Security Principles & Applications.
IT Risks and Controls Revised on Content Internal Control  What is internal control?  Objectives of internal controls  Types of internal controls.
Lesson 19-E-Commerce Security Needs. Overview Understand e-commerce services. Understand the importance of availability. Implement client-side security.
Operating Systems Security
CSCE 201 Secure Software Development Best Practices.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Slide 1 Security Engineering. Slide 2 Objectives l To introduce issues that must be considered in the specification and design of secure software l To.
Design Principles and Common Security Related Programming Problems
Dos and Don’ts of Client Authentication on the Web Kevin Fu, Emil Sit, Kendra Smith, Nick Feamster Presented: Jesus F. Morales.
By Ramesh Mannava.  Overview  Introduction  10 secure software engineering topics  Agile development with security development activities  Conclusion.
PREPARED BY: MS. ANGELA R.ICO & MS. AILEEN E. QUITNO (MSE-COE) COURSE TITLE: OPERATING SYSTEM PROF. GISELA MAY A. ALBANO PREPARED BY: MS. ANGELA R.ICO.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
Lecture 2 Page 1 CS 236 Online Security Policies Security policies describe how a secure system should behave Policy says what should happen, not how you.
Non Functional Testing. Contents Introduction – Security Testing Why Security Test ? Security Testing Basic Concepts Security requirements - Top 5 Non-Functional.
Computer Security: Principles and Practice First Edition by William Stallings and Lawrie Brown Lecture slides by Lawrie Brown Chapter 17 – IT Security.
The Fallacy Behind “There’s Nothing to Hide” Why End-to-End Encryption Is a Must in Today’s World.
Securing Network Servers
SE-1021 Software Engineering II
CSCE 548 Secure Software Development Risk-Based Security Testing
CSCE 548 Secure Software Development Use Cases Misuse Cases
Research for Cyber Security Warwick University Industry Day 2018
AMI Security Roadmap April 13, 2007.
ONLINE SECURE DATA SERVICE
Engineering Secure Software
Presentation transcript:

Avoiding The Top 10 Software Security Design Flaws Summary of Report Boston.NET Architecture Group Robert Hurlbut Presented 9/17/2014 This summary is distributed under a Common Commons BY-SA License (

Notes on Summary This is a summary of the report “Avoiding The Top 10 Software Security Design Flaws”. The slides, headings, and bullet points in this summary primarily come directly from the report as reviewed by the presenter. This summary is not endorsed by or affiliated in any way with the IEEE Computer Society or the Center for Secure Design (CSD).

Center for Secure Design (CSD) The IEEE Computer Society created the Center for Secure Design (CSD) with a foundational workshop in April, 2014 The purpose of the workshop was to bring together software security experts who are real practitioners from industry, academia and government to address the problem of secure design. Participants in the CSD foundational workshop included experts from major corporations such as RSA, EMC, HP, Google, Twitter, and Intel, along with key academics in the field.

The CSD Mission The IEEE Computer Society's CSD will gather software security expertise from industry, academia and government. The CSD provides guidance on: – Recognizing software system designs that are likely vulnerable to compromise. – Designing and building software systems with strong, identifiable security properties. The CSD is part of the IEEE Computer Society's larger cybersecurity initiative, launched in 2014.

Report online.pdf

Bugs vs Flaws While a system may always have implementation defects or “bugs,” we have found that the security of many systems is breached due to design flaws or “flaws.” We believe that if organizations design secure systems, which avoid such flaws, they can significantly reduce the number and impact of security breaches. A bug is an implementation-level software problem. A flaw, by contrast, is a problem at a deeper level … it is the result of a mistake or oversight at the design level.

Secure Design Flaws 1.Incorrect trust assumptions 2.Broken authentication mechanisms that can be bypassed or tampered with 3.Neglecting to authorize after authentication 4.Lack of strict separation between data and control instructions, and as a result processing control instructions received from an untrusted source 5.Not explicitly validating all data 6.Misuse of cryptography 7.Failure to identify sensitive data and how they should be handled 8.Failure to consider the users 9.Misunderstanding how integrating external components change an attack surface 10.Brittleness in the face of future changes made to objects and actors

Secure Design Recommendations 1.Earn or give, but never assume, trust 2.Use an authentication mechanism that cannot be bypassed or tampered with 3.Authorize after you authenticate 4.Strictly separate data and control instructions, and never process control instructions received from untrusted sources 5.Define an approach that ensures all data are explicitly validated 6.Use cryptography correctly 7.Identify sensitive data and how they should be handled 8.Always consider the users 9.Understand how integrating external components changes your attack surface 10.Be flexible when considering future changes to objects and actors

1. Earn or give, but never assume, trust Confirm sensitive material really does need to be stored on the client. If IP or sensitive material must be stored or sent to the client, the system should be designed to cope with potential compromise. Make sure all data received from an untrusted client are properly validated before proceeding (more on this later).

2. Use an authentication mechanism that cannot be bypassed or tampered with Use of authentication techniques that don’t fall into the category of something you know (i.e. password), something you are (i.e. biometric), or something you have (i.e. smartphone) may allow users to access a system or service they shouldn’t. A single authentication mechanism leverage one or more factors as per an application’s requirements – serves as a logical “choke point”. Authentication credentials have limited lifetimes, be unforgeable, and be stored so that if stolen they can not be used by the thief to pose as legitimate users.

3. Authorize after you authenticate Always follow this order. Don’t assume authorization automatically after authentication. Use a common infrastructure (e.g. system library or back end) to authorize users.

4. Strictly separate data and control instructions, and never process control instructions received from untrusted sources Consider control-flow integrity and segregation of control and potentially untrusted data as important design goals. A design that relies on ability to transform data into code should be careful of: – Eval functions – Query languages – Exposed reflection

5. Define an approach that ensures all data are explicitly validated Design or use centralized validation mechanism. Transform data into canonical form. Use common libraries of validation primitives. Input validation requirements are often state- dependent. Explicitly re-validate assumptions “nearby” code that relies on them. Use implementation-language-level types to capture assumptions about data validity.

6. Use cryptography correctly Avoid common pitfalls of using cryptography: – Rolling your own cryptographic algorithms or implementations – Misuse of libraries and algorithms – Poor key management – Randomness that is not random – Failure to centralize cryptography – Failure to allow for algorithm adaptation and evolution Make use of proven algorithms and libraries

7. Identify sensitive data and how they should be handled Identify sensitive data and determine how to protect it appropriately. Data sensitivity is context-sensitive dependent on regulation, company policy, contractual obligations, and user expectation. Identify trust boundaries for when data sets transit between systems and implement proper data protection policies.

8. Always consider the users Create designs that facilitate secure configuration and use by those interested in doing so. Use designs that motivate and incentivize secure use among those not particularly interested in software security. Use designs that prevent or mitigate abuse from those who intend to weaken or compromise the system.

9. Understand how integrating external components changes your attack surface It is a common adage of software security that whenever possible, functionality should be achieved by the reuse of tried-and-true pieces of previously tested and validated software, instead of developing from scratch every time. Isolate external components as much as your required functionality permits; use containers, sandboxes, and drop privileges before entering uncontrolled code. Document everything. Design for flexibility.

10. Be flexible when considering future changes to objects and actors Software security must be designed for change, rather than being fragile, brittle, and static. Design for secure updates. Design for security properties changing over time; for example, when code is updated. Design with the ability to isolate or toggle functionality. Design for changes to objects intended to be kept secret. Design for changes in the security properties of components beyond your control. Design for changes to entitlements.

Get Involved As stated in the mission statement, the IEEE Computer Society Center for Secure Design will provide guidance on: – Recognizing software system designs that are likely vulnerable to compromise. – Designing and building software systems with strong, identifiable security properties. This document is just one of the practical artifacts that the Center for Secure Design will deliver. Interested in keeping up with Center for Secure Design activities? on Twitter, catch up with us via cybersecurity.ieee.org, or contact Kathy Clark-Fisher, Manager, New Initiative Development (kclark-

Resources McGraw-on-the-IEEE-Center-for-Secure- Design McGraw-on-the-IEEE-Center-for-Secure- Design