01.07.2016 Views

SEI CERT C Coding Standard

tqcylJ

tqcylJ

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Introduction - How This <strong>Coding</strong> <strong>Standard</strong> Is Organized<br />

• Is the vulnerability being exploited in incidents reported to <strong>CERT</strong> or other incident response<br />

teams?<br />

• Is the Internet infrastructure (for example, routers, name servers, critical Internet protocols) at<br />

risk because of this vulnerability?<br />

• How many systems on the Internet are at risk from this vulnerability?<br />

• What is the impact of exploiting the vulnerability?<br />

• How easy is it to exploit the vulnerability?<br />

• What are the preconditions required to exploit the vulnerability?<br />

Because the questions are answered with approximate values based on our own judgments and<br />

may differ significantly from one site to another, readers should not rely too heavily on the metric<br />

for prioritizing their response to vulnerabilities. Rather, this metric may be useful for separating<br />

the serious vulnerabilities from the larger number of less severe vulnerabilities described in the<br />

database. Because the questions are not all weighted equally, the resulting score is not linear; that<br />

is, a vulnerability with a metric of 40 is not twice as severe as one with a metric of 20.<br />

An alternative vulnerability severity metric is the Common Vulnerability Scoring System<br />

(CVSS).<br />

1.13 How This <strong>Coding</strong> <strong>Standard</strong> Is Organized<br />

This coding standard is organized into 15 chapters containing rules in specific topic areas followed<br />

by four appendices. Appendix A contains the bibliography. Appendix B lists the definitions<br />

of terms used throughout the standard. Appendix C lists the undefined behaviors from the C<br />

<strong>Standard</strong>, Annex J, J.2 [ISO/IEC 9899:2011], numbered and classified for easy reference. These<br />

numbered undefined behaviors are referenced frequently from the rules. Appendix D lists unspecified<br />

behaviors from the C <strong>Standard</strong>, Annex J, J.2 [ISO/IEC 9899:2011]. These unspecified behaviors<br />

are occasionally referenced from the rules as well.<br />

Most rules have a consistent structure. Each rule in this standard has a unique identifier, which is<br />

included in the title. The title and the introductory paragraphs define the rule and are typically followed<br />

by one or more pairs of noncompliant code examples and compliant solutions. Each rule<br />

also includes a risk assessment, related guidelines, and a bibliography (where applicable). Rules<br />

may also include a table of related vulnerabilities. The recommendations on the <strong>CERT</strong> <strong>Coding</strong><br />

<strong>Standard</strong>s wiki are organized in a similar fashion.<br />

1.13.1 Identifiers<br />

Each rule and recommendation is given a unique identifier. These identifiers consist of three<br />

parts:<br />

• A three-letter mnemonic representing the section of the standard<br />

• A two-digit numeric value in the range of 00 to 99<br />

• The letter C indicating that this is a C language guideline<br />

<strong>SEI</strong> <strong>CERT</strong> C <strong>Coding</strong> <strong>Standard</strong>: Rules for Developing Safe, Reliable, and Secure Systems 14<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!