The Software Fault Patterns (SFP) [1] are a clustering of CWEs into related weakness categories. Each cluster is factored into formally defined attributes, with sites ("footholds"), conditions, properties, sources, sinks, etc. This work overcomes the problem of combinations of attributes in CWE. For instance, the SFP factored attributes are more clear than the irregular coverage of CWEs.
"Software Fault Patterns (SFP) is a generalized description of an identifiable family of computations that are:
SFP categorizes 632 CWEs plus there are 8 deprecated CWEs, so the CWEs defined as weaknesses total 640. In addition, there are: 21 primary clusters, 62 secondary clusters, 310 discernible CWEs, 36 unique SFPs. [3]
Clusters and SFPs
Primary Clusters | Secondary Cluster | SFP |
---|---|---|
1. Risky Values | 1. Glitch in Computation | SFP1 |
2. Unused Entities | 1. Unused Entities | SFP2 |
3. API | 1. Use of an Improper API | SFP3 |
4. Exception Management | 1. Unchecked Status Condition2. Ambiguous Exception Type3. Incorrect exception Behavior | SFP4SFP5SFP6 |
5. Memory Access | 1. Faulty Pointer Use2. Faulty Buffer Access3. Faulty String Expansion4. Incorrect Buffer Length Computation5. Improper NULL Termination | SFP7SFP8SFP9SFP10SFP11 |
6. Memory Management | 1. Faulty Memory Release | SFP12 |
7. Resource Management | 1. Unrestricted Consumption2. Failure to release resource3. Faulty Resource Use4. Life Cycle | SFP13SFP14SFP15 |
8. Path Resolution | 1. Path Traversal2. Failed Chroot Jail3. Link in Resource Name Resolution | SFP16SFP17SFP18 |
9. Synchronization | 1. Missing Lock2. Race Condition Window3. Multiple Locks/Unlocks4. Unrestricted Lock | SFP19SFP20SFP21SFP22 |
10. Information Leak | 1. Exposed Data2. State Disclosure3. Exposure Through Temporary files4. Other Exposures5. Insecure Session Management | SFP23 |
11. Tainted Input | 1. Tainted Input to Command2. Tainted Input to Variable3. Composite Tainted Input4. Faulty input Transformation5. Incorrect Input Handling6. Tainted Input to Environment | SFP24SFP25SFP26SFP27 |
12. Entry Points | 1. Unexpected Access Points | SFP28 |
13. Authentication | 1. Authentication Bypass2. Faulty Endpoint Authentication3. Missing Endpoint Authentication4. Digital Certificate5. Missing Authentication6. Insecure Authentication Policy7. Multiple binds to the Same Port8. Hardcoded Sensitive Data 9. Unrestricted Authentication | SFP29SFP30SFP31SFP32SFP33SFP34 |
14. Access Control | 1. Insecure Resource Access2. Insecure Resource Permissions3. Access Management | SFP35 |
15. Privilege | 1. Privilege | SFP36 |
16. Channel | 1. Channel Attack2. Protocol Error | |
17. Cryptography | 1. Broken Cryptography2. Weak Cryptography | |
18. Malware | 1. Malicious Code 2. Covert Channel | |
19. Predictability | 1. Predictability | |
20. UI | 1. Feature2. Information Loss3. Security | |
21. Other | 1. Architecture2. Design3. Implementation4. Compiler |
"Primary Cluster: Memory Access; Secondary Cluster: Faulty Buffer Access
A weakness where the code path has all of the following:
This is where the Buffer Access Operation is a statement that performs access to a data item of a certain size at access position. The access position of a Buffer access Operation is related to a certain buffer and can be either inside the buffer or outside of the buffer.
Parameters:
SFP is an excellent advance. However, SFP does not tie fault clusters to causes or chains of fault patterns nor to consequences of a particular vulnerability. In addition, since they were derived from CWEs, more work is needed for embedded or mobile concerns, such as, battery drain, physical sensors (e.g. Global Positioning System (GPS) location, gyroscope, microphone, camera) and wireless communications.