April / May 2014


NewEdition
News 

Robert Seacord and David Svoboda have both been selected for the JavaOne 2014 Security Track review team. JavaOne 2014 is Oracle's flagship software developers conference event for Java. Security has been a focus at the conference for many years, but last year Oracle brought security to the forefront by including it as a track. If you have ideas for interesting Java security sessions, we would be delighted to review them. The JavaOne CFP is open until April 14, 2014. Two presentations have already been accepted early for this event: David Svoboda's presentation Anatomy of Another Java Zero-Day Exploit and Jim Manico's Leveraging Open Source for Secure Java Website Construction. Besides being a JavaOne Rock Star, Jim got us started years ago working on The CERT Oracle Secure Coding Standard for Java.

The CERT C Coding Standard has gone to press, and we are now waiting ever-so-patiently for the advance office copies. We are expecting the book to be a huge success, because we are unable to learn from history.

Our Mobile SCALe team continues to develop secure coding rules and guidelines for Android apps plus to do research and development of compliance checkers. We are currently developing a checker that looks for taint flows in Android apps, where a data source is sensitive and a dataflow containing it can reach a sink. The research challenge we focus on is to develop an analysis to determine taint flow endpoints with the following (sometimes conflicting) goals in mind: precision, soundness, speed, and conservation of memory/disk space. We recently designed and implemented a novel taint flow analyzer for sets of apps. It combines and augments the existing Android dataflow analyses of FlowDroid (which analyzes for intracomponent taint flows) and Epicc (which analyzes intercomponent intent communication)
to precisely track both intercomponent and intracomponent dataflow in a set of Android applications. Our analysis of a given set of apps takes place in two phases. In the first phase, we determine the dataflows enabled individually by each app and the conditions under which these are possible. In the second phase, we build on the first phase's results to enumerate the potentially dangerous dataflows enabled by the whole set of applications. Our taint flow analyzer prototype for static analysis of sets of Android apps, DidFail (Droid Intent Dataflow Analysis for Information Leakage), was completed in March 2014. Our team is continuing to do research and development with this analyzer, with a special focus on methods to efficiently increase precision. Development of secure coding rules continues on the CERT secure coding for Android wiki, and our previous work is described in the technical report Mobile SCALe: Rules and Analysis for Secure Java and Android Coding and our recent SEI blogpost Secure Coding for the Android Platform.

Many of our new Android secure coding rules and guidelines need work to be completed according to the standard format. We haven't announced them previously in the newsletter because they aren't done. For instance, DRD17-J and DRD18-J both need the noncompliant examples and compliant solutions to be added. If you are an Android, Java, or C expert and would like to contribute to completing these rules, we'd like to talk with you. We will give you guidance on filling in the missing content and would check your work before it goes public. If interested, please contact us. Some Android rules and guidelines that need completion are DRD05-J, DRD06-J, DRD07-J, DRD11-J, DRD12-J, DRD13-J, DRD14-J, DRD16-J, DRD17-J, and DRD18-J.

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
Language Standards Updates
  
CERT C Secure Coding Standard 
Editors: Martin Sebor (Cisco Systems), Aaron Ballman (SEI) 

No C rules were added.

Changed

POS39-C. Use the correct byte ordering when transferring data between systems  

The code samples now cast the return value of recv() to int for proper comparison
with −1. They also detect if recv() reads an insufficient number of bytes.

  

FIO15-C. Ensure that file operations are performed in a secure directory 

We fixed a portability bug in the secure_dir() function to prevent an infinite loop
on Mac OS X.

  

MEM05-C. Avoid large stack allocations 

In the code example, which computes a Fibonacci number, we note that the stack space used by the code grows linearly rather than exponentially. The code takes exponential time but not exponential space.  

  

ARR38-C. Guarantee that library functions do not form invalid pointers
We added a brief description of the OpenSSL "Heartbleed" vulnerability to Related Vulnerabilities.   

  

CERT C++ Secure Coding Standard 
Editors: Martin Sebor (Cisco Systems), Aaron Ballman (SEI)

No C++ rules were added.

Changed

ARR44-CPP. Predicate functors should not have non-static non-const data fields
Added "non-const data fields" to the title, as the rule does not apply to constant non-static  
data fields. 

CERT Oracle Secure Coding Standard for Java
Editors: Adam O'Brien (Oracle), David Svoboda (SEI)

Added

DRD19-J. Properly verify server certificate on SSL/TLS
Android apps that use SSL/TLS protocols for secure communication should properly verify server certificates.
 
Changed

Analysis of Android Applicability: CERT's Java Coding Guidelines
Finalized analysis of Android applicability for 40 of the Java rules.

CERT Perl Secure Coding Standard 
Editor: David Svoboda (SEI) 

No Perl rules were added, removed, deprecated, or substantively changed last month.

Upcoming 

Upcoming Events and Training 

 

Mini-Track Announcement | Hawaii International Conference on Systems Sciences

Software Security for Mobile Platforms



January 5-8, 2015
Grand Hyatt Kauai, Hawaii

TSP Symposium: Call for Submissions



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.

Security topics needed.
Responding to the relentless increase in the rate of cyber attacks. How can attention to security throughout the life-cycle requirements, design, and coding-be applied to assure that the systems we build are safe and secure?

OurPeople
Our People

In the eNewsletter, we highlight staff members behind our secure coding research. This month we feature Will Klieber.

Will Klieber is a Software Security Researcher at CERT. Since joining
CERT in July 2013, he has focused on developing automated techniques for analyzing Android apps to detect vulnerabilities and leakage of sensitive information.  Prior to joining CERT, he was a full-time doctoral student at Carnegie Mellon University, where he worked in the area of Quantified Boolean Formulas (QBF) and QBF's application to verification of hardware
and software.

Join the SEI CERT Secure Coding Community