专家称:防止Web应用威胁任重道远

SQL注入和跨站脚本仍然是最有针对性的Web应用漏洞,然而专家称,一些新技术(例如HTML 5)本身就具有危险的漏洞。根据安全云托管公司FireHost的报告显示,在2012年前两个季度之间,SQL注入(SQLi)攻击上升了69%。在 SQL攻击中,攻击者将恶意代码输入web表单输入框以获取资源或更改数据。

WhiteHat Security公司创始人兼首席执行官Jeremiah Grossman表示:“从实例和数据丢失情况来看,SQL注入是迄今为止最大的威胁。”在WhiteHat Security公司2012年夏天的网站统计报告中,SQL注入有11%的可能性出现在一个网站至少一次。这个数字使SQL注入名列漏洞普及率排行榜的第八位。

排在漏洞榜首的是跨站脚本(XSS),在一个网站中至少存在一个XSS安全漏洞的可能性是55%。在XSS攻击中,攻击者将恶意代码插入链接,看起来似乎是来自值得信赖的来源,通过点击链接,用户将释放嵌入式编程,这作为该客户端web请求的一部分被提交,并可以在用户的计算机上执行,从而让攻击者窃取信息。

安全专家称,其他漏洞虽然比主要漏洞的普及率更低,也没那么危险,但它们仍然构成威胁。Security Innovation公司应用安全服务副总裁Joe Basirico表示,授权问题引起越来越多的关注,即用户可以访问其授权级别以上的信息。Grossman还指出了业务逻辑漏洞,当两个安全步骤发生冲突时,最终会制造漏洞,这也是一个问题。

HTML 5——增长的攻击目标

最新版本的网页标准编程语言HTML 5旨在使web应用和文件在每种类型的浏览器中都是一致的,但这个新兴技术却带来新的威胁。Savvis公司高级安全战略家Ed Moyle表示,HTML 5对客户端方面的侧重使攻击者从用户角度实施攻击变得更容易。HTML 5等新技术是危险的,因为威胁更难找到,开发者也更难以修复。当你引进新技术时,例如云计算和HTML 5等,你也带来了新的复杂性。对于攻击,HTML 5更加滞后,因为攻击者坚持使用较旧的更广泛应用的编程语言,例如Java。

新颖可能是保护不足的HTML 5面临的问题,但这并不是SQL注入和XSS攻击漏洞的理由,这两个漏洞已经有十多年的历史。安全专家称,在开发web应用时,安全并不是首要考虑问题。咨询和研究公司SecurityCurve的创始人Diana Kelley表示,重点在于速度、功能和整体体验。“我们听说了很多关于安全的问题,也有各种相关新闻报道,”Kelley表示,但当涉及安全因素时,应用开发人员意识到他们必须花费更多时间和金钱才能让产品得以发布,这使他们总是忽视安全因素。

Moyle表示,当企业IT安全团队为web应用解决安全问题时,资金和重点往往在网络层面。企业将花更多钱在应用上,而不是专门针对这些应用的安全因素上。

缺乏具有安全意识的程序员

一些专家发现行业内普遍缺乏安全人员。Grossman表示:“没有人来做这个工作。很多SQL注入和XSS攻击针对传统的旧代码,因为旧代码在较新版本中存在漏洞。有15年的不安全web代码需要我们清理。不过,新代码中的漏洞可以避免,只是在开发应用时,这些安全步骤有时候被忽略了。”

Grossman和其他安全分析师认为参数化SQL语句是缓解SQL注入攻击的最佳途径之一。通过参数化语句,只有特定条目能被web表单的输入框接受,这是基于开发人员设置的限制。例如,他举了一个好的语句,“我的名字是Jeremiah”,而“我的名字是Jeremiah;”就会被拒绝。因为标点符号不被接受,这可以防止攻击者向输入框输入代码。对于XSS,Grossman认为上下文感知的输出编码是一个很好的防御。输入验证是可用于保护 web应用免受XSS和SQL注入攻击的另一个方法。

在开发web应用时,Grossman表示,重要的是在开发过程的每一步都考虑安全因素。他确定了在web应用的整个生命周期解决安全问题的三个角色:开发人员(builder)首先创建安全代码来开始这个过程,然后破坏者(breaker)进行测试并找出安全威胁,防御者(defender)专注于监测启动web应用后的攻击。

专家们认为,安全规范需要由公司高管来确定。SecurityCurve公司的Kelley表示,只有通过高管施加压力,开发人员才会认真地编写代码、检查代码以及为安全措施(例如输入验证)编写额外代码。软件开发人员被聘请来工作,如果雇佣他们的人强调使用web应用的方便性和体验,那么最终的产品将会反映这一点。Kelley表示,高管应该对其想要部署的安全措施给出明确的指示。

当在创建web应用的整个过程中都考虑了安全因素时,这最终可以节省时间和金钱,虽然这个优势在初期没有显现出来。例如,在开发过程快结束时,当审计员表示web应用不符合某个要求时。审计员会停止生产,让开发团队回去解决问题。Kelley表示,在这种情况下,生产可能会被推迟一个星期,但如果最初采取了适当的安全措施的话,这可能只需要一两天。

最后,Kelley表示,管理人员需要决定对于最终产品而言,什么是重要的。如果安全很重要,那么,企业将需要采取一切措施来保护其web应用。