Mads Chr. Olesen,
René Rydhof Hansen,
Julia L. Lawall,
and Nicolas Palix.
Coccinelle: Tool support for automated {CERT} C Secure Coding Standard certification.
Science of Computer Programming,
pp 28,
November 2012.
ISSN: 0167-6423.
Keyword(s): Automated tool support,
CERT C Secure Coding,
Certification.
Abstract:
Writing correct C programs is well-known to be hard, not least due to the many low-level language features intrinsic to C. Writing secure C programs is even harder and, at times, seemingly impossible. To improve this situation the \{US\} \{CERT\} has developed and published a set of coding standards, the “CERT C Secure Coding Standard”, that (currently) enumerates 122 rules and 180 recommendations, with the aim of making C programs (more) secure. The large number of rules and recommendations makes automated tool support essential for certifying that a given system complies with the standard. In this paper, we report on ongoing work on adapting the Coccinelle bug-finder and program transformation tool, into a tool for analysing and certifying C programs according to, e.g., the \{CERT\} C Secure Coding Standard or the \{MISRA\} (the Motor Industry Software Reliability Association) C standard. We argue that such a tool must be highly adaptable and customisable to each software project as well as to the certification rules required by a given standard. Furthermore, we present current work on integrating Clang (the \{LLVM\} C front-end) as a program analysis component into Coccinelle. Program analysis information, e.g., from data-flow or pointer analysis, is necessary both for more precise compliance checking, i.e., with fewer false positives, and also for enabling more complete checking, i.e., with fewer false negatives, e.g., resulting from pointer aliasing. |
@article{scp:Olesen2012,
title = "Coccinelle: Tool support for automated \{CERT\} C Secure Coding Standard certification ",
journal = "Science of Computer Programming ",
volume = "",
number = "",
pages = "28",
month = {November},
year = "2012",
note = "",
issn = "0167-6423",
doi = "10.1016/j.scico.2012.10.011",
url = "http://www.sciencedirect.com/science/article/pii/S0167642312002031",
author = "Mads Chr. Olesen and René Rydhof Hansen and Julia L. Lawall and Nicolas Palix",
keywords = {Automated tool support, \{CERT\} C Secure Coding, Certification},
abstract = "Writing correct C programs is well-known to be hard, not least due to the many low-level language features intrinsic to C. Writing secure C programs is even harder and, at times, seemingly impossible. To improve this situation the \{US\} \{CERT\} has developed and published a set of coding standards, the “CERT C Secure Coding Standard”, that (currently) enumerates 122 rules and 180 recommendations, with the aim of making C programs (more) secure. The large number of rules and recommendations makes automated tool support essential for certifying that a given system complies with the standard. In this paper, we report on ongoing work on adapting the Coccinelle bug-finder and program transformation tool, into a tool for analysing and certifying C programs according to, e.g., the \{CERT\} C Secure Coding Standard or the \{MISRA\} (the Motor Industry Software Reliability Association) C standard. We argue that such a tool must be highly adaptable and customisable to each software project as well as to the certification rules required by a given standard. Furthermore, we present current work on integrating Clang (the \{LLVM\} C front-end) as a program analysis component into Coccinelle. Program analysis information, e.g., from data-flow or pointer analysis, is necessary both for more precise compliance checking, i.e., with fewer false positives, and also for enabling more complete checking, i.e., with fewer false negatives, e.g., resulting from pointer aliasing. "
}