Web应用程序安全的“七宗罪”解析

2018-09-10 16:35姜鹏
计算机与网络 2018年9期
关键词:序列化安全策略开发人员

姜鹏

根据Akamai发布的最新数据显示,针对Web应用程序的攻击正在增加,2017年第四季度的Web应用程序攻击数量与2016年同期相比增加了10%。

该公司的高级安全倡导者Martin McKeay在其最近的《互联网安全状态报告》中写道,绝大多数的Web应用程序攻击都是非目标扫描寻找易受攻击系统的结果,也有少数攻击者试图破坏特定目标。但是,无论是有目标还是无目标的Web应用程序攻击都是非常频繁且“难辨的”———换句话说,就是很难准确检测到,很多组织都只是简单地运行着Web应用程序防火墙,没有任何额外防御层来检测系统究竟丢失了哪些信息。

企业或机构需要改进他们的安全编码实践以降低自身在网络中的安全风险。以下这份清单重点介绍了组织的Web应用程序所面临的一些最大威胁:

1.SQL注入漏洞

Web应用程序大多涉及服务器端的动态处理,同时,开发人员可能在开发过程中疏忽参数的输入检查,因此会出现各种Web应用安全问题,并产生相关漏洞,例如目录遍历漏洞、信息泄露漏洞以及SQL注入漏洞等,给攻击者留下可乘之机。

而由于SQL注入漏洞利用Web应用开放的端口,通常防火墙等设备无法检测到,所以其隐蔽性非常高,如果攻击者不留下痕迹,或是管理员没有查看数据库日志的习惯,就基本上不会发现其存在。

自安全研究人员Jeff Forrestal首次详细介绍了第一个SQL注入漏洞至今,已经过去了20余年。但是,即便是现在,SQL注入仍然是大量网站和Web应用程序的重要威胁。根据美国国家漏洞数据库(NVD)的统计数据显示,SQL注入在针对Web应用程序攻击手段中名列榜首,是互联网最大的安全漏洞。

此外,根据Alert Logic发布的另一项最新研究显示,SQL注入攻击仍然是长期以来最主要的Web攻击类型,其在安全监控公司跟踪的所有客户攻击事件中占据55%。

2.不安全的反序列化

序列化就是把对象转换成一种数据格式,如Json、XML等文本格式或二进制字节流格式,便于保存在内存、文件、数据库中或者在网络通信中进行传输。反序列化是序列化的逆过程,即由保存的文本格式或字节流格式还原成对象。

很多编程语言都提供了这一功能,但不幸的是,如果应用代码允许接受不可信的序列化数据,在进行反序列化操作时,可能会产生反序列化漏洞,黑客可以利用它进行拒绝服务攻击、访问控制攻击和远程命令执行攻击。

事实上,反序列化漏洞已经出现很久了,到现在都很流行,以致OWASP组织将“不安全的反序列化”列为2017年10项最严重的Web应用程序安全风险榜的第8位。针对不安全的反序列化的攻击所能造成的破坏类型最明显的例子之一,就是2017年Equifax公司发生的大规模泄漏事件,Equifax公司正是由于未安装补丁以修复Apache Struts中的相关安全漏洞,才导致于去年夏季发生了大规模的数据泄露事件。

3.依赖有风险的开源组件

说到Equifax数据泄露事件,攻击者所利用的反序列化漏洞并非存在于底层软件代码本身。相反的,它是存在于广泛使用的Apache Struts组件(嵌在软件中)之中。

这突出体现了Web应用安全中的另一个致命隐患———即依赖有风险且未打补丁的开源组件。开发商越来越多地使用开源组件来构建他们的软件,而且通常不去跟踪哪个组件被部署到了哪些地方,更不用说跟踪哪些版本被使用以及这些组件本身是否依赖于其他易受攻击的组件。

Arbor Networks公司安全评估工程师Will Chatham表示,开发人员倾向于依赖给定JavaScript库的流行度来确定其安全性,这就产生了一个错误的假设———即如果很多开发人员正在使用它,那么它必然是安全的。显然,这是一种非常错误的想法。在一个框架内,一个库可能依赖另一个库,从而形成一个错综复杂的依赖关系链。在这些链条的深处,可能存在缺乏安全保护的库,甚至可能容易受到多种类型的恶意行为的影响,从而导致他们面临所谓的“供应链攻击”。

4.没有内容安全策略来阻止XSS

Imperva公司的Daniel Svartman解释称,跨站点脚本(XXS)是一种常见的向量,可以将恶意代码插入到易受攻击的Web应用程序中。与其他Web攻击类型(如SQLi)不同,其目标不是您的Web应用程序。相反地,它针对的是您的用户,从而损害客户安全以及组织的声誉。

不过,与SQLi一样的是,XSS也已经存在了很长一段时间,且至今仍在威胁企业安全。正如Mozilla的April King所解释的那样,阻止XSS攻击最有效的方法之一就是使用内容安全策略(Content Security Policy,简称CSP),该策略的普及率已经实现了大幅的增长,但仍然很少被大多数网站使用。

根据Mozilla Observatory(一款网站分析工具)针对Alexa排名前一百万的网站进行的扫描结果显示,只有大约0.022%的网站使用了内容安全策略。此外,使用了内容安全策略但忽略了串联式样式表(Cascading Style Sheets,简称CSS)的网站比率略有提高,占据Alexa Top 1M的0.112%。

5.信息泄露助力黑客攻击

据White Hat Security公司称,每两个应用程序中就有一个具有某种类型的信息泄漏漏洞。同时,Veracode认为这一比例应该更高,所有应用程序中有65.8%会显示有关应用程序、网络环境或用户的敏感信息,这些信息可能会被恶意行为者用于当前的或未来的针对应用程序的攻击活动。

White Hat分析公司在其《2017年应用程序安全统计报告》中解释称,根据泄露信息的具体内容,其危害程度也不尽相同,它可能与泄露的用户名和密码一样严重,也可能与泄露的软件版本号一样是“良性的”。好消息是,它通常只需要进行一个简单的重新配置修复,但修复通常取决于泄露的数据类型———敏感的泄露问题得到了解决,其他的问题则没有。

即使像软件版本号这样“良性的”泄漏事件也会为黑客的攻击行为带来启示。通常而言,即使是再小的信息泄露也可以为恶意行为者提供可用于构建未来攻击蓝图的信息。

6.API缺陷

据Chatham称,2017年在Web应用程序中出现的最大威胁之一就是安全性较差的API。他说,近些年来,API越来越流行,开发人员在构建应用程序时开始更频繁地使用它们,作为将其服务或数据提供给其他应用程序的一种方式。但不幸的是,它们正在被实现到Web应用程序中,且完全忽略了安全问题。让情况变得更糟的是,欠缺保护的API往往并非傳统应用安全测试过程的一部分。

这可能就是OWASP 2017年将“不受保护的API”列入其“web应用程序十大安全风险”榜单前十名的原因。随着越来越多的组织将API用作当今DevOps商店所青睐的各种轻量级快速部署软件之间的“润滑剂”,这种威胁势必会引发更为广泛的关注。

根据Imperva之前进行的研究显示,公司平均管理着363种不同的API,其中三分之二是面向公众和其合作伙伴的公开API。

7.忽略传输层保护

好消息是,现在组织在部署HTTPS方面变得越来越积极。但坏消息是,部署现状仍不容乐观,还有很长的路要走。

根据之前Mozill Observatory进行的扫描结果显示,在Alexa排名前一百万(Top 1M)网站中,大约有54.3%的网站使用了HTTPS,这一比例较2017年夏天增长了19%。但是,这仍然意味着还有大约一半的顶级网站仍在使用落后且不安全的HTTP协议。

所以可以说,想要实现让大多数网站禁用HTTP的目标,仍然还有很长的路要走。这一过程需要通过HSTS实现,它是国际互联网工程组织IETE正在推行一种新的Web安全协议,旨在帮助网站将用户从不安全的HTTP版本重定向到安全的HTTPS版本,强制客户端(如浏览器)使用HTTPS与服务器创建连接。而根据Mozilla的扫描结果显示,使用HSTS的网站仅占Alexa Top 1M的6%左右。

猜你喜欢
序列化安全策略开发人员
基于可视化的安全策略链编排框架
多媒体教学服务器限制访问的一种措施
Semtech发布LoRa Basics 以加速物联网应用
浅析涉密信息系统安全策略
初中生写作序列化实践与思考
地铁客运组织方式及安全分析
分层次序列化训练增强考场写作的增分因素
对“失序”的习作教学之思考和把脉
坚持以读促写 注重思维训练
后悔了?教你隐藏开发人员选项