 News
Robert Seacord is presenting at the TB3335-Why are we still not programming securely? at the HP Protect 2014 conference that will be held September 8-11 at the Washington Hilton in Washington, D.C. Good seats are still available. Aaron Ballman has begun his update to the CERT C++ Secure Coding Standard, which is being formulated on the C++ Coding Standard Development Guidelines page. Please feel free to join the discussion as we plan this major update. Automated detection mappings have been updated, or are underway, for several analyzers, including PRQA QA-C, Coverity Prevent, GrammaTech CodeSonar, and SonarQube Plugin. The SEI report titled Performance of Compiler-Assisted Memory Safety Checking, authored by David Keaton and Robert Seacord, has been published on the SEI website. This technical note describes the criteria for deploying a compiler-based memory safety checking tool and the performance that can be achieved with two such tools whose source code is freely available. David Svoboda and Robert Seacord will be presenting Inside the CERT Oracle Secure Coding Standard for Java [CON2368] at JavaOne 2014. David Svoboda and Yozo Toda, lead analyst at the JPCERT Coordination Center, will be presenting Anatomy of Another Java Zero-Day Exploit [CON2120]. We continue to perform Source Code Analysis Laboratory (SCALe) assessments, which has led to a smattering of improvements to The CERT Oracle Secure Coding Standard for Java as we evolve rules to be clearer and more precise and to simplify conformance.
How are you using the CERT Secure Coding Standards?
As a reader of this eNewsletter, we want to hear from you. Submit your comments about how you are using CERT Secure Coding Standards.

Language Standards Updates
CERT C Coding Standard
Editors: Martin Sebor (Cisco Systems, Inc.), Aaron Ballman (SEI/CERT)
Added
Changed
Removed
- EXP17-C. Do not use a bitwise operator in place of logical operator, or vice versa
CERT C++ Secure Coding Standard
Editors: Martin Sebor (Cisco Systems, Inc.), Aaron Ballman (SEI/CERT)
Added
Changed
Removed
The following rules were removed as being covered by the CERT C Coding Standard:
- PRE31-CPP. Avoid side-effects in arguments to unsafe macros
- EXP31-CPP. Avoid side-effects in assertions
- EXP34-CPP. Ensure a null pointer is not dereferenced
- EXP37-CPP. Call variadic functions with the arguments intended by the API
- EXP38-CPP. Do not modify constant values
- ARR31-CPP. Use consistent array notation across all source files
- STR30-CPP. Do not attempt to modify string literals
- STR31-CPP. Guarantee that storage for character arrays has sufficient space for character data and the null terminator
- STR32-CPP. Null-terminate character arrays as required
- STR34-CPP. Cast characters to unsigned types before converting to larger integer sizes
- STR37-CPP. Arguments to character handling functions must be representable as an unsigned char
- MEM35-CPP. Allocate sufficient memory for an object
- FIO32-CPP. Do not perform operations on devices that are only appropriate for files
- FIO33-CPP. Detect and handle input output errors resulting in undefined behavior
- FIO38-CPP. Do not use a copy of a FILE object for input and output
- FIO34-CPP. Use int to capture the return value of character IO functions
- FIO35-CPP. Use feof() and ferror() to detect end-of-file and file errors when sizeof(int) == sizeof(char)
- FIO36-CPP. Do not assume a new-line character is read when using fgets()
- FIO37-CPP. Do not assume character data has been read
- FIO40-CPP. Reset strings on fgets() failure
- FIO41-CPP. Do not call getc() or putc() with stream arguments that have side effects
- FIO44-CPP. Only use values for fsetpos() that are returned from fgetpos()
- ENV30-CPP. Do not modify the string returned by getenv()
- ENV31-CPP. Do not rely on an environment pointer following an operation that may invalidate it
- ENV32-CPP. All atexit handlers must return normally
- ERR32-CPP. Do not rely on indeterminate values of errno
- MSC31-CPP. Ensure that return values are compared against the proper type
- INT30-CPP. Ensure that unsigned integer operations do not wrap
- INT31-CPP. Ensure that integer conversions do not result in lost or misinterpreted data
- INT32-CPP. Ensure that operations on signed integers do not result in overflow
- INT33-CPP. Ensure that division and modulo operations do not result in divide-by-zero errors
- INT34-CPP. Do not shift a negative number of bits or more bits than exist in the operand
- FLP30-CPP. Do not use floating point variables as loop counters
- FLP32-CPP. Prevent or detect domain and range errors in math functions
- FLP34-CPP. Ensure that floating point conversions are within range of the new type
- FLP36-CPP. Beware of precision loss when converting integral types to floating point
CERT Oracle Secure Coding Standard for Java
Editors: Adam O'Brien (Oracle), David Svoboda (SEI/CERT)
AddedThe following new rules are all currently stubs. We will flesh them out soon. Changed Deprecation Candidates Removed FIO15-J. Do not operate on untrusted file links
CERT Secure Coding Standard for Android
Editors: Fred Long, Aberystwyth University, Lori Flynn, SEI/CERT
CERT Perl Secure Coding Standard
Editor: David Svoboda (SEI/CERT)
No Perl rules were added, removed, deprecated, or substantively changed in July and August.
Upcoming Events and Training

Conference:Protect 2014 - September 8-11, Washington Hilton, Washington, D.C. Robert Seacord is presenting TB3335 - Why are we still not programming securely? 
Conference:Java One - September 28-October 2, 2014 - San Francisco, CA David Svoboda and Robert Seacord are presenting Inside the CERT Oracle Secure Coding Standard for Java [CON2368]. David Svoboda and Yozo Toda are presenting Anatomy of Another Java Zero-Day Exploit [CON2120]. 
Conference: TSP Symposium - November 3-6, 2014 The Team Software Process (TSP) Symposium 2014 technical program will go beyond the core methodology of TSP to encompass a broader range of complementary practices that contribute to peak performance on system and software projects. The unifying theme of the conference is quality. Ultimately, a quality product and service must be delivered on time and within budget, be secure, be sustainable, and provide value to end users. Conference:
Recently Released:These programs are for individuals in government and industry organizations that are looking to build, assess, or evaluate an insider threat program while protecting the privacy and civil liberties of their employees.

Our People
In the eNewsletter, we highlight staff members behind our secure coding research. This month we feature David Svoboda. 
David Svoboda has been the primary developer on a diverse set of software development projects at Carnegie Mellon University since 1991. His projects have ranged from hierarchical chip modeling and social organization simulation to automated machine translation (AMT). His KANTOO AMT software, developed in 1996, is still in production use at Caterpillar. He has over 13 years of Java development experience, starting with Java 2, and his Java projects include Tomcat servlets and Eclipse plug-ins. He has taught Secure Coding in C and C++ all over the world to various groups in the military, government, and banking industries.
|