01.07.2016 Views

SEI CERT C Coding Standard

tqcylJ

tqcylJ

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introduction - Development Process<br />

will, in many cases, make it easier to conform to the rules, eliminating many potential sources of<br />

defects.<br />

1.8.2 Levels<br />

Rules and recommendations in this standard are classified into three levels (see How this <strong>Coding</strong><br />

<strong>Standard</strong> is Organized). Emphasis should be placed on conformance Level 1 (L1) rules. Software<br />

systems that have been validated as complying with all Level 1 rules are considered to be L1 conforming.<br />

Software systems can be assessed as L1, L2, or fully conforming, depending on the set<br />

of rules to which the system has been validated.<br />

1.8.3 Deviation Procedure<br />

Strict adherence to all rules is unlikely and, consequently, deviations associated with specific rule<br />

violations are necessary. Deviations can be used in cases where a true-positive finding is uncontested<br />

as a rule violation but the code is nonetheless determined to be correct. An uncontested<br />

true-positive finding may be the result of a design or architecture feature of the software or may<br />

occur for a valid reason that was unanticipated by the coding standard. In this respect, the deviation<br />

procedure allows for the possibility that coding rules are overly strict [Seacord 2013].<br />

Deviations are not granted for reasons of performance or usability. A software system that successfully<br />

passes conformance testing must not contain defects or exploitable vulnerabilities. Deviation<br />

requests are evaluated by the lead assessor, and if the developer can provide sufficient evidence<br />

that the deviation will not result in a vulnerability, the deviation request is accepted.<br />

Deviations are used infrequently because it is almost always easier to fix a coding error than it is<br />

to provide an argument that the coding error does not result in a vulnerability.<br />

1.9 Development Process<br />

The development of a coding standard for any programming language is a difficult undertaking<br />

that requires significant community involvement. The following development process has been<br />

used to create this standard:<br />

1. Rules and recommendations for a coding standard are solicited from the communities involved<br />

in the development and application of each programming language, including the formal<br />

or de facto standards bodies responsible for the documented standard.<br />

2. These rules and recommendations are edited by members of the <strong>CERT</strong> technical staff for<br />

content and style and placed on the <strong>CERT</strong> Secure <strong>Coding</strong> <strong>Standard</strong>s website for comment<br />

and review.<br />

3. The user community may then comment on the publicly posted content using threaded discussions<br />

and other communication tools. Once a consensus develops that the rule or recommendation<br />

is appropriate and correct, the final rule is incorporated into an officially released<br />

version of the secure coding standard.<br />

<strong>SEI</strong> <strong>CERT</strong> C <strong>Coding</strong> <strong>Standard</strong>: Rules for Developing Safe, Reliable, and Secure Systems 12<br />

Software Engineering Institute | Carnegie Mellon University<br />

[DISTRIBUTION STATEMENT A] Approved for public release and unlimited distribution.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!