...
Replacing secure functions with less secure functions is a very risky practice because developers can be easily fooled into trusting the function to perform a security check that is absent. This may be a concern, for example, as developers attempt to adopt more secure functions, such as the C11 Annex K functions, that might not be available on all platforms. (See STR07-C. Use the bounds-checking interfaces for string manipulation.)
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
PRE09-C | High | Likely | Medium | P18 | L1 |
Automated Detection
| Tool | Version | Checker | Description | ||||
|---|---|---|---|---|---|---|---|
| Astrée |
|
| Supported, but no explicit checker | |||||||||
| Polyspace Bug Finder |
| Dangerous functions cause possible buffer overflow in destination buffer Obsolete routines can cause security vulnerabilities and portability issues | |||||||
| PRQA QA-C |
| 5003 | Fully implemented |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
| SEI CERT C++ Coding Standard | VOID PRE09-CPP. Do not replace secure functions with less secure functions |
| ISO/IEC TR 24772:2013 | Executing or Loading Untrusted Code [XYS] |
| MITRE CWE | CWE-684, Failure to provide specified functionality |
Bibliography
| [IEEE Std 1003.1:2013] | XSH, System Interfaces, vsnprintf, vsprintf |
| [Seacord 2013] | Chapter 6, "Formatted Output" |
| [VU#654390] |
...
...