龙兴刚
(海军计算技术研究所,北京 100841)
随着 Web 2.0、云计算时代的来临,基于Web的网络应用(简称Web应用)如电子邮件、即时消息、内容分发网络(CDN)等大量兴起,这些基于Web的应用已经成为人们数字生活的重要组成内容,同时基于Web服务的应用程序也被应用于各个重要领域,比如互联网管理,商场的运营,军事设施的控制等[1]。
当前互联网中最重要的资源程序和数据几乎都与Web服务相关,伴随Web广泛应用,Web应用程序和数据已经成为黑客攻击的头号目标。依据SANS机构2009年的报告,互联网络中的程序漏洞是各种安全威胁传播的主要途径。浏览器、Web应用程序、服务器端数据库成为主要被攻击对象。Cenzic组织的一份研究报告显示,78%的互联网络威胁与Web应用相关。敏感数据泄漏对组织机构和个人所造成的的损失是无法估量的。
本文首先对Web应用涉及到的安全威胁进行了分析,然后针对这些安全威胁提出了相应的安全防护方案,最后全文进行了总结,并提出了技术展望。
Web应用采用客户端和服务器端程序主要通过TCP/IP协议层之上的超文本传输(HTTP)协议来进行信息传输和事物处理。典型的客户端程序通常是Web浏览器(如FireFox和微软的IE浏览器)。在Web服务器端存放着可以接受外部访问的Web资源。Web资源包括静态文本文件,超文本标记语言文档,媒体文件,客户端代码,动态脚本等[1-4]。其Web应用方式如图1所示。
图1 Web应用方式
一个典型的HTTP会话中,Web客户端程序对服务器通过一系列的HTTP客户命令发起请求。请求中包括需要访问的资源的路径,和各种请求头文件信息和参数。Web服务器处理请求并返回标识命令执行结果的状态信息。若请求成功执行,那么在返回的信息体中包含有请求的资源,或者服务器通过返回将浏览器导向其它的地址或者资源[5-6]。
根据上述所分析的Web特点,将Web应用面临的安全威胁分类为:客户端、服务器端以及客户端和服务器端之间的数据传输安全威胁三类[7-8]。
客户端安全威胁主要包括有浏览器安全威胁、跨站脚本攻击、点击劫持等[9]。
1.1.1 浏览器安全威胁[9]
浏览器是客户端主机上运行的应用程序,主要实现向Web服务器发送各种请求,并对Web服务器发来的超文本信息和各种数据进行解析和显示,早期的浏览器只提供HTML静态页面的解析显示,但随着脚本和插件技术的不断发展,JAVAscript、APPLET、ActiveX、FLASH等脚本和插件技术的广泛应用,使浏览器功能极大增加,丰富了Web页面的显示,但也给Web应用带来了新的安全问题。作为互联网重要入口的浏览器,黑客通常利用浏览器软件自身漏洞,对客户端实施各种攻击,其主要的安全威胁包括:Cookie的安全问题和浏览器自身漏洞等。
Cookie是存于客户端的、为服务器端维护客户信息的一段信息。其存在形式通常是一个储存于浏览器目录中的文本文件,Cookie中可能包含有与用户有关的敏感信息,如网站用户名、密码或其他个人信息等。黑客可能通过非法手段获取Cookie等信息,使得用户个人信息泄漏。
同其他所有应用软件一样,浏览器软件自身也存在着漏洞,如微软IE8浏览器中存在的CSS跨站漏洞,黑客利用该漏洞可发起CSS跨站攻击,使得无需用户做任何操作就能获得对用户电脑的本地控制权。
1.1.2 跨站脚本攻击
跨站脚本攻击通常指黑客通过 HTML注入技术对网页进行篡改,插入恶意脚本,使得用户在浏览网页时,对用户浏览器进行控制。跨站脚本攻击长期以来列为客户端Web安全中的头号威胁。跨站脚本攻击主要目的之一是获取授权用户的Cookie信息。在服务器端,每一个包含认证 Cookie的Web请求都看作来自与之相关用户发出的请求,所以,攻击者可以利用窃取的Cookie冒充授权用户完成当前会话。跨站攻击通常有两种方式[4,9]:
持久性攻击:攻击者将恶意代码存储在与Web应用程序交互的数据库中,当用户访问请求动态页面时,Web应用程序从数据库中返回恶意的Javascript代码给用户。用户浏览器执行该脚本后,将用户的Cookie发送给攻击者控制的服务器。
反射攻击:这种方式下,攻击的脚本没有存储在服务器端,而是在攻击过程中反射给用户。它通过给别人发送带有恶意脚本代码参数的统一资源定位符(URL,Uniform Resource Locator) ,当URL地址被打开时,特有的恶意代码参数被HTML解析执行。其攻击特点是非持久化,必须用户点击带有特定参数的链接才能引起。
1.1.3 点击劫持
点击劫持是一种视觉上的欺骗手段,黑客通常使用一个透明的不可见的Web元素,将网页上的一部分进行覆盖,当用户在点击该页面时,可能在不知情的情况下点击透明的Web元素,从而实现对用户点击操作的劫持,通过对这些透明不可见的Web元素的位置调整,黑客可以诱使用户恰好点击在该Web元素的一些功能性按钮上,从而实现一些特定的攻击功能。如ClinkJacking攻击,既是通过FLASH构造的点击劫持,在完成一系列复杂动作后,黑客最终控制了用户电脑的摄像头。
服务器端安全与 Web服务器,Web应用程序,以及数据库的漏洞密切相关。而Web应用的复杂性逐渐增加,Web程序开发者和管理者缺乏相应的安全意识使得攻击者有机可乘。通常,WEB服务器端面临的威胁主要包括:
1)服务器端的机密信息以及文件,比如银行账户,信用卡信息的盗取。入侵者一旦获得这些信息,就可以进行角色欺骗,从银行获取经济利益。
2)服务器端的Web应用也可以被用来存储恶意代码,进行网页挂马攻击等。
常见的Web威胁和漏洞包括:SQL注入攻击、远程代码执行攻击等。
1.2.1 SQL注入式攻击
SQL注入攻击利用服务器端代码自身存在的漏洞进行攻击,攻击的目标通过Web客户端代码对Web服务器连接的数据库后端进行攻击。通过这种方式攻击者往往可以逃避现存的大部分安全防护机制,而直接通过窃取的权限达到对非授权数据非法访问的目的。SQL攻击存在大量的方法,攻击者可以依据Web应用程序中存在何种漏洞来针对性地选择有效的攻击方法。
1.2.2 远程代码执行攻击
远程代码执行攻击允许攻击者在漏洞服务器上执行任意代码并获取位于漏洞服务器中的任意数据信息。通常这种漏洞是因为编码的逻辑错误导致,很难通过对 Web应用程序的漏洞的渗透性测试发现,而一旦该漏洞被攻击者成功利用,整个Web服务器都会沦为攻击者的控制之下。如PHP系统中的XMLRPC漏洞,XML-RPC是一组允许软件运行在异构的操作系统环境中的规范,支持通过网络的远过程调用。XML-RPC使得攻击者可将未经检验的恶意代码传入到远端XML-RPC服务器的eval()函数中进行执行,从而达到攻击的效果。
在客户端和服务端中的数据传输也容易遭到破坏,常见的攻击方式包括主动攻击和被动攻击两种。依赖于向网络中写入数据包的攻击被称做主动攻击,这种主动攻击方式,可向服务器或客户端注入被修改的信息,从而达到攻击的目的。只涉及从网络中读取数据包的攻击被称之为被动攻击,这种攻击方式可窃听网络中的敏感数据,如用户名、密码、个人信息等,盗取个人隐私。
依照上述 Web应用数据安全分析,常用的Web应用数据安全防护方法可包括客户端安全防护、服务器端安全防护和数据传输安全防护。
针对浏览器和主机操作系统的安全威胁,在安全防护方面需要及时的更新浏览器版本和操作系统补丁,及时堵住安全威胁漏洞。对于Web客户端脚本等威胁,为了防御和对抗Web客户端攻击威胁,可使用网站检测方式对网站的网页进行检查,一般的恶意网页检测技术分为两类:静态检测和动态检测。静态检测即采用代码走查或自动化代码分析等方法,静态检查网页代码中是否包含恶意代码;与静态检测机制相比,动态检测通常速度较慢,但是针对复杂的恶意网页有较高的识别率。如当恶意代码采用了复杂的加密算法或代码变换方式,因为基于动态执行的检测技术,由于能获得恶意程序执行的过程信息,详细的行为特征,所以基于此技术的检测方式有很高的准确率。而静态分析技术通常是依赖与恶意代码的签名特征分析技术很难获得较高的准确率。
针对服务器端的安全威胁,其安全防护对策主要包括:
(1) AJAX保护机制
AJAX保护机制类似传统 Web应用的保护机制,包括:与数据库互动时常态性使用参数化查询、服务器端输出的所有响应须以 HTML编码后再输出、使用“innerText”属性代替“innerHtml”、避免在Ajax调用中包含敏感信息,以及选择适合的数据结构与平台等机制。
(2) 输入验证
避免只有客户端的验证,需验证所有经由客户端及服务端的输入处理,例如验证HTTP表头、小甜品(cookie)、URL参数、POST数据及传送至服务器端的查询字符串,严格验证检查所包含的用户输入数据型态、长度及格式。
(3) 客户端程序代码安全
保护机制包括:不要部署商业逻辑组件在客户端应用系统中、过滤掉不可信任的第三方外来程序、避免执行跨网段的后端调用、在信息处理前即先在浏览器端执行过滤,以及保护诸如document.write()之客户端调用等机制。
(4) SOAP过滤与WSDL强化机制
一般的防火墙或在HTTP层之内容过滤均无法防御Web服务之攻击,须要在SOAP层的过滤与监督,尤以网络脚本应用程序接口(ISAPI, Internet Script Application Program Interface)层过滤为基本要素,而WSDL系资料主要来源,不能有任何泄露,其强制机制包括程序设计时只提供必要的函数,以及仅能经由安全套接层(SSL,Secure Sockets Layer)启动等。
(5) 认证授权与安全程序开发机制
保护机制包括:系统开发者应执行WSDL访问控制、使用安全断言标记语言(SAML,Security Assertion Markup Language)、WS-Security凭证、在存取访问前执行SOAP及XML过滤,以及在开发过程中采用错误程序代码管理、例外管理,输入验证、SQL等整合机制。
针对Web应用的数据传输,可基于SSL技术对传输的数据进行加密,实施机密性保护,客户端和服务器端的传输协议主要包括HTTP、RTP、RTMP等。其中HTTP协议用于客户端和服务器端的网页传输等,RTP和RTMP协议等主要用于客户端和服务器端的多媒体数据传输,这些传输协议均使用SSL技术实现了其对应的安全协议,包括:HTTPS、SRTP、SRTMP协议等。
2.3.1 HTTPS协议
在SSL 上运行HTTP 的组合即称为HTTPS,当在HTTP 中建立了 TCP 连接后,客户端先发送一个请求,服务器随即回应一个文档。而在使用SSL的时候,客户端先创建一个TCP 连接,并在其上建立一条SSL 通道,然后再在SSL 通道上发送同样的请求,而服务器则以相同的方式沿SSL 连接予以响应。对普通的HTTP 服务器来说,SSL 握手就像是垃圾信息,因为并不是所有的服务器都是支持SSL,所以为了使该过程能够正确的工作,客户端需要某种了解服务器已准备好接受 SSL 连接的方法。使用以https 而不是http 开头的Web 地址(技术上被称做统一资源定位符(URL))来指示应当使用SSL[9-10]。
2.3.2 SRTP协议
SRTP协议主要是针对实时的语音流、视频流在网络上传输的安全性进行的开发,SRTP提供 AES对称加密和HMAC算法认证。所以,SRTP协议的关键在于安全和实时。SRTP可以运行于TCP/UDP之上,但通常都是应用于UDP,因为语音、视频传输通常采用UDP。
信息认证和完整性保护:SRTP默认的认证算法是 HMAC-SHA1,其具体实现如下:发送方计算出M的标签值并添加到数据包中。接收方使用选定的算法和密钥计算出M的一个标签值,然后与收到的标签值进行比较。
SRTP中各种密钥的确定:在SRTP/SRTCP中,使用的密钥并不都通过密钥管理协议来确定,而是通过一个密钥推导函数(key derivation function)来得到。因此,密钥管理协议只需要互换一个 master key(有时还需要一个master salt), SRTP自身通过密钥推导函数来得到其他必需的会话密钥。
2.3.3 RTMPS协议
RTMP的安全协议,此协议是通过SSL加密的RTMP协议,为数据通讯提供安全支持。安全套接层(SSL,Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层对网络连接进行加密。默认端口443。
随着互联网了技术的迅猛发展,以Web为基础的应用程序逐渐代替传统的以桌面为中心的计算模式,成为当今新型计算平台的事实标准。从Web邮件,购物,媒体,金融服务到社交网络,Web应用渗入到每个人的日常生活,扮演着网络信息服务中最重要角色,同时它也成为国计民生息息相关的重要的信息和数据集结地和存储库。由于Web技术的飞速演进,Web相关应用的复杂度急剧增加,各种类型的安全漏洞不断涌现;另一方面 Web服务所承载的重要的数据和关键的程序吸引了越来越多的被经济利益驱动的黑客,并针对安全漏洞发起更猛烈的攻击,其攻击手段也日趋隐蔽和精巧。当前Web应用处在一个蓬勃发展的时代,同时也是安全威胁与日俱增的时代,深入认识安全威胁的机理,开发有效的技术检测已知、未知新型攻击形式,建立准确有效的威胁评估模型将对防范攻击,保护程序和数据安全具有非常重要的意义。
[1]龙娟.Web站点安全评估研究[J].通信技术,2011,44(08):1-2.
[2]黄耀锋,吴迪.Web应用的安全现状及防护[J].科技资讯,2011,35(16):16.
[3]潘恒,谢彦彬.Web应用安全风险评估研究[J].中原工学院学报,2011,22(06):53-56.
[4]吴翰清.白帽子讲 Web安全[M].北京:电子工业出版社,2012年5月.
[5]周颖杰,刘彩霞,左燕飞.一种分布式移动核心网安全架构的设计与研究[J].通信技术,2009,42(02):241-243.
[6]刘涛,樊长安.基于代理技术的服务器群组防护方法[J].信息安全与通信保密,2009(11):91-93.
[7]程云鹏.捷普助力运营商 Web应用全面安全[J].信息安全与通信保密,2011(12):79-80.
[8]杨林,杨鹏,李长齐. Web应用漏洞分析及防御解决方案研究[J].信息安全与通信保密,2011(02):58-60.
[9]罗云庚.浏览器安全技术研究[J].计算机与现代化,2004(12):138-140.
[10]杨淑琴,朱宁贤.IE浏览器的安全防范策略初探[J].网络安全技术与应用,2008(07):41-43.