程序的漏洞是怎么回事?

程序的漏洞是怎么回事?,第1张

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中认证方信世式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。 7}^~

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 &[,

漏洞与具体系统环境之间的关系及其时间相关特性 4O.,U6

漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。 ut](

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 ^Fwl

漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。 c

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 ow?jl

因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。 R9Y:i

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 @d

同时应该看到,对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问谨坦漏题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,既使是以前所作的工作也会逐渐失去价值。 ?HRQ

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 C$Vw

二、漏洞问题与不同安全级别计算机系统之间的关系 K /y?"

目前计算机系统安全的分级标准一般都是依据“橘皮书”中的定义。橘皮书正式名称是“受信任计算机系统评量基准”(Trusted Computer System Evaluation Criteria)。橘皮书中对可信任系统的定义是这样的:一个由完整的硬件及软件所组成的系统,在不违反访问权限的情况下,它能同时服务于不限定个数的用户,并处理从一般机密到最高机密等不同范围的信息。 |V$,

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 81vVT

橘皮书将一个计算机系统可接受的信任程度加以分级,凡符合某些安全条件、基准规则的系统即可归类为某种安全等级。橘皮书将计算机系统的安全性能由高而低划分为A、B、C、D四大等级。其中: 92.us

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 1<`e

D级——最低保护(Minimal Protection),凡没有通过其他安全等级测试项目的系统即属于该级,如Dos,Windows个人计算机系统。 ]Zl

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 LSI'fr

C级——自主访问祥烂控制(Discretionary Protection),该等级的安全特点在于系统的客体(如文件、目录)可由该系统主体(如系统管理员、用户、应用程序)自主定义访问权。例如:管理员可以决定系统中任意文件的权限。当前Unix、Linux、Windows NT等作系统都为此安全等级。 TKGp,[

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 x

B级——强制访问控制(Mandatory Protection),该等级的安全特点在于由系统强制对客体进行安全保护,在该级安全系统中,每个系统客体(如文件、目录等资源)及主体(如系统管理员、用户、应用程序)都有自己的安全标签(Security Label),系统依据用户的安全等级赋予其对各个对象的访问权限。 L)

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 z>C

A级——可验证访问控制(Verified Protection),而其特点在于该等级的系统拥有正式的分析及数学式方法可完全证明该系统的安全策略及安全规格的完整性与一致性。 '

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 5

可见,根据定义,系统的安全级别越高,理论上该系统也越安全。可以说,系统安全级别是一种理论上的安全保证机制。是指在正常情况下,在某个系统根据理论得以正确实现时,系统应该可以达到的安全程度。 Ou@

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 8*DX_

系统安全漏洞是指可以用来对系统安全造成危害,系统本身具有的,或设置上存在的缺陷。总之,漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷,作系统和其他软件编程中的错误,以及在使用该系统提供的安全机制时人为的配置错误等。 Yu

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 uv?

安全漏洞的出现,是因为人们在对安全机制理论的具体实现中发生了错误,是意外出现的非正常情况。而在一切由人类实现的系统中都会不同程度的存在实现和设置上的各种潜在错误。因而在所有系统中必定存在某些安全漏洞,无论这些漏洞是否已被发现,也无论该系统的理论安全级别如何。 v&T

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 \

所以可以认为,在一定程度上,安全漏洞问题是独立于作系统本身的理论安全级别而存在的。并不是说,系统所属的安全级别越高,该系统中存在的安全漏洞就越少。 N7

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 9nx'

可以这么理解,当系统中存在的某些漏洞被入侵者利用,使入侵者得以绕过系统中的一部分安全机制并获得对系统一定程度的访问权限后,在安全性较高的系统当中,入侵者如果希望进一步获得特权或对系统造成较大的破坏,必须要克服更大的障碍。 yF0#Ci

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 S$'

三、安全漏洞与系统攻击之间的关系 D/5>H

系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。 (d\R>

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 -k5yx[

漏洞虽然可能最初就存在于系统当中,但一个漏洞并不是自己出现的,必须要有人发现。在实际使用中,用户会发现系统中存在错误,而入侵者会有意利用其中的某些错误并使其成为威胁系统安全的工具,这时人们会认识到这个错误是一个系统安全漏洞。系统供应商会尽快发布针对这个漏洞的补丁程序,纠正这个错误。这就是系统安全漏洞从被发现到被纠正的一般过程。 8+b6'

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 [na/k

系统攻击者往往是安全漏洞的发现者和使用者,要对于一个系统进行攻击,如果不能发现和使用系统中存在的安全漏洞是不可能成功的。对于安全级别较高的系统尤其如此。 z.Ul

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 )P<#[

系统安全漏洞与系统攻击活动之间有紧密的关系。因而不该脱离系统攻击活动来谈论安全漏洞问题。了解常见的系统攻击方法,对于有针对性的理解系统漏洞问题,以及找到相应的补救方法是十分必要的。 0}V

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 `k2G

四、常见攻击方法与攻击过程的简单描述 uNRz]N

系统攻击是指某人非法使用或破坏某一信息系统中的资源,以及非授权使系统丧失部分或全部服务功能的行为。 m*

©黑色海岸线网络安全技术论坛 -- 自由,开放,免费,共享 E-

通常可以把攻击活动大致分为远程攻击和内部攻击两种。现在随着互联网络的进步,其中的远程攻击技术得到很大发展,威胁也越来越大,而其中涉及的系统漏洞以及相关的知识也较多,因此有重要的研究价值。 jU

可以修复的,上网下载相应的补丁。对程序是没有影响的

一般我们写的一些小程序我们大可可以放心,我们担心漏洞的问题主要是

关注我们的程序是否会遭到破坏,我们知道我们写的东西一般是依附在一定的

*** 作系统的,而公布出来的漏洞主要是针对 *** 作系统或者是和系统一起

捆绑的应用程序,或者一些大的常用的一些行业软件,漏洞的发现很大程度

上是一些专业安全公司的高级人员,他们可能会首先分析一些协议,看看会

不会发现协议上的一些漏洞,还有就是一些代码溢出的漏洞。

不过这些都是要花费大量的时间的。具体你可以到百度上面进行查择相关主题

如何发现程序的安全漏洞 !!薯皮

如果一个程序有错误,并且只在某些特殊的情况下面出现,它并不是什么大问题。通常,你能够避开这些特殊的情况,使得程序中的错误故障不会发生危害。你甚至可以按照你的意愿,在你的程序中加入这些小小的“臭虫”。

但是,有时有些程序处于安全界限的边缘位置。他们从另外的程序作为输入,但不是按照程序本来的存取方法。

我们常见的一些例子:你从的邮件阅读器读取任何人给你发的邮件,然后显示在你的显示器上,而它们本不应当这样做的。任何被接在因特网上的计算机的TCP/IP栈都数乎差从因特网上的获得任何人的输入信息,并且能够直接存取你的计算机,而你的网上邻居们确不能这样。

任何具有这种功能的程序都必须小心对待。如果在其中有任何的小错误,它就能在允许任何人-未被授权的人做任何的事情。具有这种特性的小“臭虫”被叫做“漏洞”或者更正式地被叫做“弱点”。

这里有一些漏洞的共同特点。

心理学上问题

当你写软件的正常部分的时候,如果用户的*作是正确的,那你的目的是完成这件事。当你写软件的安全敏感部分的时候,你一定要使得任何没有被信任的用户都不可能完成*作。这意味着你的程序的很大部分必须在很多情况下功能正常。

编制加密和实时程序的程序员精于此道。而最其程序员则由于他们的通常的工作习惯使得他们的于使他们的软件从未考虑安全的因素,换而言之,他们的软件是不安全的。

变换角色漏洞

很多漏洞是从不同的运行着的程序中发现的。有时是一个极小的错误或者及其普通的错误也会造成安全漏洞。

例如,假设你有本来打算让你在打印你的文档之前想通过PostScript解释器预览它。这个解释器不是安全敏感的程序;如果你不用它,它一点也不会成为你的麻烦。但是一旦你用它来处理从别人那里得到的文件,而那个人你并不知道也不值得信任。这样你就可能招致很多麻烦。他人可以向你发送能删除你所有文件或者复制你所有文件到他人可以得到的地方的文档。

这是大部分Unix TCP/IP栈的脆弱性的根源-它是在网络上的每个人都值得信任的基础上开发的,而被应用在这个并不如当初所想象安全的环境中。

这顷顷也是Sendmail所发生的问题的根源。直到它通过审查,它一直是很多是漏洞的根源。

再更进一步讲,当函数在合理的范围内使用时是安全的,如果不这样的话,他们将造成无法想象的灾难。

一个最好的例子就是gets()。如果你在你控制输入使用gets()函数,而你正好输入比你预定输入大得多的缓冲区,这样,你就达到了你的目的。对付这个得最好的补丁就是不要做类似这样的事或者设定比原先大的多的缓冲区,然后重新编译。

但是,当数据是来自非信任的数据源的时候,gets()能使缓冲器溢出,从而使程序能做任何事情。崩溃是最普通的结果,但是,你通常能地精巧地安排使得数据能象代码一样执行。

这就是它所带给我们的...

缓冲区溢出漏洞


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12224613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存