I am elaborating an earlier article on https://decisionstats.com/top-25-most-dangerous-software-errors/ based on my continued research into cyber conflict and strategy. My inputs are in italics – the rest is a condensed article for further thought.
This is thus a very useful initiative for the world to follow and upgrade their cyber security.
The Department of Homeland Security of the United States of America has just launched a list of top 25 errors in programming or creating software that increase vulnerability to hacking attacks. The list which is available at http://cwe.mitre.org/top25/index.html lists down a methodology fo measuring vulnerability called Common Weakness Scoring System (CWSS) and uses that score to rank the various errors as well as suggestions to eliminate these weaknesses or errors.
Measuring Weaknesses
The importance of a weakness (that arises due to software bugs) may vary depending on business usage or project implementation, the technologies , operating systems and computing environments in use, and the risk or threat perception.The Common Weakness Scoring System (CWSS) provides a mechanism for scoring weaknesses. and provides a framework for prioritizing security errors (“weaknesses”) that are discovered in software applications.
Identifying Weaknesses
For example the number 1 weakness is shown with
1CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’).
The rest of the weaknesses are
RANK SCORE ID NAME
[1] 93.8 CWE-89 Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
[2] 83.3 CWE-78 Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
[3] 79.0 CWE-120 Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)
[4] 77.7 CWE-79 Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
[5] 76.9 CWE-306 Missing Authentication for Critical Function
[6] 76.8 CWE-862 Missing Authorization
[7] 75.0 CWE-798 Use of Hard-coded Credentials
[8] 75.0 CWE-311 Missing Encryption of Sensitive Data
[9] 74.0 CWE-434 Unrestricted Upload of File with Dangerous Type
[10] 73.8 CWE-807 Reliance on Untrusted Inputs in a Security Decision
[11] 73.1 CWE-250 Execution with Unnecessary Privileges
[12] 70.1 CWE-352 Cross-Site Request Forgery (CSRF)
[13] 69.3 CWE-22 Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
[14] 68.5 CWE-494 Download of Code Without Integrity Check
[15] 67.8 CWE-863 Incorrect Authorization
[16] 66.0 CWE-829 Inclusion of Functionality from Untrusted Control Sphere
[17] 65.5 CWE-732 Incorrect Permission Assignment for Critical Resource
[18] 64.6 CWE-676 Use of Potentially Dangerous Function
[19] 64.1 CWE-327 Use of a Broken or Risky Cryptographic Algorithm
[20] 62.4 CWE-131 Incorrect Calculation of Buffer Size
[21] 61.5 CWE-307 Improper Restriction of Excessive Authentication Attempts
[22] 61.1 CWE-601 URL Redirection to Untrusted Site (‘Open Redirect’)
[23] 61.0 CWE-134 Uncontrolled Format String
[24] 60.3 CWE-190 Integer Overflow or Wraparound
[25] 59.9 CWE-759 Use of a One-Way Hash without a Salt
Details of each weakness is given by http://cwe.mitre.org/top25/index.html#Details
It includes Summary , Weakness Prevalence, Consequences, Remediation Cost, Ease of Detection ,Attacker Awareness and Attack Frequency .In addition the following sections describe each software vulnerability in detail- Technical Details ,Code Examples ,Detection Methods ,References,Prevention and Mitigation, Related CWEs and Related Attack Patterns.
Other important software weaknesses are –
[26] CWE-770: Allocation of Resources Without Limits or Throttling
[27] CWE-129: Improper Validation of Array Index
[28] CWE-754: Improper Check for Unusual or Exceptional Conditions
[29] CWE-805: Buffer Access with Incorrect Length Value
[30] CWE-838: Inappropriate Encoding for Output Context
[31] CWE-330: Use of Insufficiently Random Values
[32] CWE-822: Untrusted Pointer Dereference
[33] CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’)
[34] CWE-212: Improper Cross-boundary Removal of Sensitive Data
[35] CWE-681: Incorrect Conversion between Numeric Types
[36] CWE-476: NULL Pointer Dereference
[37] CWE-841: Improper Enforcement of Behavioral Workflow
[38] CWE-772: Missing Release of Resource after Effective Lifetime
[39] CWE-209: Information Exposure Through an Error Message
[40] CWE-825: Expired Pointer Dereference
[41] CWE-456: Missing Initialization
Mitigating Weaknesses
Here is an example of the new matrix for migrations that also list the top 25 errors . This thus shows a way to fix the weaknesses and relative impact on each weakness by the following mitigations.
http://cwe.mitre.org/top25/mitigations.html#MitigationMatrix
Effectiveness ratings include:
- High: The mitigation has well-known, well-understood strengths and limitations; there is good coverage with respect to variations of the weakness.
- Moderate: The mitigation will prevent the weakness in multiple forms, but it does not have complete coverage of the weakness.
- Limited: The mitigation may be useful in limited circumstances, only be applicable to a subset of this weakness type, require extensive training/customization, or give limited visibility.
- Defense in Depth (DiD): The mitigation may not necessarily prevent the weakness, but it may help to minimize the potential impact when an attacker exploits the weakness.
Within the matrix, the following mitigations are identified:
- M1: Establish and maintain control over all of your inputs.
- M2: Establish and maintain control over all of your outputs.
- M3: Lock down your environment.
- M4: Assume that external components can be subverted, and your code can be read by anyone.
- M5: Use industry-accepted security features instead of inventing your own.
The following general practices are omitted from the matrix:
- GP1: Use libraries and frameworks that make it easier to avoid introducing weaknesses.
- GP2: Integrate security into the entire software development lifecycle.
- GP3: Use a broad mix of methods to comprehensively find and prevent weaknesses.
- GP4: Allow locked-down clients to interact with your software.
M1 |
M2 |
M3 |
M4 |
M5 |
CWE |
High |
|
DiD |
Mod |
|
CWE-22: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’) |
Mod |
High |
DiD |
Ltd |
|
CWE-78: Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) |
Mod |
High |
|
Ltd |
|
CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’) |
Mod |
High |
DiD |
Ltd |
|
CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’) |
Mod |
|
DiD |
Ltd |
|
CWE-120: Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’) |
Mod |
|
DiD |
Ltd |
|
CWE-131: Incorrect Calculation of Buffer Size |
High |
|
DiD |
Mod |
|
CWE-134: Uncontrolled Format String |
Mod |
|
DiD |
Ltd |
|
CWE-190: Integer Overflow or Wraparound |
|
|
High |
|
|
CWE-250: Execution with Unnecessary Privileges |
|
|
Mod |
|
Mod |
CWE-306: Missing Authentication for Critical Function |
|
|
|
|
Mod |
CWE-307: Improper Restriction of Excessive Authentication Attempts |
|
|
DiD |
|
|
CWE-311: Missing Encryption of Sensitive Data |
|
|
|
|
High |
CWE-327: Use of a Broken or Risky Cryptographic Algorithm |
|
|
|
Ltd |
|
CWE-352: Cross-Site Request Forgery (CSRF) |
Mod |
|
DiD |
Mod |
|
CWE-434: Unrestricted Upload of File with Dangerous Type |
|
|
DiD |
|
|
CWE-494: Download of Code Without Integrity Check |
Mod |
Mod |
|
Ltd |
|
CWE-601: URL Redirection to Untrusted Site (‘Open Redirect’) |
Mod |
High |
DiD |
|
|
CWE-676: Use of Potentially Dangerous Function |
|
Ltd |
DiD |
|
Mod |
CWE-732: Incorrect Permission Assignment for Critical Resource |
|
|
|
|
High |
CWE-759: Use of a One-Way Hash without a Salt |
|
|
DiD |
High |
Mod |
CWE-798: Use of Hard-coded Credentials |
Mod |
|
DiD |
Mod |
Mod |
CWE-807: Reliance on Untrusted Inputs in a Security Decision |
High |
|
High |
High |
|
CWE-829: Inclusion of Functionality from Untrusted Control Sphere |
DiD |
|
Mod |
|
Mod |
CWE-862: Missing Authorization |
|
|
DiD |
|
Mod |
CWE-863: Incorrect Authorization |
Like this:
Like Loading...