突破一流信息监控拦截系统进行SQL注射
2007-11-11 12:05:51 来源:WEB开发网OWASP一直在更新它的10大脆弱性排名。先前已有发表有关2004年OWASP十大排名的文章,这里笔者想深入探究这些OWASP相信会给网络应用环境带来最高风险的10大脆弱性。
在该系列的第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):
A3.不安全的远程文件包含(Insecure Remote File Include):对远程文件包含易感的代码允许攻击者包含进入恶意的代码和数据,最后导致破坏性攻击,比如,服务器被完 全攻陷。 A5.跨站请求伪造(Cross Site Request Forgery ,CSRF):跨站请求伪造攻击会强制一个已登录受害者的浏览器向易受攻击的网络应用程序发送预验证(pre-authenticated )的请求,然后受害者的浏览器开始执行恶意行为,为攻击者谋利。 A9.不安全的通信( Insecure Communications):敏感信息总需要保护,可应用程序却常常在给网路交通加密时失败。
2007年的脆弱性选取来自对MITRE 2006年脆弱性趋势进行的10大应用程序安全问题的筛选。关于2007年OWASP 10大排名,MITRE的数据如图A所示。
表 A
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年排名。这是唯一一项我相信应该保留的脆弱性。对于确保网络应用程序可靠,维持一个安全、稳定的程序运行环境非常重要。除了 应用程序在其上运行的服务器外,其他下层架构提供的支持服务包括:
数据存储(Data storage)目录服务(Directory services)
邮件(Mail)
消息(Messaging)
一个有效的配置管理程序是保护信息资产的关键元素。对网络的攻击都是机会主义的。换言之,盗密者总是在找容易的目标,攻陷这样的目标所需工作量最低。基础架构的配置可 能不必是网络应用程序的实际组件,但是,它必须提供一个强健的环境,让基于网络的服务得以进行。
结语
在接下来的文章中,我将探讨2007年的OWASP 10大排名。我们要看这些脆弱性排名靠前的原因,及如何防御潜在的漏洞利用。根据RC1,防御好10大脆弱性可以构建安全基础,降低 下列问题的发生可能性:
赞助商链接