Tutorial T7 – State of the Practice: Secure Coding

Mr. Robert C. Seacord, CERT   Software Engineering Institute

Tuesday, December 7th, Full Day

State of the practice courses provide an introduction and overview of the current state of research in a particular discipline with the intent of informing beginning doctoral students an overview of research, technology and outstanding problems in a particular discipline. This state of the practice tutorial describes the state of the practice in secure C language programming as defined by the C99 standard and the emerging C1X standard. The tutorial also identifies outstanding problems in these standards, and identifies where further research is necessary. The tutorial also describes The CERT C Secure Coding Standard as well as the work and progress of the WG14 C Secure Coding Guidelines study group.

Outline

  1. History of C language programming. Origins. The C90, C99, and C1X standards. Common vulnerabilities. The role of secure coding standards.
  2. C programming language and library research. Implementation-defined, unspecified, and undefined behaviors. Poorly designed library functions. Poorly understood behaviors. Dangerous optimizations. Unmanaged environments. Encoding and decoding pointers. Security attributes. Concurrency.
  3. C1X improvements. Annex K Bounds-checking interfaces. Annex L Analyzability. Static Assertions. File I/O.
  4. Analysis Research. Static analysis. Dynamic analysis. Safe secure C/C++ methods. Model checking. Contributing analysis tools: case studies.
  5. Runtime protection schemes research. Randomization. W^X. Pointer encoding/decoding. Secure heap. Capability-based systems.
  6. Additional Research Areas. Underlying causes of vulnerabilities, effective and enforceable secure coding guidelines, and effectiveness of static analysis in analyzing open source software.

Prerequisites

Tutorial participants should be familiar with C language programming. Practicing C and C++ programmers will derive the greatest benefit but programmers who use other languages such as Java will also find the tutorial useful.

About the Instructor

Mr. Robert C. Seacord is the author of The CERT C Secure Coding Standard (Addison-Wesley, 2008) and Secure Coding in C and C++ (Addison-Wesley, 2005), providing guidance on secure practices in C and C++ programming. Seacord leads the Secure Coding Initiative at CERT, located in Carnegie Mellon's Software Engineering Institute (SEI) in Pittsburgh, PA. CERT's Secure Coding Initiative develops and promulgates secure coding practices and techniques, such as CERT's Secure Code Analysis Laboratory (SCALe), the first to certify software for conformance with secure coding standards. His research group develops publicly available tools for the analysis and development of secure software. Seacord is an adjunct professor in the Carnegie Mellon University School of Computer Science and in the Information Networking Institute and frequent speaker throughout the world. Seacord is also a technical expert for the ISO/IEC JTC1/SC22/WG14 international standardization working group for the C programming language.