浅谈Web应用程序的安全威胁与防护

2013-08-06 12:52王志刚曲善广吴东明
网络安全技术与应用 2013年5期
关键词:缓冲区漏洞应用程序

王志刚 曲善广 吴东明

信息工程大学 河南 450004

0 引言

近年来,各种Web网站攻击事件是频频发生, SQL注入,网页被篡改、信息失窃、甚至被利用成传播木马的载体等等。Web安全威胁形势日益严峻,Web安全防护该何去何从?如何保证Web应用程序自身的安全性,更好的为用户提供快捷稳定的服务,是我们必须应对的挑战。

1 Web安全威胁分析

Web网站的体系架构一般分为三层,底层是操作系统,中间层是Web服务器、数据库服务等通用组件,上层是内容和业务相关的Web应用程序,这三层架构中任何一层出现了安全问题都会导致整个Web网站受到威胁,如图1所示。

图1 Web网站安全威胁架构示意图

从上图我们可以看出,这三层架构中任何一层都不可避免地存在漏洞,具有一定的安全隐患,具体如下。

1.1 操作系统安全

计算机病毒、后门和黑客攻击是操作系统所受到的安全威胁中最为人们熟悉的几种形式。

(1) 计算机病毒。本质上是一个程序或一段可执行代码,并具有自我复制能力及隐蔽性、传染性和潜伏性等特征,如CIH病毒,Ska蠕虫等,其通常处于潜伏状态,但在特定的逻辑条件满足的情况下会激活和执行,对系统功能造成严重破坏。

(2) 后门(或称天窗)也是构成操作系统威胁的重要形式之一。其本质上通常是为方便操作系统测试而在操作系统内部预留的特别命令入口,或者是专门在操作系统内部设置的可供渗透的缺陷或漏洞,一般不容易发现。但一经发现和非法利用,则会穿透整个系统安全机制并造成严重的后果。

(3) 黑客攻击。则表现为具备某些计算机专业知识和技术的人员通过分析挖掘系统漏洞,利用网络对特定系统进行破坏,使功能瘫痪、信息丢失、系统被入侵等,常见的攻击方式如拒绝服务攻击,即通过消耗网络带宽或频发连接请求阻断系统对合法用户的正常服务或利用操作系统漏洞,获得目标用户系统的控制权,进行恶意操作,修改网站内容,窃取信息,甚至系统崩溃。

1.2 通用组件漏洞

通用组件漏洞主要是指Web服务器组件(IIS或Apache等)和数据库(SQL或Oracle等)存在漏洞,影响到Web应用程序的安全。

1.2.1 Web服务器组件漏洞

IIS或Apache等这些服务组件,作为Web应用程序的载体,一旦出现安全问题,那么运行在其上的Web应用程序的安全也无法得到保障。在默认状态下这些服务组件也存在不少安全漏洞,如Windows server操作系统自带的IIS6在默认状态下存在文件解析漏洞,Apache HTTP Server畸形Range选项处理远程拒绝服务漏洞等,许多非法攻击者往往会充分利用这些漏洞,来对服务器系统进行安全攻击,最终导致网站被黑或网络管理权限发生丢失。

1.2.2 数据库安全漏洞

SQLsever、Oracle等数据库安全威胁从来源上,大致可以分为四类:缺省安装漏洞、人为使用上的漏洞、数据库设计缺陷、数据库产品的bug。

(1) 缺省安装漏洞。在主流数据库中往往存在若干缺省数据库用户,并且缺省密码都是公开的,攻击者完全可以利用这些缺省用户登录数据库。

(2) 人为使用上的漏洞。在很多系统维护中,数据库管理员并未细致地按照最小授权原则给予数据库用户授权,一个普通的数据库维护人员被授予了任意表的创建和删除、访问权限,甚至是给予DBA角色。另外,有些用户口令复杂度不高,攻击者可能暴力破解。

(3) 数据库设计缺陷。有些数据以明文形式放置在存储设备中,存储设备的丢失将引起数据泄密风险。在数据库中,以sys和sa为代表的系统管理员,可以访问到任何数据;除了系统管理员,以用户数据分析人员、程序员、开发方维护人员为代表的特权用户,在特殊的时候,也需要访问到敏感数据,从而获得了权限,这些都为数据的泄密留下了极大的隐患。

(4) 数据库产品的Bug。缓冲区溢出,使数据库内核中存在对于过长的连接串、函数参数、SQL语句、返回数据不能严谨的处理,造成代码段被覆盖。拒绝服务攻击漏洞,可以导致服务拒绝访问,如命名管道拒绝服务、拒绝登录、RPC请求拒绝服务等。权限提升漏洞,黑客攻击者可以利用数据库平台软件的漏洞将普通用户的权限转换为管理员权限。

1.3 Web应用程序安全

Web应用程序风险经历了从Web服务器的频繁遭受攻击,到针对PHP、ASP等动态网页技术本身漏洞攻击,再到现在的不局限于具体动态网页实现技术的各种跨站脚本攻击(XXS)和各种数据注入攻击,攻击的目标和手段不断变化,其主要表现如下。

1.3.1 缓冲区溢出攻击

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。这种攻击方式一般是通过构造超长请求字符串来试探是否存在漏洞,几乎可以应用于所有Web应用程序,在适当的条件下,缓冲区溢出攻击往往能让攻击者在受害者机器上以相当高的权限执行任意命令,利用缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。

1.3.2 跨站脚本攻击

攻击者利用Web程序对用户输入输出检查不充分的时候,可盗用用户账户/会话、cookie等,从而盗取用户资料、进行病毒侵害或者利用用户身份进行某种攻击动作。

1.3.3 SQL注入攻

通过利用SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,获得系统或数据库管理员权限,从而达到网页篡改或破坏网页的目的。

2 Web安全防护措施

基于以上分析,要提高Web网站的安全性,要及时对服务器操作系统、Web通用组件和数据库等进行补丁更新,安全设置,同时也要对Web 应用程序进行检视,尽量减少网站的安全漏洞,主要防护措施如下。

2.1 操作系统防护

密切注意操作系统官方网站发布的最新系统补丁、安全工具和建议,并对系统及时修补,卸载不必要的应用程序和组件,东西越少越安全,禁用SMB服务等不需要的服务,利用防火墙阻断没必要保留的监听端口,对有交互式登陆权限的用户人数加以限制等,严格物理安全规章制度避免遭受离线攻击。

2.2 通用组件防护

(1) Web服务器组件检测。定期对Web服务器组件进行漏洞检测,及时修补,只开启必要的功能,关闭不需要的端口,设定账户专门运行Web服务器组件,上传文件类型、上传目录权限、账户权限严格控制。

(2) 数据库安全防护。对数据库进行全面评估确定必要的功能,禁用不需要的组件减少攻击面,定期进行漏洞检查,及时修复补丁,设置本地数据库专用账户,设置账户除运行数据服务外的最低权限,对数据库系统安装目录及相应文件访问权限进行控制。删除默认、空白以及强度弱的登录凭证。严控特权用户,将用户设置为组或者角色的一部分,通过角色来管理权限,找出不安全的配置,重新进行配置,对重要数据加密存储,制定数据备份计划,及时对数据进行备份,并妥善保存。

2.3 Web应用程序防护

(1) 针对缓冲区溢出攻击。一方面,要关闭一些不必要的特权程序,及时给程序和漏洞打上补丁,当然补丁的来源越可靠越好。另一方面,程序开发过程中代码编写要正确,在所有拷贝数据的地方进行长度和有效性检查,确保目标缓冲区中数据不越界并有效,缓冲区不可执行。

(2) 针对“跨站点脚本”攻击。对输入参数中的特殊字符进行过滤,对输出进行HTML编码,如果应用程序设置了cookie,一定要使用微软的HTTPonly cookie,定期检查应用程序是否存在XSS漏洞。

(3) 针对“SQL注入”攻击。凡是来自客户端的输入,都要进行完备的输入检查,做出尽可能多的限制。把SQL语句替换为存储过程、预编译语句或者使用ADO命令对象,如果因为某种原因无法使用存储过程,就应该吧SQL语句修改为带参数的查询。锁定ODBC不向客户端返回出错消息,锁定对数据库服务器的配置,对用户、角色和访问权限做出严格、明确的设定。

3 结束语

Web应用程序的迅速发展带给我们更加愉悦的用户体验的同时必须看到,Web应用程序由于HTML代码的透明性和HTTP协议本身的脆弱性,其漏洞利用技术难度要比传统的蠕虫和木马技术低很多,Web应用程序的安全性也正变的越来越复杂。所谓“道高一尺魔高一丈”,我们必须要有创新的技术应用和强烈的责任心来应对Web应用程序不断变化的安全建设需求。

[1] 秦育华.WEB网络应用程序安全威胁及对策研究与探讨[J].电脑知识与技术.2010.

[2] 李昌.Web应用安全防护技术研究与实现[D].湖南:中南大学.2010.

[3] 王燕,张新刚.数字化校园Web应用典型安全威胁及其防护

[J].实验室研究与探索.2012.

[4] 黄玮.Web应用程序发掘原理[J/OL].中国科技论文在线.http://www.paper.edu.cn/releasepaper/content/2006.

[5] George Kurtz(著),钟向群(译).黑客大曝光[M].北京:清华大学出版社.2010.

猜你喜欢
缓冲区漏洞应用程序
漏洞
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
基于网络聚类与自适应概率的数据库缓冲区替换*
三明:“两票制”堵住加价漏洞
漏洞在哪儿
一类装配支线缓冲区配置的两阶段求解方法研究
高铁急救应补齐三漏洞
关键链技术缓冲区的确定方法研究
初涉缓冲区