web安全性

Web安全性

摘要:计算机系统安全漏洞的研究以及漏洞库的建设,对于提高系统安全性、减少安全事件发生具有重要意义。目前安全漏洞研究的主要问题在于漏洞分类分级不够完善,同时较小的漏洞库容量也使得对系统安全漏洞的分析研究无法充分展开。本文首先详细介绍了计算机漏洞的概念、属性和特点,归纳总结了国内外漏洞研究的现状。其后,在对漏洞数据库中的大量漏洞进行分析的基础上,本文着重对缓冲区溢出漏洞和安全编程方法两方面进行了研究。利用缓冲区溢出漏洞进行的缓冲区溢出攻击是Internet上危害最大、最广泛的一种攻击手段。本文在讨论缓冲区溢出攻击的内存模型和工作原理的基础上,系统的提出了贯穿软件生命期,包括编程开发、编译测试、安全配置使用三个阶段的完整缓冲区溢出防范体系模型。并进行了缓冲区溢出漏洞的检测、利用方面的研究。同时为了实现在源代码级消除安全漏洞的目的,本文探讨了利用安全威胁模型进行安全编程的方法,并提出了安全编程整体模型的框架和原则,对安全编程方法作了比较详尽的讨论,为今后进一步的研究打下了基础。

关键词:  安全漏洞漏洞库缓冲区溢出安全编程

1安全漏洞简介:

系统安全漏洞,也叫系统脆弱性(Vulnerability),是计算机系统在硬件、软件、协议的设计与实现过程中或系统安全策略上存在的缺陷和不足;非法用户可利用系统安全漏洞获得计算机系统的额外权限,在未经授权的情况下访问或提高其访问权,破坏系统,危害计算机系统安全。系统安全漏洞是针对计算机安全而言的,广义的系统安全漏洞是一切导致威胁、损坏计算机系统安全(可靠性、可用性、保密性、完整性、可控性、不可抵赖性)的因素。每个平台无论是硬件还是软件都存在漏洞,没有绝对安全的系统。在传统的科学领域和工程实践中,对复杂系统的脆弱性(漏洞)的分析研究已经有了很长的历史。例如,航空业从事故记录中提取漏洞信息,并对这些信息分析研究,并从中发现规律或参数,并把发现的信息应用到新的产品系统中,通过这种方法,极大地改进提高了新产品的安全性。这种透过杂乱的表面现象,并且从中发现一定的规律是人类所拥有的基本特征和特殊能力。对计算机漏洞确切、统一的定义有利于刻划漏洞的根本特征,有助于规范对漏洞本质的描述,而对漏洞的统一描述有助于各研究团体之间在计算机漏洞研究领域的成果和学术交流。从某种程度上讲,对计算机漏洞的研究扩展了计算机系统安全研究的广度和深度。此外,按照一般可接受的原则,对计算机系统安全漏洞进行科学分类,研究漏洞的表现和形成原因,这些工作能够增强对计算机软件漏洞本质的进一步理解,有助于防止程序设计人员在编写程序时产生安全漏洞;可以使计算机管理使用人员了解其系统中可能存在的漏洞隐患,从而有针对性地消除或阻止安全漏洞的存在;可以使计算机安全专家更加针对性地寻找、分析、发现未知的漏洞,达到防范于未然的目的。

2网络安全编程涉及的方面

2.1操作系统和服务器的安全

作为一个asp开发者或网络信息管理员,必须关注windows和IIS的安全漏洞,安装微软公布的最新补丁,及时更新防病毒软件。ASP程序需要IIS来解释执行,因此A S P的很多安全问题是由于IIS所造成的,如:IIS解析错误造成ASP源码泄漏、IIS的其他服务缺陷造成ASP源码泄漏等。

2.2程序源代码安全

A S P应用程序,一旦发布到运行环境中去后,就很难确保这些源代码不会被流传出去。asp程序采用的是解释性脚本语言语言,以普通文本形式保存。ASP程序可能被任意复制,不能很好地维护版权。而且黑客还能分析ASP程序,挑出漏洞。这就出现了asp程序代码的安全性问题。

2.3数据库的安全

网络编程中一般都把重要数据保存在数据库中,因此必须重视数据库的安全性。数据库的安全性主要指保护数据库,以防止不合法的使用所造成的数据泄密、更改或破坏。在面向多用户开放共享的网络环境下,访问数据库系统的用户必须要求进行身份认证,以防止非法用户访问。

3 Web攻击的类型

3.1 代码注入

代码注入是一种肇因于处理非法数据的电脑臭虫应用。代码注入可被攻击者用来导入代码到某特定的电脑程序,以改变程序的运行进程或目的。代码注入攻击的结果可以是灾难性的。例如说:代码注入可作为许多电脑蠕虫繁殖的温床。如果攻击者使用应用程序的安全上下文运行任意代码,则产生代码注入攻击。如果应用程序使用特权帐户运行,将增加系统受攻击的风险。

3.2会话劫持

如果攻击者捕获了身份验证令牌并控制了其他用户的会话,则发生会话劫持现象.通常,身份验证令牌保存在cookie或URL中.如果攻击者捕获了身份验证令牌,他(或她)会将令牌连同请求一起传递给应用程序.应用程序则将该请求与合法用户会话相关联,这样,攻击者便得到了访问该应用程序受限内容(这些受限内容都要求验证访问身份)的权限.进而,攻击者便有了合法的用户身份和权限. 

3.3身份哄骗

如果恶意用户盗用合法用户的身份访问应用程序,则发生身份哄骗现象.攻击者可以cookie重播方式或不断尝试各种用户名和密码组合(强力密码攻击).在自动强力密码攻击中,攻击者可将字典中的每个词作为密码(字典攻击). 

3.4参数处理

参数是网络中从客户端传递至服务器的一些数据.参数包括表单域、查询字符串、视图状态、cookie和HTTP头.如果使用未经保护的参数传递敏感数据(或传递用于制定服务器安全决策的数据),应用程序可能有信息泄漏的危险,或遭受未授权的访问. 

3.5网络窃听

使用网络中的数据包嗅探(sniff)工具可实施网络窃听攻击,从而捕获网络数据流.网络窃听涉及使用网络监视软件跟踪传递于浏览器和Web服务器之间的数据包.它可导致泄漏应用程序特定的机密数据、检索登录凭据或捕获身份验证cookie。

3.6 信息泄漏

如果攻击者通过探测Web页来找寻引起异常的各种情况,则出现消息泄漏攻击.对于攻击者而言,这是一种颇有成效的攻击方法.因为异常细节信息常以HTML的形式返回并显示在浏览器中,这可能会泄漏很有用的信息,如堆栈跟踪.堆栈跟踪包含数据库连接字符串、数据库名、数据库方案信息、SQL语句以及操作系统和平台版本.

缓冲区溢出漏洞研究

4.1缓冲区溢出漏洞

所谓缓冲区溢出攻击,就是一种利用目标程序的缓冲区溢出漏洞,通过操作目标程序堆栈并暴力改写其返回地址,从而获得目标控制权的攻击手段。自1988年的莫里斯蠕虫事件以来,缓冲区溢出攻击一直是Internet上最普遍,同时也是危害最大的一种网络攻击手段。由于缓冲区溢出漏洞非常常见且易于被攻击,因而对系统造成了极大的威胁。利用缓冲区溢出漏洞,攻击者可以植入并且执行攻击代码以完全达到其目的。被植入的攻击代码可以获得一定的权限(常常是根用户权限)运行,从而得到被攻击主机的控制权。利用溢出攻击,一个Internet用户可以在匿名或拥有一个一般权限的用户的情况下获得系统的最高控制权。

4.2避免使用非安全的C函数

许多缓冲区溢出问题可以直接追溯到标准C库的几个函数中,尤其是那些自身没有进行安全检查的字符串操作,如gets(),strcpy()等,而且在基于C的语言中(如C++),这些非安全函数的问题依然存在。

以下是一段存在缓冲区溢出错误的源代码。在程序中,func()函数拷贝一由255字节组成的字符串到只有16字节大小的缓冲区中。由于使用了strcpy(),因此不会做参数长度检查,当255个字符串拷贝到缓冲区时,缓冲区在开头16个字节填充后就被填满,这样,字符串将继续覆盖堆栈中的其他变量,包括函数的返回地址。如果字符串中含有攻击代码,而被覆盖的返回地址又指向攻击代码,攻击者就可以使自己的代码获得与原程序相同的执行权。通过使用strcpy()函数代替,就能比较安全地拷贝字符串,因为它只会将大小与目标缓冲区相等的数据拷贝。

5.总结与体会

计算机安全漏洞研究的目的在于通过研究漏洞的表现找到漏洞的形成原因,从而增强对计算机软件漏洞本质的进一步理解;防止程序设计人员在编写程序时产生安全漏洞;使计算机管理使用人员了解其系统中可能存在的漏洞隐患,从而有针对性地消除或阻止安全漏洞;使计算机安全专家更加针对性地寻找、分析、发现未知的漏洞,达到防范于未然的目的。所以,可以认为,计算机系统安全漏洞研究是计算机安全体系的研究基础。本文围绕web安全性这一主题,通过对缓冲区溢出漏洞和安全编程方法两方面的研究,分析了几种web攻击的类型,把几种安全技术结合起来,构建了一个web安全组网模型。最后,本人结合发展,浅谈了内嵌的C函数库利用网站漏洞可能给web安全系统带来安全隐患以及入侵途径。

 

你可能感兴趣的:(Web,安全性)