在该系列的第1部分中,我给出了2004年的OWASP 10大脆弱性列表。 那篇文章不久,我收到了一封来自Andrew van der Stock,OWASP的执行理事的电子邮件。信中他叫我关注即将修订的新列表。OWASP计划在三月份发布2007年10大脆弱性清单。因 此,现在我也要修订一下我的这个系列,把2007年的脆弱性包括进来。
2007年OWASP的10大排名
2004和2007年的名单有些类似,见表A。其中,未经验证的输入(Unvalidated input)、缓存溢出(buffer overflows)、不安全的配置管理(insecure configuration management),以及拒绝服务(denial of service)被去除了。另一方面,损坏的验证和会话管理(broken authentication and session management)被一分为二,作为两项列 入。
列表中包含的新脆弱性有(根据RC1):
2007年 OWASP 10大排名
|
2004年 OWASP 10大排名
|
A1. 跨站脚本,Cross Site Scripting (XSS)
|
A4. 跨站脚本Cross Site Scripting (XSS)
|
A2.注入缺陷, Injection Flaws
|
A6. 注入缺陷, Injection Flaws
|
A3. 不安全的远程文件包含,Insecure Remote File Include (新)
|
_
|
A4. 不安全的直接对象引用,Insecure Direct Object Reference
|
A2. 破坏的访问控制,Broken Access Control (在2007年被分成两类)
|
A5. 跨站请求伪造,Cross Site Request Forgery (CSRF) (新)
|
_
|
A6. 信息泄漏和异常错误处理,Information Leakage and Improper Error Handling
|
A7. 异常错误处理,Improper Error Handling
|
A7. 损坏的验证和会话管理,Broken Authentication and Session Management
|
A3. 损坏的验证和会话管理,Broken Authentication and Session Management
|
A8. 不安全的加密存储,Insecure Cryptographic Storage
|
A8.不安全的存储,Insecure Storage
|
A9.不安全的通信 Insecure Communications (新)
|
在A10下讨论,不安全的配置管理
|
A10. URL访问限制失败,Failure to Restrict URL Access
|
A2. 损坏的访问控制,Broken Access Control (在2007年被分成两类)
|
_
|
A1. 未经严整的输入,Unvalidated Input
|
_
|
A5.缓存溢出,Buffer Overflows
|
_
|
A9. 拒绝服务,Denial of Service
|
_
|
A10. 不安全的配置管理,Insecure Configuration Management
|
图A MITRE脆弱性趋势
其中未经验证的输入被去除了,一开始让人感到有点惊讶。而且,对2004和2007年的脆弱性列表进行进行一番表面审查,也能发现这个脆弱性是很多其他弱点的共同根由。然而, 这种忽落可能并非那么非常重大,因为在2007年的列表中,许多脆弱性都把合法输入验证作为一项重要的漏洞防御措施。
溢出脆弱性(即,缓存溢出、整数溢出[integer overflow],及格式串问题[format string issue])也被忽略了,因为这些问题多出自低级别的开发语言,如C或者C++。现在最常 见的网络开发环境对这类问题不是那么敏感。图B显示的是各流行的开发环境中溢出脆弱性发生的可能性比较。
图B 溢出脆弱性发生可能性 (来自 OWASP 缓存溢出, 2006)
通过该表可以看出,很显然今天最常使用的开发语言和网络应用程序开发环境(例如,Java、.NET、Perl)都是安全的。但这不等于说,例如使用.NET技术就能让你完全免疫。编 程语言或者开发环境自身内部的错误可能也会引入些许溢出问题。
另一个企业开发应用程序时常犯的错误是,一方面依赖于开发环境(比如.NET)的安全性,一方面又调用用不安全的低级别语言(如c和c++)写成的外部工具和应用程序。用不安 全语言写的工具和应用程序数目越是巨大,如果把它们整合进入网络应用程序,那么风险也会越大。
尽管拒绝服务(DoS)攻击漏洞现在仍是问题,在MITRE的等级排名上却比较靠后,在这里不能上榜。但这不应该解释为我们可以不把DoS当回事了。
最后,不安全的配置管理同样也没能进入2007年排名。这是唯一一项我相信应该保留的脆弱性。对于确保网络应用程序可靠,维持一个安全、稳定的程序运行环境非常重要。除了 应用程序在其上运行的服务器外,其他下层架构提供的支持服务包括:
一个有效的配置管理程序是保护信息资产的关键元素。对网络的攻击都是机会主义的。换言之,盗密者总是在找容易的目标,攻陷这样的目标所需工作量最低。基础架构的配置可 能不必是网络应用程序的实际组件,但是,它必须提供一个强健的环境,让基于网络的服务得以进行。
结语
在接下来的文章中,我将探讨2007年的OWASP 10大排名。我们要看这些脆弱性排名靠前的原因,及如何防御潜在的漏洞利用。根据RC1,防御好10大脆弱性可以构建安全基础,降低 下列问题的发生可能性: