1 OWG: Vulnerability ISO working group on Guidance for Avoiding Vulnerabilities through language selection and use. ISO/IEC JTC 1/SC 22/ OWGV N0139.

Slides:



Advertisements
Similar presentations
Topic Reviews For Unit ET156 – Introduction to C Programming Topic Reviews For Unit
Advertisements

Requirements Engineering Processes – 2
Planning Reports and Proposals
Software Requirements
Elements of an Effective Safety and Health Program
Chapter 5: Control Structures II (Repetition)
Final and Abstract Classes
Chapter 24 Quality Management.
Chapter 7 Constructors and Other Tools. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 7-2 Learning Objectives Constructors Definitions.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10 Servlets and Java Server Pages.
Chapter 3 Introduction to Quantitative Research
Chapter 3 Introduction to Quantitative Research
1 EuroSys 2010, Paris, France Shuo Chen, Hong Chen, Manuel Caballero Microsoft Corporation Purdue University Redmond, WA, USA West Lafayette, IN, USA April.
For SIGAda Conference, 2005 November, Atlanta 1 A New Standards Project on Avoiding Programming Language Vulnerabilities Jim Moore Liaison Representative.
Blue Pilot Consulting, Inc. 1 A new type of Working Group used for a new SC22 Working Group OWG: Vulnerability John Benito JTC 1/SC 22 WG14.
For OWGV Meeting #1, 2006 June, Washington, DC, USA 1D Terms of Reference: ISO/IEC Project , Guidance to Avoiding Vulnerabilities in Programming.
1 Report of Progress of ISO/IEC 24772, Programming Language Vulnerabilities, in ISO/IEC JTC 1/SC 22 John Benito, Convener Jim Moore, Secretary ISO/IEC.
1 OWG: Vulnerability ISO working group on Guidance for Avoiding Vulnerabilities through language selection and use John Benito, Convener Jim Moore, Secretary.
For C Language WG, 2006 March, Berlin 1 A New Standards Project on Avoiding Programming Language Vulnerabilities Jim Moore Liaison Representative from.
© 2006 Carnegie Mellon University CERT Secure Coding Standards Robert C. Seacord.
1 ISO/IEC JTC 1/SC 22/WG 23 ISO working group on Guidance for Avoiding Vulnerabilities through language selection and use John Benito, Convener Jim Moore,
For OWGV Meeting #1, 2006 June, Washington, DC, USA 1D Conveners Remarks, Meeting #1 of ISO/IEC JTC 1/SC 22/OWG:V Jim Moore Convener, ISO/IEC JTC.
Business Transaction Management Software for Application Coordination 1 Business Processes and Coordination.
1Running title of presentation PR/mo/item ID Date Updates on work in Progress in ISO United Nations Road Safety Collaboration 9th meeting Geneva, 17 and.
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Title Subtitle.
0 - 0.
DIVIDING INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
Addition Facts
Making the System Operational
© 2003 School of Computing, University of Leeds SY32 Secure Computing, Lecture 16 Secure Coding in Java and.NET Part 1: Fundamentals.
Lecture 10 Flow of Control: Loops (Part 2) COMP1681 / SE15 Introduction to Programming.
Tintu David Joy. Agenda Motivation Better Verification Through Symmetry-basic idea Structural Symmetry and Multiprocessor Systems Mur ϕ verification system.
Welcome 2-Day Conference – Project Management in Construction Sector 1.
1 Implementing Internet Web Sites in Counseling and Career Development James P. Sampson, Jr. Florida State University Copyright 2003 by James P. Sampson,
Configuration management
Software change management
1 Dr. Ashraf El-Farghly SECC. 2 Level 3 focus on the organization - Best practices are gathered across the organization. - Processes are tailored depending.
Quality Assurance/Quality Control Plan Evaluation February 16, 2005.
1 Quality Indicators for Device Demonstrations April 21, 2009 Lisa Kosh Diana Carl.
S-Curves & the Zero Bug Bounce:
Testing Workflow Purpose
1 University of Utah – School of Computing Computer Science 1021 "Thinking Like a Computer"
1 1 Slide © 2008 Thomson South-Western. All Rights Reserved Slides by JOHN LOUCKS St. Edwards University.
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
1 The C Language An International Standard CIS2450 Professional Aspect of Software Engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management.
Lecture 8: Testing, Verification and Validation
Addition 1’s to 20.
25 seconds left…...
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 1,3 Slide 1 Software Engineering Software Engineering.
Week 1.
We will resume in: 25 Minutes.
Chapter 12 Analyzing Semistructured Decision Support Systems Systems Analysis and Design Kendall and Kendall Fifth Edition.
1 Unit 1 Kinematics Chapter 1 Day
Chapter 13 – Introduction to Classes
© 2007 BST. All rights reserved. Confidential Information. SLU – 1 PDS_139 (0503) L2 Applying Problem- Solving Tools.
User Defined Functions Lesson 1 CS1313 Fall User Defined Functions 1 Outline 1.User Defined Functions 1 Outline 2.Standard Library Not Enough #1.
12-Apr-15 Analysis of Algorithms. 2 Time and space To analyze an algorithm means: developing a formula for predicting how fast an algorithm is, based.
Names and Bindings.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development.
QinetiQ Proprietary AN ISO standard for high integrity software.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Chapter 6 Buffer Overflow. Buffer Overflow occurs when the program overwrites data outside the bounds of allocated memory It was one of the first exploited.
1 Software Testing and Quality Assurance Lecture 33 – Software Quality Assurance.
07 Coding Conventions. 2 Demonstrate Developing Local Variables Describe Separating Public and Private Members during Declaration Explore Using System.exit.
Hussein Alhashimi. “If you can’t measure it, you can’t manage it” Tom DeMarco,
Software Requirements
C++ and Programming Language Vulnerabilities
Presentation transcript:

1 OWG: Vulnerability ISO working group on Guidance for Avoiding Vulnerabilities through language selection and use. ISO/IEC JTC 1/SC 22/ OWGV N0139

2 John Benito JTC 1/SC 22 WG14 Convener INCITS CT 22 Vice Chairman JTC 1/SC 22 OWG:V Convener

33 The Problem Any programming language has constructs that are imperfectly defined, implementation dependent or difficult to use correctly. As a result, software programs sometimes execute differently than intended by the writer. In some cases, these vulnerabilities can be exploited by hostile parties. – Can compromise safety, security and privacy. – Can be used to make additional attacks.

44 Complicating Factors The choice of programming language for a project is not solely a technical decision and is not made solely by software engineers. Some vulnerabilities cannot be mitigated by better use of the language but require mitigation by other methods, e.g. review, static analysis.

55 An example While buffer overflow examples can be rather complex, it is possible to have very simple, yet still exploitable, stack based buffer overflows: An Example in the C programming language: #include #define BUFSIZE 256 int main(int argc, char **argv) { char buf[BUFSIZE]; strcpy(buf, argv[1]); }

66 Example Buffer overflows generally lead to the application halting or crashing. Other attacks leading to lack of availability are possible, that can include putting the program into an infinite loop. Buffer overflows often can be used to execute arbitrary code, which is usually outside the scope of a program's implicit security policy.

77 Vulnerability Template The body of Technical Report describes vulnerabilities in a generic manner, including: Brief description of application vulnerability Cross-reference to enumerations, e.g. CWE Categorizations by selected characteristics Description of failure mechanism, i.e. how coding problem relates to application vulnerability Points at which the causal chain could be broken Assumed variations among languages Ways to avoid the vulnerability or mitigate its effects Annexes will provide language-specific treatments of each vulnerability.

88 Description of vulnerability A product uses an incorrect maximum or minimum value that is 1 more or 1 less than the correct value. This usually arises from one of a number of situations where the bounds as understood by the developer differ from the design, such as; confusion between the need for and >= in a test confusion as to the sentinels (start point and end point) for an algorithm, such as beginning an algorithm at 1 when the underlying structure is indexed from 0, beginning an algorithm at 0 when the underlying structure is indexed from 1 (or some other start point) or using the length or a structure as the count mechanism instead of the sentinel values

99 Cross-reference to enumerations CWE: 193. Off-by-one Error

10 Description of failure mechanism an out-of bounds access to an array (buffer overflow), an incomplete comparisons and calculation mistakes, a read from the wrong memory location, or an incorrect conditional. Such incorrect accesses can cause calculation errors or references to illegal locations, resulting in potentially unbounded behaviour. Off-by-one errors are not exploited as often in attacks because they are difficult to identify and exploit externally, but the calculation errors and boundary-condition errors can be severe.

11 Ways to avoid the vulnerability Off-by-one errors are a common defect that is also a code quality issue As with most quality issues, a systematic development process, use of development/analysis tools and thorough testing are all common ways of preventing errors, and in this case, off-by-one errors. Where references are being made to structure indices and the languages provide ways to specify the whole structure or the starting and ending indices explicitly (eg Ada provides xxx'First and xxx'Last for each dimension), these should be used always. Where the language doesn't provide these, constants can be declared and used in preference to numeric literals. Coding standards can be written such that either the sentinel values or the length of all arrays is used. Ideally length should be a calculated function of the indices.

12 OWG: Vulnerability Status Response to NP Ballot comments is completed, see SC 22 N4027 Project is organized and on schedule to produce a document in 2009 Current draft passed the first SC 22 ballot The project has two officers – Convener/Project Editor, John Benito – Secretary, Jim Moore

13 OWG: Vulnerability Status Seven meetings have been held, hosted by US Italy Canada UK Meetings planned through 2008, hosted by Netherlands US Germany reflector, Wiki and Web site are used during and between meetings More information

14 Meeting Schedule for OWG:V Meeting # /3 INCITS/Plum Hall, Kona, Hawaii, USA Meeting # /14 INCITS/SEI, Pittsburgh, PA, USA Meeting # /11 NEN/ACE, Amsterdam, NL Meeting # INCITS/Blue Pilot, Washington DC, USA Meeting # – Stuttgart, Germany

15 OWG: Vulnerability Participants Canada Germany Italy Japan France United Kingdom USA – CT 22 SC 22/WG 9 SC 22/WG14 MDC (Mumps) SC 22/WG 5, INCITS J3 (Fortran) SC 22/WG 4, INCITS J4 (Cobol) ECMA (C#, C++CLI) RT/SC Java MISRA C/C++ CERT

16 OWG:Vulnerability Product A type III Technical Report A document containing information of a different kind from that which is normally published as an International Standard Project is to work on a set of common mode failures that occur across a variety of languages Not all vulnerabilities are common to all languages, that is, some manifest in just a language The product will not contain normative statements, but information and suggestions

17 OWG:Vulnerability Product No single programming language or family of programming languages is to be singled out As many programming languages as possible should be involved Need not be just the languages defined by ISO Standards

18 Approach to Identifying Vulnerabilities Empirical approach: Observe the vulnerabilities that occur in the wild and describe them, e.g. buffer overrun, execution of unvalidated remote content Analytical approach: Identify potential vulnerabilities through analysis of programming languages This just might help in identifying tomorrows vulnerabilities.

19 Audience Safety: Products where it is critical to prevent behavior which might lead to human injury, and it is justified to spend additional development money Security: Products where it is critical to secure data or access, and it is justified to spend additional development money Predictability: Products where high confidence in the result of the computation is desired Assurance: Products to be developed for dependability or other important characteristics

20 Measure of Success Provide guidance to users of programming languages that: Assists them in improving the predictability of the execution of their software even in the presence of an attacker Informs their selection of an appropriate programming language for their job Provide feedback to programming language standardization groups, resulting in the improvement of programming language standards.

21 OWG: Vulnerability Summary We are making progress! meetings scheduled out over a year Participation is good and is made up of a wide variety of technical expertise. Have a document that is ready for the first SC 22 ballot (registration). On track to publish in 2009.