软件安全漏洞分类
3. 软件安全漏洞的分类:
由于传统的安全防护方式日益变得不再有用。我们也知道软件的安全问题主要来自于软件的本身。安全漏洞产生主要是由不合理的软件架构和错误的编码所造成的。那么黑客到底利用我们软件的什么样的漏洞来攻击我们软件呢?换句话说,我们的软件设计和编码中,生产了什么样的安全漏洞呢?那么将这些软件安全的问题综合起来,再进行分类,这个价值是无庸致疑的。分类可以使人们更好地了解计算机安全缺陷产生的根源。于是早在70年代中期,软件安全问题分类这一问题就受到了广泛的关注。很多研究组织纷纷进行研究。最早进行计算机安全与机密研究的组织是RISOS(Research Into Secure Operating System).RISOS提出和描述了几种操作系统安全的缺陷。它的目标是了解在操作系统中存在的安全问题。RISOS提出的安全问题的种类包括:
• Incomplete Parameter Validation
• Inconsistent Parameter Validation
• Implicit Sharing of Privileges / Confidential Data
• Asynchronous Validation / Inadequate Serialization
• Inadequate Identification / Authentication / Authorization
• Violable Prohibition / Limit
• Exploitable Logic Error
这个研究表明在不同上下文的情况下,共同遇到的只有很少量的一些基础性的缺陷。这个分类也只论述了很有限的几个共有问题的类型,而且每个类型的限定也不是很清楚,许多情况下一个问题可以属于一个或几个类型,这样的分类是不精确的。同时,分类的命名,不够直观。虽然它对很多研究人员也说很有用,但是对于软件开发人员,他们并不能在他们每天繁重的工作的情况下很快地通过直觉把它们区分开来。另外,这项研究只是关注操作系统一些安全问题的分类而没有关注到企业级软件的安全问题。而随着软件的不断发展,应用软件形式也不断变化,安全问题分类也有了新的研究。下面摘要著名的软件安全专家Gary Mc Graw的2006年的新书《Software Security building security In》中提出的软件安全问题的“7+1”个很高级别的大类。这几个领域中七个大类都是关注于源代码的安全,一个是与软件的配置和环境有关的。大类中我们又分了很多的小类,这8个大类及每个大类中主要的分类分别是:
1. Input Validation and Representation
Buffer Overflows
Command Injection
Cross-Site Scripting(XSS) Flaws
Format String Problems
Integer Range Errors
SQL Injection
2. API Abuse
Trusting Network Address Information
Dangerous Function
Directory Restriction.
Heap Inspection
3. Security Features
Failing to Protect Network Traffic
Failing to Store and Protect Data
Failing to Use Cryptographically Strong Random
Numbers
Improper File Access
Improper Use of SSL
Use of Weak Password-Based Systems
Unauthenticated Key Exchange
4. Time and State
Signal Race Conditions
Use of “Magic” URLs and Hidden Forms
5. Errors
Failure to Handle Errors
Catch NullPointerException
Empty Catch Block
Overly-Broad Catch Block
Overly-Broad Throws Declaration.
6. Code Quality
Poor Usability
Double Free. Calling free()
Inconsistent Implementations
Memory Leak
Null Dereference
7. Encapsulation
Information Leakage
Comparing Classes by Name
Data Leaking Between Users
Leftover Debug Code
Trust Boundary Violation
8. Environment
Insecure Compiler Optimization
ASP .NET Misconfiguration: Creating Debug Binary ;Missing Custom Error Handling
Password in Configuration File
J2EE Misconfiguration: Insecure Transport ; Insufficient Session-ID Length
Missing Error Handling ; Unsafe Bean Declaration
Weak Access Permissions
这些分类包括了各种程序语言中遇到的源代码的安全问题,它包括C,C++,JAVA,以及。NET家族的C#、ASP。在这里我只是大致描述一下。详细的分类的描述在http://www.fortify.com/vulcat/。
网友评论