免费智能真题库 > 历年试卷 > 信息安全工程师 > 2020年下半年 信息安全工程师 下午试卷 案例
  第5题      
  知识点:   安全漏洞   开发工具

 
代码安仝漏洞往往是系统或者网络被攻破的头号杀手。在C语言程序开发中,由于C语言自身语法的-些特性,很容易出现各种安全漏洞。因此,应该在C程序开发中充分利用现有开发工具提供的各种安全编译选项,减少出现漏洞的可能性。
 
问题:5.1   (4分)
图5-1给出了一段有漏洞的C语言代码(注:行首数字是代码行号),请问,上述代码存在哪种类型的安全漏洞?该漏洞和C语言数组的哪一个特性有关?

 
问题:5.2   (4分)
图5-2给出了C程序的典型内存布局,请回答如下问题。

(1)请问图5-1的代码中第9行的变量authenticated保存在图5-2所示的哪个区域中?
(2)请问stack的两个典型操作是什么?
(3)在图5-2中的stack区域保存数据时,其地址增长方向是往高地址还是往低地址增加?
(4)对于图5-1代码中的第9行和第10行代码的两个变量,哪个变量对应的内存地址更高?
 
问题:5.3   (6分)
微软的Visual Studio提供了很多安全相关的编译选项,图5-3给出了图5-1中代码相关的工程属性页面的截图。请回答以下问题。

(1)请问图5-3中哪项配置可以有效缓解上述代码存在的安全漏洞?
(2)如果把图5-1中第10行代码改为char buffer[4];图5-3的安全编译选项是否还起作用?
(3)模糊测试是否可以检测出上述代码的安全漏洞?
 
 
 

   知识点讲解    
   · 安全漏洞    · 开发工具
 
       安全漏洞
        对于网络安全漏洞,并没有一个全面、准确和统一的定义,一般可以理解为在硬件、软件和协议等的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。通俗描述性定义是存在于计算机网络系统中的、可能对系统中的组成和数据等造成损害的一切因素。
        通常,入侵者寻找网络存在的安全弱点,从缺口处无声无息地进入网络,因而开发黑客反击武器的思想是找出现行网络中的安全弱点,演示、测试这些安全漏洞,然后指出应如何堵住安全漏洞。
        当前,信息系统的安全性非常弱,主要体现在操作系统、计算机网络和数据库管理系统都存在安全隐患,这些安全隐患表现在以下方面:
        (1)物理安全性。凡是能够让非授权机器物理接入的地方都会存在潜在的安全问题,也就是能让接入用户做本不允许做的事情。
        (2)软件安全漏洞。“特权”软件中带有恶意的程序代码,从而可以导致其获得额外的权限。
        (3)不兼容使用安全漏洞。当系统管理员把软件和硬件捆绑在一起时,从安全的角度来看,可以认为系统将有可能产生严重安全隐患。所谓的不兼容性问题,即把两个毫无关系但有用的事物连接在一起,从而导致了安全漏洞。一旦系统建立和运行,这种问题很难被发现。
        (4)选择合适的安全策略。这是一种对安全概念的理解和直觉。完美的软件、受保护的硬件和兼容部件并不能保证正常而有效地工作,除非用户选择了适当的安全策略和打开了能增加其系统安全的部件。
 
       开发工具
        对应于开发过程的各种活动,开发工具通常有需求分析工具、设计工具、概要设计工具、编码与排错工具、测试工具等。
               需求分析工具
               用于辅助需求分析活动的软件称为需求分析工具,它辅助系统分析师从需求定义出发,生成完整的、清晰的、一致的功能规范(Functional Specification)。功能规范是系统所要完成的功能的准确而完整的陈述,它描述该系统要做什么及只做什么。按照需求定义的方法可将需求分析工具分为基于自然语言或图形描述的工具和基于形式化需求定义语言的工具。
               设计工具
               用于辅助设计活动的软件称为设计工具,它辅助设计人员从系统功能规范出发,得到相应的设计规范(design specification)。对应于概要设计活动和详细设计活动,设计工具通常可分为概要设计工具和详细设计工具。
               概要设计工具
               用于辅助设计人员设计目标系统的体系结构、控制结构和数据结构。详细设计工具用于辅助设计人员设计模块的算法和内部实现细节。除此之外,还有基于形式化描述的设计工具和面向对象分析与设计工具。
               实现与排错工具
               辅助实现人员进行嵌入式硬件实现的电子设计自动工具、用于目标板调试的硬件仿真器,进行编码活动的工具有编码工具和排错工具。编码工具辅助编程人员用某种程序设计语言编制源程序,并对源程序进行翻译,最终转换成可执行的代码。因此,编码工具通常与编码所使用的程序语言密切相关。排错工具用来辅助程序员寻找源程序中错误的性质和原因,并确定出错的位置。
               测试工具
               用于支持进行软件测试的工具称为测试工具,分为数据获取工具、静态分析工具、动态分析工具、模拟工具以及测试管理工具。其中,静态分析工具通过对源程序的程序结构、数据流和控制流进行分析,得出程序中函数(过程)的调用与被调用关系、分支和路径、变量定义和引用等情况,发现语义错误。动态分析工具通过执行程序,检查语句、分支和路径覆盖,测试有关变量值的断点,即对程序的执行流进行探测。
   题号导航      2020年下半年 信息安全工程师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第5题    在手机中做本题