收藏 分享(赏)

信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt

上传人:无敌 文档编号:383948 上传时间:2018-04-04 格式:PPT 页数:43 大小:2.81MB
下载 相关 举报
信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt_第1页
第1页 / 共43页
信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt_第2页
第2页 / 共43页
信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt_第3页
第3页 / 共43页
信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt_第4页
第4页 / 共43页
信息安全原理与实践-第二版11-软件缺陷和恶意软件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、1,信息安全原理与实践,Information Security: Principles and Practice, 2nd Edition,美Mark Stamp著,张 戈译,第11章 软件缺陷和恶意软件,2,11.1 引言,本章主要内容非故意的软件缺陷以及因此而引发的安全问题恶意软件基于软件的攻击类型,3,11.2 软件缺陷,软件缺陷无处不在NASA火星登陆者探测器,共耗资1.65亿美元,最终却由于某个软件错误导致在着陆火星的过程中直接撞毁.丹佛机场的行李装卸系统,该软件中的bug致使机场投入使用的时间比预期晚了11个月之久。据保守估计,商业软件中bug的数量大约会在平均每1000行代码(

2、LOC)0.5个的水平。一些系统中代码行数的近似值,4,在本节中,我们将注意力集中在程序缺陷上面。这些缺陷属于无心之失造成的软件bug,其中蕴含着安全问题。缓冲区溢出竞态条件不完全仲裁恶意软件错误(error)是由人为导致的bug,程序过错(fault)则是软件内部的问题,而系统故障或失效(failure)是从外部可以观测到的现象。例子:int main() int buffer10; buffer20=37;,5,11.2.1 缓冲区溢出,假设Web表单请用户输入数据,比如姓名、年龄、出生日期等等。被输入的信息随后被传送到一台服务器上,而这台服务器会将“姓名”字段中输入的数据写入可以容纳N个

3、字符的缓冲区中。如果服务器软件没有去验证以确保输入的姓名的长度至多为N个字符的话,就会发生一次缓冲区溢出。任何溢出的数据都可能会覆盖掉某些重要的数据,进而会导致系统崩溃(或是线程吊死),这种情况发生的可能性是相当大的。例子:缓冲区和布尔标志位如果缓冲区溢出覆盖了布尔标志位存储的内存位置,Trudy就能够将值“F”(也就是二进制的0值)替换为“T”(也就是二进制的1值),这样该软件就会相信Trudy已经通过了认证。,6,存储器结构及组织方式标识为“text”的区域用于装载代码,而标识为“data”的区域则用于保存静态变量。heap(堆)用于保存动态数据,而stack(栈)可以被视为处理器的“便签

4、簿”。动态变化的局部变量、要传递给函数的参数以及一次函数调用的返回地址等都会被保存在堆栈(stack)中。栈顶指针(Stack Pointer,SP)标识出了栈顶的位置。栈的增长是自底向上的,而堆的增长是自上向下的,7,1. 堆栈溢出堆栈溢出特指一种颇具破坏性的攻击方式,这种攻击依赖于缓冲区溢出。对于堆栈溢出攻击,Trudy的兴趣集中在处于函数调用过程中的堆栈。当函数执行时,堆栈用于为其中的数组缓冲区提供空间。另外,堆栈中还保持了返回地址,当函数执行完毕后,程序可以重新恢复控制并由此继续向下执行。请注意,缓冲区的位置在堆栈中返回地址的位置之上,也就是说,缓冲区在返回地址之后才被压入到堆栈当中。

5、于是,如果缓冲区发生溢出,那么溢出的数据将会覆盖原来的返回地址。正是由于这个关键事实,才使得缓冲区溢出攻击如此致命。,8,如果Trudy溢出了缓冲区,使得返回地址被一些随机的二进制位值覆盖,那么当被调用的函数执行完毕时,程序将会跳转到随机的内存位置。 如图11-5的图解所示,在这种情况下,最有可能的结果就是程序崩溃。,9,通过多次试错,Trudy可能会将原来的返回地址重写为缓冲区的起始地址。这样一来,程序将会尝试“执行”存储在缓冲区中的数据。所以,如果Trudy能够将可执行的代码作为“数据”填充到缓冲区中,那么Trudy就能够在受害者的计算机上执行这些代码。 图11-6中所示的图解,说明了这种

6、精巧版本堆栈溢出攻击的原理。,10,从Trudy的角度来看,实施这种堆栈溢出攻击还存在几个困难。 首先,Trudy可能不会知道被她插入到缓冲区中的恶意代码的精确地址。其次,她可能也不会知道堆栈中返回地址的精确位置。 有两个简单的技巧可以使缓冲区溢出攻击变得要容易实现得多。其一,就是Trudy可以在注入的恶意代码之前填充NOP形式的“登录垫” 。其二,她可以多次重复地插入所期望的返回地址(译者注:这种方式同样可以扩大地址猜测的命中窗口,从而能够提高命中率。图11-7中给出了这种改进后的堆栈溢出攻击的图解说明。,11,要想使缓冲区溢出攻击能够成功,显而易见,首先程序必须包含缓冲区溢出的缺陷。另外,

7、要知道并不是所有的缓冲区溢出都可以被利用,而只有那些可以令Trudy将代码注入系统中的溢出才有利用价值。,2. 堆栈溢出攻击的例子假设Trudy正面临某个应用程序的质询,程序需要她输入一个序列号,而Trudy并不知道这个序列号。 如图11-8中所示,当Trudy运行这个程序,之后输入了不正确的序列号时,该程序就会停止并且不再提供任何更多的信息。然后,Trudy尝试敲入非正常的输入值,想看看这个程序会作何反应。图11-9中呈现的结果表明这个程序存在缓冲区溢出问题。通过对相应报错消息进行仔细分析,Trudy意识到她已经使用字符A精确地覆盖了保存返回地址的两个字节。,12,然后,Trudy就对exe

8、可执行文件进行反汇编,于是就得到了图11-10中呈现的汇编代码。在这段代码当中,最重要的信息就是字符串“Serial number is correct”,在代码中这个字符串出现位置的地址是0x401034。如果Trudy能够利用地址0x401034覆盖掉原来的返回地址,那么该程序就会跳转到“Serial number is correct”,于是她就已经获得了对该程序的使用权,而无须知道有关正确序列号的任何信息。,13,但是,Trudy不能直接输入十六进制的地址以充当序列号,因为这样的输入值会被解释为ASCII码文本。于是,Trudy查找ASCII码表,据此找到值0x401034在ASCII

9、码中的表示是“P4” 。通过对错误消息进行仔细检查,可以看出错误发生的地址是0x341040。显然,Trudy让程序跳转到了这个地址,而不是她预期的地址0x401034。所以,Trudy对她之前的攻击稍作调整,使用地址值0x341040,也就是ASCII 码中的“4P”来覆盖程序中的返回地址。,14,为了完整性起见,我们给出了这个软件的C程序源代码bo.c以及相应的可执行文件bo.exe。Trudy无需访问上面的源程序代码,就已经能够完成缓冲区溢出攻击。 在这个缓冲区溢出攻击的例子中,Trudy并没有在堆栈中执行代码。她只不过是覆盖了函数返回地址而已,据此使得程序跳转执行本已存在某特定地址上的

10、程序代码。- return-to-libc攻击(也被称为“返回库函数”攻击),15,3. 堆栈溢出攻击的预防一种方法就是从软件中消除所有的缓冲区溢出。但是,这个方法听起来不错,做起来却要难得多。另一种解决方案是,当缓冲区溢出发生时检测到此种过错的发生,并随之做出相应的反应。还有一种选择就是不允许代码在堆栈当中执行。对于许多基于堆栈的缓冲区溢出攻击来说,最小化它们所致危害的一种简单方法就是令堆栈为不可执行空间,即不允许代码在堆栈中执行。有一些硬件(以及许多操作系统)支持这个“no execute”选项或是NX标志位。利用NX标志位,内存将会被设置标识,从而使得代码无法在某些特定的位置执行。通过这

11、种方式,堆栈(以及堆和数据存储区)就可以获得保护,以免受很多缓冲区溢出攻击之苦。 使用安全的编程语言,诸如Java或C#之类,将有助于从源头就消除大部分的缓冲区溢出。,16,运行时堆栈检查可以用于防止堆栈溢出攻击。在这种解决方案中,当返回地址从堆栈中弹出时,会对其进行检查以确定没有发生改变。这一点可以通过在将返回值压入堆栈之后立刻压入某个特定的值到栈顶来实现。当Trudy试图覆盖掉返回值时,她就必须要首先覆盖掉这个特定的值,这样就提供了一种用于检测堆栈的途径。这个特定的值就是通常所说的canary(金丝雀) 。图11-13中显示了利用canary值作为堆栈溢出检测手段的图解,17,canary

12、值可以是常量,也可以是依赖于返回地址的值。有时候会使用特殊的常量0x000aff0d,这个常量包含0x00作为首个字节。任何溢出到某个缓冲区并且包含0x00的字符串,都将在这个点上被终止,于是就不会再有更多的堆栈空间被覆盖。 微软公司在其C+编译器当中增加了用于支持canary值的特性。任何使用/GS编译器选项进行编译的程序都会使用canary值来检测运行时的缓冲区溢出。对于最小化缓冲区溢出攻击造成的影响,还有另一选择,就是所谓的地址空间布局随机化(ASLR) 。这种技术已经被用于最新的Windows操作系统以及几个其他的现代操作系统。 不过在实践中,相对而言只有很少数的“随机化”地址空间布局

13、被投入应用。,18,4. 缓冲区溢出:结语在过去的这几个10年当中,对于每一个10年,缓冲区溢出都可以当之无愧地被称为“10年攻击”。 鉴于缓冲区溢出攻击自20世纪70年代以来已为人们所熟知这一事实,通过利用NX标志位的方法,通过使用安全的程序设计语言,以及通过使用ASLR技术等方式,还是有可能对大部分的此类攻击做到防患于未然的。,19,11.2.2 不完全仲裁,C语言函数strcpy(buffer, input)的定义是将输入字符串input中的内容复制到数组buffer中。正如我们在前面已经了解到的,如果input的长度大于buffer的长度,就会发生缓冲区溢出。为了防止这样的缓冲区溢出,

14、程序必须对输入值进行合法性验证,具体方式就是在尝试将数据写入到buffer中之前,要先检查input的长度。如果无法做到这一点,那么这就是不完全仲裁(incomplete mediation)的例子。例子:如果服务器不去确认输入的有效性,那么Trudy也能够得到与上面相同的订单,但却是以特价商品的超低价格共付款25美元就完成了交易,而不是基于合理价格的205美元。,20,11.2.3 竞态条件,在理想情况下,安全处理过程应该是原子的(atomic),意思是说,相关的处理操作应该一气呵成。如果安全处理过程是分阶段进行的,那么所谓的竞态条件(race conditions)就有可能出现在安全过程各

15、阶段执行的临界点上。“竞态条件”意指,这是一种攻击者和处理过程中下一执行阶段之间的一次“竞赛”,虽然实际上这并不像是一场竞赛,毕竟对于攻击者来说,精打细算并拿捏好分寸才是最重要的。例子:mkdir命令设定的工作方式,21,11.3 恶意软件,恶意软件可以被划分为许多不同的类型。病毒(virus),这是一种依赖于其他人或物才能够从一个系统蔓延至另一个系统的恶意软件。迄今为止,病毒都是最为流行的一种恶意软件形式。蠕虫(worm),这种恶意软件与病毒类似,不同的是它们具有自我繁衍和传播的能力,而不需要外界的辅助。这个定义意味着蠕虫是通过网络来扩散和传染的。特洛伊木马(trojan horse),或者

16、简称为木马,这种恶意软件看起来像是正常的软件,但实际上却内含了意想不到的不法功能。后门(trapdoor或backdoor),这种恶意软件会允许开启对某个系统的非授权访问。rabbit,这是一种意图耗尽系统资源的恶意程序。间谍软件(spyware),这是一种特殊类型的恶意软件,它们可以监控键盘敲击行为并进行记录(译者注:这是一种盗取用户口令的方法),可以盗取数据或文件,或是执行一些与此类似的活动。,22,“引导扇区病毒”(boot sector viruses)驻留在引导扇区中,能够在系统启动过程的初期便接管控制。然后,就可以步步为营,在有可能被检测到之前就先行掩盖自身的踪迹。另外一类病毒是所

17、谓的“内存驻留”(memory resident)型病毒,意思是说这类病毒驻留在内存里。对于这种病毒,有必要通过重新启动系统的方式将其刷出内存。例子:Brain病毒莫里斯蠕虫病毒红色代码(Code Red)病毒SQL Slammer病毒等,23,11.3.1 Brain病毒,1986年的Brain病毒除了讨人嫌之外也没有什么危害。这个病毒的重要性在于如下事实:Brain病毒是有史以来的第一个,而且其自身后来也演变成了许多后期病毒的原型。但是,因为这个病毒并没有恶意,所以在用户中间也没有引起什么反响。Brain病毒将自身置于引导扇区以及系统中的其他一些地方,之后该病毒对所有的磁盘访问操作进行屏蔽

18、以避免被检测到,并保持其感染性。,24,11.3.2 莫里斯蠕虫病毒,莫里斯蠕虫病毒是一款设计巧妙、复杂且精密的软件作品,制作者是Cornell大学里的一位孤寂无聊的研究生。莫里斯蠕虫病毒(无意之间)引发的恶劣后果本质上就会像人们戏称的兔子一样,快速而且反复地繁衍传播。莫里斯蠕虫病毒的设计目标包括如下3个方面:确定自身能够将感染力扩散到什么地方。尽最大可能性扩散其感染性。保持不会被发现。为了扩散其自身的感染性,莫里斯蠕虫病毒必须获得相应的权限,以便能够远程访问网络上的主机。为了获得访问权限,莫里斯蠕虫病毒就需要尝试去猜解用户账号的口令字。如果猜解无效,就会试图利用fingerd(UNIX操作系

19、统中finger实用程序的一部分)服务发起缓冲区溢出攻击。另外,也可能会尝试通过sendmail程序的后门缺陷来寻求突破。莫里斯蠕虫病毒的直接后果之一就是,计算机应急响应小组(Computer Emergency Response,Team CERT)被正式组建,该组织已逐渐地发展成为适时计算机安全信息的主要交流发布平台。,25,11.3.3 红色代码病毒,2001年7月,红色代码(Code Red)病毒初来乍到,就在短短大约14个小时里感染了超过300 000个系统。在红色代码病毒传播的过程中,直接感染了几十万台计算机,甚至更多。为了获得对某个系统的访问权限,红色代码蠕虫利用了微软IIS服务

20、器软件中的缓冲区溢出漏洞。红色代码病毒通过监视端口80上的流量信息来寻找其他的潜在攻击目标。红色代码病毒的活动与每月中的具体日期紧密相关。从每月的1号到19号是红色代码病毒的扩散日,这期间病毒会全力以赴进行传播感染。之后,从20号到27号,这个病毒会尝试对网站www. whitehouse. Gov发起分布式拒绝服务(DDoS)攻击。,26,11.3.4 SQL Slammer蠕虫,SQL Slammer蠕虫于2003年1月登上历史舞台,当时,这个病毒在短短的10分钟之内就感染了至少75 000个系统。在SQL Slammer蠕虫传播的高峰,被感染的系统数量平均每8.5秒都会翻一倍。SQL S

21、lammer蠕虫之所以会在互联网流量中造成这样的尖峰,就是因为每一个被感染的站点都会通过随机生成IP地址的方式来寻找新的易感染站点。另外,还可以使用更加高效的搜索策略以更加充分地利用可用的网络带宽。为什么SQL Slammer蠕虫会如此成功呢?其中很重要的一点就是,整个蠕虫病毒体极其短小,可以完整地挤入单独376字节的UDP数据包中。基于“单一的小数据包本身不会带来危害”这样的理论,防火墙通常都会配置成允许零散的小数据包通过。这样,防火墙都会监视“连接”以查看是否会有任何异常发生。,27,11.3.5 特洛伊木马示例,特洛伊木马就是暗藏了某种意料之外功能的程序。这个特洛伊木马源自Macinto

22、sh世界,总的来说并没有危害,但是创作者想要令其为非作歹也是轻而易举的事。例子:,28,双击之后,11.3.6 恶意软件检测,有3种通用的方法用于检测恶意软件第1种,也是最为普通的,是所谓的特征检测(signature detection),这种方法依赖于在某特定恶意软件中找出它所固有的一种模式或特征。第2种方法被称为变化检测(change detection),这种方法就是检测发生了变化的文件。文件意外地发生某些变化可能就暗示着一次不良的感染。第3种方法是异常检测(anomaly detection),目标是检测非正常或类似病毒的文件及行为。,29,1. 特征检测特征通常是创建于某个文件中的

23、二进制位串,其中可能会包含通配符。例子:用于识别W32/Beast病毒的特征就是83EB 0274 EBOE 740A 81EB 0301 0000。我们可以在系统的所有文件中检索这个特征。但是,即便找到这个特征,也还是不能确定我们已经发现了病毒,因为其他无辜的文件有可能也包含了同样的二进制位串。优点:对于那些可以提取出共同特征的已知恶意软件来说,特征检测方法是非常有效的。对于用户和管理员来说负担最小,因为所需要做的无非就是保持特征文件最新以及定期扫描病毒。劣势:特征文件有可能会变得巨大其中包含成千上万乃至几十万的特征都是平常现象这就会使扫描起来比较缓慢。特征文件还必须保持实时更新。通过这种方

24、式我们只能够检测出已知的特征。即便是已知病毒的轻微变体也有可能成为漏网之鱼。,30,2. 变化检测因为恶意软件必定会驻留在系统中的某个位置,所以如果我们检测到系统中的某处有变化,那么或许就意味着一次病毒感染。也就是说,如果我们检测到某个文件发生了改变,那么该文件就有可能被某个病毒感染了。我们将这种方法称为变化检测。假如计算系统中所有文件的哈希值并将这些哈希值安全地保存起来。那么,我们可以定期地重新计算哈希值,再将这些新得出的哈希值与之前存储的哈希值进行比较。如果文件中有一位或多位发生了改变就像有病毒感染的情况一样我们将会发现新计算的哈希值无法与之前计算的哈希值相匹配。优点:几乎不会有漏网之鱼我

25、们可以检测出之前并不知道的恶意软件不足:系统中的文件经常都会发生变化,于是将会产生大量的误判,这就给用户和管理员带来了沉重的负担。,31,3. 异常检测异常检测着眼于发现潜在的任何不正常的、或者类似病毒的、抑或其他形式的恶意活动及行为。异常检测方法的基本挑战在于确定什么是正常的、什么是不正常的,以及如何能够对二者进行区分。这种方法的另外一个重大难题则是对于正常的定义可能会发生变化,于是系统就必须做出调整以适应这样的变化;否则,用户就很有可能会被错误告警淹没,弄得无所适从。优势:某种程度上有望检测出之前所不知道的恶意软件。不足:异常检测方法基本上还没有在实践中获得有效验证。因为有耐心的攻击者可能

26、会让异常活动看起来像是正常的行为。异常检测方法的鲁棒性不够好,以至于无法作为独立的检测系统来使用。,32,11.3.7 恶意软件的未来,在恶意软件的演化过程中,下一步是多态代码(polymorphic code)的使用。在多态病毒中,病毒体是加密的,而解密代码则是改头换面的。所以,病毒自身(也就是病毒体)的特征通过加密被隐藏了,而解密代码由于自身的变化多端当然也不会有任何共同的特征。变形(metamorphic)恶意软件将多态性发挥到了极致。变形蠕虫在感染新的系统之前会先变异。如果变异足够多的话,这样的蠕虫就有可能躲过任何基于特征的检测系统。 病毒编写者追求的另外一个非常明显的发展方向就是速度

27、。也就是说,就像诸如红色代码病毒和SQL Slammer蠕虫之类的病毒,要力求在尽量短的时间之内感染尽可能的机器。,33,蠕虫:SQL Slammer蠕虫Warhol蠕虫flash蠕虫设计精良的 flash蠕虫病毒能够在15秒钟之内将感染力传遍整个互联网。一种设想的针对flash蠕虫病毒的防御措施:部署多台个人入侵检测系统(IDS),再使用一台主IDS来监控这些个人IDS。当主IDS检测到非正常的活动时,就可以设法令其仅在少数的网络节点上继续活动,而暂时性地阻塞通向其他节点的活动。如果被牺牲的网络节点受到不利的影响,那么就说明攻击正在进行当中,但其在另外的节点上将会被阻击。另一方面,如果这是错

28、误告警,那么其他节点上的情况只是稍有延迟而已。,34,11.3.8 计算机病毒和生物学病毒,当前流行使用生物学来比拟计算机科学与技术。在安全领域,就使用了很多这样的类比。在恶意软件这个行当里,尤其是计算机病毒方面,这样的类比相当直观。在计算机疾病和生物学疾病之间还是存在一些重要的差异。例如,对于互联网,实际上几乎没有距离的概念,所以许多用于生物学疾病的模型无法照搬到计算机疾病和网络疾病上。另外,在自然界,疾病的来袭或多或少地有些随机性,但是在计算机系统中,黑客们往往是特别针对那些最有价值或是最易感染的系统发起攻击。 恶意软件对于蜂窝电话的影响还远没有达到像计算机系统那样备受摧残苦不堪言的程度。

29、,35,11.4 僵尸网络,僵尸网络(botnet)是指大量被感染计算机的集合,这些计算机均在被称为僵尸主控机(botmaster)的控制之下。一直到最近,僵尸主控机通常都是利用互联网中继聊天(Internet Relay Chat,IRC)协议来实现对所属僵尸(bots)的管理和控制。不过,比较新一些的僵尸网络常常会使用 Peer-to-Peer(P2P)协议架构,因为这样对于实施追踪和关停等措施来说会更为困难。僵尸网络已经被证明是发送垃圾邮件和发起分布式拒绝服务(DDoS)攻击最为理想的工具。,36,11.5 基于软件的各式攻击,本章将要讨论的主题包括腊肠攻击(salami attacks

30、)线性攻击(linearization attacks)定时炸弹(time bombs),37,11.5.1 腊肠攻击,在腊肠攻击中,程序设计者从单笔交易中悄无声息地截留下一小部分的钱,这种方式就仿佛从一根意大利腊肠上面切下来薄薄的一片一样。这些切片对于受害者来说必然是难以觉察出来的。例子:程序员在薪资扣缴税款的计算中给每个雇员都增加了几美分,只是在入账时把这些额外的钱作为他自己的税计入。位于佛罗里达州的一家租车专营公司适度夸大了油箱的容积,以便能够从顾客那里收取更多的油钱。有4个人,在洛杉矶拥有一座加油站。他们破解了一个计算机芯片,从而使得加油机能够多计算已输出油的数量。,38,11.5.2

31、 线性攻击,线性化是一种方法,可以应用于广泛的攻击类型,从传统的溜门撬锁一直到最顶尖的密码分析技术,都不乏其身影。例子:,39,Trudy如何利用这段程序代码呢?,Trudy就可以选择一个包含8个字符的字符串,并通过变化第一个字符来遍历所有的可能性。总结来说,利用上述方法,Trudy可以在线性时间内完成对序列号检查程序的攻击,而不需要执行一种指数级的搜索尝试。在这种线性攻击中,Trudy究竟能够获得多大的优势呢?假设某个序列号的长度是8个字符,其中每个字符具有128个可能的取值。那么,一共就有 1288 = 256 种可能的不同序列号。如果Trudy必须随机地猜解整个完整的序列号,那么她获得正

32、确序列号所需要尝试的次数将会是255次左右,这是极其庞大的工作量。另一方面,如果Trudy能够利用线性攻击方法,那么对于每一个字符,平均而言将只需要 128/2 = 64 次猜测,总共加起来预计的工作量大约是864=29。在真实世界中,有一个线性攻击的例子就发生在TENEX系统中。,40,11.5.3 定时炸弹,定时炸弹是另外一种有趣的基于软件的攻击类型。在1986年,Donald Gene Burleson告诉他的老板停止从他的薪水中代扣所得税。因为这个要求是不合法的,所以公司拒绝了他的要求。而Burleson是纳税反对者,于是明目张胆地计划起诉他的公司。Burleson使用工作时间和其他资

33、源来准备他的这个对抗公司的法律诉讼。当公司发现了Burleson的所作所为之后,就解雇了他。后来的情况表明,Burleson之前已经开发了一款恶意软件。在被公司解雇之后,Burleson触发了他的这个“定时炸弹”软件,该软件从公司的计算机系统中持续删除了数千份档案记录。,41,11.5.4 软件信任,归根结底,你能信任软件吗?人们无法从零开始,自己修复软件的漏洞。基于软件的攻击可能不会那么明显,即便是对源代码进行逐行检查的专家也不容易发现。,42,11.6 小结,本章内容回顾衍生自软件的安全威胁朴素香草口味,主要包括有可能被攻击者加以利用的无意识的软件缺陷。这类软件缺陷最典型的例子就是缓冲区溢出和竞态条件。第二类主要源自那些想方设法进行破坏活动的软件,或者简称为恶意软件。,43,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报