Saturday, July 02, 2011

CWE and SANS Reports

CWE and SANS Institute had published a study into the 2011 CWE/SANS Top 25 Most Dangerous Software Errors that leads to critical and security vulnerabilities in software. This is a yearly study and it's used as reference for other studies.

As always, injection-based attack dominates the top 25 and SQL Injection is on the top of the list. Although this vulnerabilities is so common, still a lot of system are vulnerable to this kind of attack. As you probably aware, SQL Injection happened when the system failed to validate an input (mostly are conducted at query string in the URL), thus leading to unauthorized data modification or alteration in the backend (database).

The second position is OS command injection, followed by the infamous buffer overflow attack.

Here are the full list:
1 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
2 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
3 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
4 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
5 Missing Authentication for Critical Function
6 Missing Authorization
7 Use of Hard-coded Credentials
8 Missing Encryption of Sensitive Data
9 Unrestricted Upload of File with Dangerous Type
10 Reliance on Untrusted Inputs in a Security Decision
11 Execution with Unnecessary Privileges
12 Cross-Site Request Forgery (CSRF)
13 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
14 Download of Code Without Integrity Check
15 Incorrect Authorization
16 Inclusion of Functionality from Untrusted Control Sphere
17 Incorrect Permission Assignment for Critical Resource
18 Use of Potentially Dangerous Function
19 Use of a Broken or Risky Cryptographic Algorithm
20 Incorrect Calculation of Buffer Size
21 Improper Restriction of Excessive Authentication Attempts
22 URL Redirection to Untrusted Site ('Open Redirect')
23 Uncontrolled Format String
24 Integer Overflow or Wraparound
25 Use of a One-Way Hash without a Salt