73份Web应用程序安全评估报告的统计分析(上)

前情提要

Web应用程序不断的在各行各业中延伸,几乎每个企业都有自己的web应用程序,供用户和/或内部业务流程使用。然而,应用程序出于实用性的目的通常以牺牲安全性为代价,这将对整个业务的安全级别造成不利影响。

web应用程序的安全漏洞为恶意攻击者提供了大量的机会。通过利用应用程序体系结构和管理中的错误,攻击者可以获得敏感信息、干扰web应用程序功能、执行DoS攻击、攻击应用程序用户、渗透企业局域网、获得关键资产的访问权等。

这份报告提供了公司在2016年实施web应用程序安全评估过程中收集到的一些数据,为了便于比较,也列出了一些2014年和2015年的数据。

对这些数据进行统计分析,我们试图解释攻击者的行动路径,从某个层面上回答下述疑问:web应用程序在开发和操作过程中,需要注意哪些安全缺陷?如何识别潜在的威胁?最有效的安全评估技术是什么?同时我们还将在信息安全的背景下探讨Web应用程序开发的发展趋势。

1 材料和方法

这份报告的数据来自于2016年评估过的73个web应用程序,其中一些应用程序可以在Internet上公开可用,而另一些应用程序则用于内部业务。本报告中排除了在渗透测试、边界扫描和网上银行安全审计中发现的漏洞。

漏洞评估是通过手动的黑盒、灰盒和白盒测试(借助自动化工具)或自动源代码分析进行的。黑盒测试意味着从外部攻击者的角度来看待应用程序,而外部攻击者对应用程序没有预先的或内部的知识。灰盒测试类似于黑盒测试,只不过攻击者被定义为在web应用程序中具有某些特权的用户。最严格的方法是白盒扫描,预先假定了测试者掌握了应用程序的所有相关信息,包括它的源代码。本报告第5节中给出了手动安全评估的结果,而自动化扫描结果被放在了第6节进行展示。

根据Web Application Security Consortium Threat Classification (WASC TC v. 2)的分类方法对漏洞进行分类,排除了输入/输出处理不当的情况,因为这些威胁是作为其他攻击的一部分实现的。此外,我们还增加了三种类型的漏洞:不安全会话、服务器端请求伪造和点击劫持。这些类别在WASC分类中是不存在的,但是经常可以在被评估的web应用程序中找到。

不安全的会话(Insecure Session),包括会话安全漏洞,比如“missing Secure and HttpOnly flags”,这允许攻击者在各种攻击中拦截用户的cookie信息。

服务器端请求伪造(Server-Side Request Forgery),这类漏洞允许攻击者冒充系统发送任意的HTTP请求。在接收到URL或HTTP消息后,web应用程序在发送请求之前执行了一个不充分的目的地检查。攻击者可以利用这个漏洞,将请求发送到具有受限访问权限的服务器(例如,局域网上的计算机),这可能导致机密数据泄漏、访问应用程序源代码、DoS攻击和其他问题。例如,攻击者可以获取外部用户无法使用的网段结构的信息、访问本地资源、扫描端口(服务)。

点击劫持(Clickjacking)是一种利用视觉欺骗用户的攻击手段。本质上,一个易受攻击的应用程序被加载了一个透明的或伪装的iframe,通过调整iframe页面的位置,诱使用户在页面上进行点击(通常会提供一些按钮或其他元素)。通过单击该元素,用户将在该网站的上下文中执行攻击者选择的操作。当应用程序没有返回X-Frame-Options header时,就可能会发生这种攻击。在某些浏览器中,这个漏洞也允许执行跨站点脚本攻击。

我们的报告只包含代码和配置漏洞。其他普遍存在的安全漏洞(比如软件更新管理过程中的缺陷),不在本文讨论范围内。

漏洞的严重程度是根据通用评分系统(CVSS v.3)计算出来的。基于CVSS的评分,我们将漏洞分为三种危险等级:高、中、低。

2 关键发现

评估的所有web应用程序都存在漏洞

在分析的所有应用程序中都发现了安全漏洞。58%至少有一个高危漏洞。与此同时,我们看到了一个积极的趋势:与2015年相比,有高危安全漏洞的网站数量减少了12%。

应用程序的用户不受保护

大多数应用程序允许对其用户进行攻击。此外,许多应用程序对用户数据的保护不够。例如,在处理个人数据的应用程序中,20%的应用程序都被我们获取到了访问用户信息的权限,这中间包括银行和政府网站。

敏感信息泄漏仍然是一个紧迫的问题

大约有一半的web应用程序存在关键数据泄漏的问题,包括源代码和个人数据。63%的web应用程序公开了正在使用的软件版本。

Web应用程序漏洞是局域网渗透的一个简单媒介

大约有1/4的web应用程序允许对LAN资源进行攻击。例如,攻击者可以访问局域网中的文件、扫描局域网中的硬件,或者攻击网络资源。此外,1/4的web应用程序中容易受到SQL注入(高危)的影响,这允许攻击者访问应用程序的数据库,还可能允许攻击者读取任意文件或创建新的文件,以及启动DoS攻击。

制造行业的企业是最脆弱的

几乎一半的制造业的web应用程序在评估中都得到了最低的等级。除了金融行业之外,其他所有行业的web应用程序都存在高危的安全漏洞,而对于金融行业,“只有”38%的应用程序存在高危漏洞。

64%的ASP.NET应用程序包含高危漏洞

另外,大约50%的PHP和Java应用程序中包含一个高危漏洞。PHP应用程序受到特别的影响,存在高危漏洞的比率是1/2.8。

生产系统的应用程序更容易受到攻击

2016年,生产系统受保护的程度较低。在手工测试中,50%的测试系统和55%的生产系统都发现了高危漏洞。应用程序中发现的高危和中危漏洞的数量,生产系统是测试系统的两倍。

源代码分析比黑盒测试更有效

对源代码的手工分析使我们的专家能够在75%的应用程序中发现高危漏洞,而黑盒测试显示只有49%的web应用程序存在高危漏洞。

自动化测试是发现漏洞的一种快速方法

对源代码的自动化分析发现,平均每个应用程序有4.6个高危、66.9个中危和45.9个低危漏洞。在自动化工具的帮助下,源代码分析可以识别出所有的出口点,换句话说,就是可靠而快速的发现所有可能被利用的漏洞。

3 评估对象

评估的应用程序,覆盖了许多行业的多个公司,包括金融、政府、媒体、电信、制造业和电子商务。

这些应用程序中约有有三分之二(65%)是生产站点,换句话说,就是目前直接向用户提供操作的站点。

今年,PHP和java是最常用的开发语言,ASP.NET应用程序的比例与去年同期相比有所增加,“other”类别(如Ruby、Python)中开发语言的应用程序仅占7%。

4 趋势分析

所有的web应用程序,无论是使用手动的还是自动的安全评估工具进行检查,都包含了各种危害级别的安全漏洞。只有1%的应用程序具有完全的低危漏洞。我们可以看到,在具有高危漏洞的应用程序中,情况有所改善,占比从2015年的70%下降到2016年的58%。发生这种改善的部分原因是,在开发新的web应用程序时,公司考虑到了去年的安全发现,也许最重要的是,他们集中修复了严重的安全漏洞。

总的来说,在前三个研究期间,我们观察到了高危漏洞不断增高的、令人沮丧的趋势。但是,这类漏洞的增长在2015放缓,最后在2016年出现了实际上的下降。尽管如此,半数以上的应用程序都发现了关键缺陷。

几乎所有应用程序都检测到中危漏洞,这个百分比在每年都保持在90到100%的范围内。具有低危漏洞的Web应用程序的百分比有所增加。

5 统计分析

在手动测试中发现的所有漏洞,大多数(81%)是中危漏洞,十分之一是高危漏洞。与2015相比,高危漏洞的份额大幅度下降,但同时也看到2016年在每个应用程序中检测到更多的中危漏洞。

所有Web应用程序都发现了安全漏洞。手动测试揭示了分析的应用程序中的54%存在高危漏洞,44%存在中危漏洞,仅有2%的应用程序只有低危漏洞。

平均而言,手动分析发现每个应用程序有17个中危漏洞、2个高危漏洞和2个低危漏洞。

5.1 最常见的漏洞类型

在2016中,排名前10的漏洞类型中,有一半允许对Web应用程序的用户进行攻击。

与2015一样,跨站点脚本攻击(中危)位列首位,在被检查的Web应用程序中有75%个被发现存在XSS问题。成功利用此漏洞可能允许攻击者向浏览器会话注入任意的HTML标记和JavaScript脚本,进而获取会话ID、进行网络钓鱼攻击等等。

与过去几年类似,正面技术利用其信息攻击Web应用程序,以创建最常见的攻击列表。数据源是部署PT应用防火墙的试点项目。为了破解网站或攻击用户,攻击者试图利用Web应用程序设计和管理中的各种漏洞进行攻击。研究表明,参与试点项目的58%的应用程序试图用跨站点脚本攻击用户,这是今年评级中最常见的漏洞。

在63%的应用程序中发现了泄露当前软件版本(指纹)信息的缺陷,位居第二。此外,超过一半的Web应用程序(54%)容易受到信息泄漏的影响,如源代码和个人数据泄漏。

排名第三的是暴力破解,指通过蛮力攻击来对付可怜的或根本不存在的保护的对象。易受这种脆弱性影响的应用程序的百分比比去年增加了10%。

不安全的会话和点击劫持出现在我们的前10强名单中。这两个类别在2016年第一次,所以无法与前一年进行比较。尽管开发人员更加努力地、小心地消除那些可能对用户造成威胁的高危漏洞,但造成用户损害的缺陷却仍在今年占据了中心地位。35%的Web应用程序中检测到跨站点请求伪造的漏洞,该漏洞允许攻击者对用户进行攻击。

如前所述,包含高危漏洞的网站的总份额已经下降,今年只有1个高危的SQL注入漏洞排在前10名之内,但它仍然存在于25%的Web应用程序中。根据我们的研究,这种漏洞是2016中最常用的漏洞:攻击者试图在84%的Web应用程序中利用它。

在2016检查的所有应用程序中,有59%检测到客户端的漏洞。这些漏洞包括跨站点脚本、跨站点请求伪造、会话安全缺陷以及其他可能攻击Web应用程序用户的安全问题。其余的41%的安全漏洞,主要是信息泄漏和授权认证不足,均发生在服务器端。

检测到的大多数漏洞(73%)都是在软件代码中发现的,它们与开发错误(如SQL注入)有关。Web服务器配置错误产生的问题大约占了四分之一。

5.2 威胁和安全级别分析

对Web应用程序的安全级别进行划分,主要依据发现的漏洞被利用的可能性。从“非常差”到“可接受的”。一个“非常差”的安全级别,意味着高危的安全漏洞。例如,允许外部的攻击者远程命令执行或导致敏感信息泄露。一般来说,如果Web应用程序存在高危漏洞,其安全级别出于“非常差”到“低于平均值”的范围内。

Web应用程序安全的总体水平仍然很低。专家们认为16%的Web应用程序的安全性“非常差”。

约有32%Web应用程序的安全级别“非常差”,只有5%的应用程序得到了充分保护。

2016的最低等级(”poor” 和 “extremely poor”)属于电子商务、制造业公司和电信公司的应用程序:它们中间半数以上的的安全级别为”poor” 或 “extremely poor”。34%的电子商务(34%)和43%的制造公司的Web应用程序的安全等级最低:“extremely poor”。金融行业和政府的Web应用程序的安全性稍微好一些。只有15%的电信的Web应用程序可以吹嘘为“acceptable”的安全性。媒体行业的应用程序的样本不足,所以无相关比例。

原创文章,作者:M0tto1n,如若转载,请注明出处:http://www.mottoin.com/104724.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code