Modes Of Introduction
Implementation
Applicable Platforms
Language
Name: C (Undetermined)
Name: C++ (Undetermined)
Common Consequences
Scope |
Impact |
Likelihood |
Other | Varies by Context, Quality Degradation, Unexpected State
Note: If the function is used incorrectly, then it could result in security problems. | |
Observed Examples
References |
Description |
| Library has multiple buffer overflows using sprintf() and strcpy() |
| Buffer overflow using strcat() |
| Buffer overflow using strcpy() |
| Buffer overflow using strcpy() |
| Vulnerable use of strcpy() changed to use safer strlcpy() |
| Buffer overflow using strcpy() |
Potential Mitigations
Phases : Build and Compilation // Implementation
Identify a list of prohibited API functions and prohibit developers from using these functions, providing safer alternatives. In some cases, automatic code analysis tools or the compiler can be instructed to spot use of prohibited functions, such as the "banned.h" include file from Microsoft's SDL. [REF-554] [REF-7]
Detection Methods
Automated Static Analysis - Binary or Bytecode
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Bytecode Weakness Analysis - including disassembler + source code weakness analysis
- Binary Weakness Analysis - including disassembler + source code weakness analysis
Cost effective for partial coverage:
- Binary / Bytecode Quality Analysis
- Binary / Bytecode simple extractor - strings, ELF readers, etc.
Effectiveness : High
Manual Static Analysis - Binary or Bytecode
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
- Binary / Bytecode disassembler - then use manual analysis for vulnerabilities & anomalies
Effectiveness : SOAR Partial
Dynamic Analysis with Manual Results Interpretation
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
Cost effective for partial coverage:
- Monitored Virtual Environment - run potentially malicious code in sandbox / wrapper / virtual machine, see if it does anything suspicious
Effectiveness : High
Manual Static Analysis - Source Code
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Manual Source Code Review (not inspections)
Cost effective for partial coverage:
- Focused Manual Spotcheck - Focused manual analysis of source
Effectiveness : High
Automated Static Analysis - Source Code
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Source code Weakness Analyzer
- Context-configured Source Code Weakness Analyzer
Cost effective for partial coverage:
- Warning Flags
- Source Code Quality Analyzer
Effectiveness : High
Automated Static Analysis
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
Effectiveness : SOAR Partial
Architecture or Design Review
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Formal Methods / Correct-By-Construction
- Inspection (IEEE 1028 standard) (can apply to requirements, design, source code, etc.)
Effectiveness : High
Vulnerability Mapping Notes
Justification : This CWE entry is at the Base level of abstraction, which is a preferred level of abstraction for mapping to the root causes of vulnerabilities.
Comment : Carefully read both the name and description to ensure that this mapping is an appropriate fit. Do not try to 'force' a mapping to a lower-level Base/Variant simply to comply with this preferred level of abstraction.
NotesNotes
This weakness is different than CWE-242 (Use of Inherently Dangerous Function). CWE-242 covers functions with such significant security problems that they can never be guaranteed to be safe. Some functions, if used properly, do not directly pose a security risk, but can introduce a weakness if not called correctly. These are regarded as potentially dangerous. A well-known example is the strcpy() function. When provided with a destination buffer that is larger than its source, strcpy() will not overflow. However, it is so often misused that some developers prohibit strcpy() entirely.
References
REF-6
Seven Pernicious Kingdoms: A Taxonomy of Software Security Errors
Katrina Tsipenyuk, Brian Chess, Gary McGraw.
https://samate.nist.gov/SSATTM_Content/papers/Seven%20Pernicious%20Kingdoms%20-%20Taxonomy%20of%20Sw%20Security%20Errors%20-%20Tsipenyuk%20-%20Chess%20-%20McGraw.pdf REF-554
Security Development Lifecycle (SDL) Banned Function Calls
Michael Howard.
https://learn.microsoft.com/en-us/previous-versions/bb288454(v=msdn.10)?redirectedfrom=MSDN REF-7
Writing Secure Code
Michael Howard, David LeBlanc.
https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223 REF-62
The Art of Software Security Assessment
Mark Dowd, John McDonald, Justin Schuh.
Submission
Name |
Organization |
Date |
Date release |
Version |
7 Pernicious Kingdoms |
|
2008-04-11 +00:00 |
2008-04-11 +00:00 |
Draft 9 |
Modifications
Name |
Organization |
Date |
Comment |
Sean Eidemiller |
Cigital |
2008-07-01 +00:00 |
added/updated demonstrative examples |
Eric Dalci |
Cigital |
2008-07-01 +00:00 |
updated Potential_Mitigations, Time_of_Introduction |
CWE Content Team |
MITRE |
2008-09-08 +00:00 |
updated Applicable_Platforms, Relationships, Other_Notes, Taxonomy_Mappings, Weakness_Ordinalities |
CWE Content Team |
MITRE |
2008-11-24 +00:00 |
updated Relationships, Taxonomy_Mappings |
CWE Content Team |
MITRE |
2009-07-27 +00:00 |
updated Relationships |
CWE Content Team |
MITRE |
2010-02-16 +00:00 |
updated Demonstrative_Examples, Other_Notes, References, Relationship_Notes |
CWE Content Team |
MITRE |
2011-06-01 +00:00 |
updated Common_Consequences |
CWE Content Team |
MITRE |
2011-06-27 +00:00 |
updated Common_Consequences, Observed_Examples, Potential_Mitigations, References, Relationships |
CWE Content Team |
MITRE |
2011-09-13 +00:00 |
updated Potential_Mitigations, Relationships, Taxonomy_Mappings |
CWE Content Team |
MITRE |
2012-05-11 +00:00 |
updated References, Related_Attack_Patterns, Relationships, Weakness_Ordinalities |
CWE Content Team |
MITRE |
2014-07-30 +00:00 |
updated Detection_Factors, Relationships, Taxonomy_Mappings |
CWE Content Team |
MITRE |
2017-05-03 +00:00 |
updated Related_Attack_Patterns |
CWE Content Team |
MITRE |
2017-11-08 +00:00 |
updated Causal_Nature, References, Relationships, Taxonomy_Mappings |
CWE Content Team |
MITRE |
2018-03-27 +00:00 |
updated References |
CWE Content Team |
MITRE |
2019-01-03 +00:00 |
updated Relationships, Weakness_Ordinalities |
CWE Content Team |
MITRE |
2020-02-24 +00:00 |
updated Detection_Factors, References, Relationships |
CWE Content Team |
MITRE |
2020-12-10 +00:00 |
updated Demonstrative_Examples |
CWE Content Team |
MITRE |
2021-03-15 +00:00 |
updated Demonstrative_Examples |
CWE Content Team |
MITRE |
2023-01-31 +00:00 |
updated Description |
CWE Content Team |
MITRE |
2023-04-27 +00:00 |
updated References, Relationships, Time_of_Introduction |
CWE Content Team |
MITRE |
2023-06-29 +00:00 |
updated Mapping_Notes |