1漏洞的定义与特点

可以将漏洞定义为存在于一个系统内的弱点或缺陷,这些弱点或缺陷导致系统对某一特定的威胁攻击或危险事件具有敏感性,或具有进行攻击威胁的可能性[1]。软件漏洞产生通常是由于在软件的设计和实现中由于开发人员有意或无意的失误造成是系统潜在的不安全性。漏洞可以划分为功能性逻辑漏洞和安全性逻辑漏洞。功能性逻辑漏洞是指影响软件的正常功能,例如执行结果错误、执行流程错误等。安全性逻辑漏洞是指通常情况下不影响软件的正常功能,但如果漏洞被攻击者成功利用后,有可能造成软件运行错误甚至执行恶意代码,例如缓冲区溢出漏洞、网站中的跨站脚本漏洞(XSS)、SQL注入漏洞等[2]。

漏洞具有以下特点:1)编程过程中出现逻辑错误是很普遍的现象,这些错误绝大多数都是由于疏忽造成的;2)数据处理(例如对变量赋值)比数值计算更容易出现逻辑错误,过小和过大的程序模块都比中等程序模块更容易出现错误;3)漏洞和具体的系统环境密切相关。在不同种类的软、硬件设备中,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题;4)漏洞问题与时间紧密相关。随着时间的推移,旧的漏洞会不断得到修补或纠正,新的漏洞会不断出现,因而漏洞问题会长期存在[3]。

2漏洞研究技术分类

根据研究对象的不同,漏洞挖掘技术可以分为基于源代码的漏洞挖掘技术、基于目标代码的漏洞挖掘技术和混合漏洞挖掘技术三大类。基于源代码的漏洞挖掘又称为静态检测,是通过对源代码的分析,找到软件中存在的漏洞。基于目标代码的漏洞挖掘又称为动态检测,首先将要分析的目标程序进行反汇编,得到汇编代码;然后对汇编代码进行分析,来判断是否存在漏洞。混合漏洞挖掘技术是结合静态检测和动态检测的优点,对目标程序进行漏洞挖掘。

2.1静态检测技术

静态检测技术可以通过手工或源代码分析工具辅助完成,主要针对源代码结构、跳转条件、边界条件、调用函数等进行分析,查找目标代码中的不安全因素。例如,可以检查源代码中的Printf之类函数,检查是否对其使用条件进行了限定,是否对边界条件进行了检查。由于现代软件源代码数量庞大,不可能完全对其进行人工审计。静态分析技术具有以下特点[4]:首先,通过工具对源代码进行扫描,静态检测技术效率高,分析速度快;其次,静态检测技术可以通过设置不同的测试条件实现对代码的全面扫描;再次,静态检测技术可以在一些开源项目或在项目开发阶段进行挖掘,及时修复系统中存在的漏洞。但这种方法必须获得源代码,并且需对目标代码进行分析、编译等。另一方面静态检测技术是通过对源代码依据一定规则分析来实现,因此要建立源代码的特征库和规则库。随着漏洞数量的增加,特征库也随之不断扩大,继而带来检测效率不断降低。由于静态检测技术是依据特征库来进行分析判断,因此存在误报和漏报的情况。文献[5]中,将静态检测技术分为词法分析、规则检查和类型推导。词法分析技术最早出现于BMAT技术中,这种方法只对语法进行检查,判断词法中是否存在漏洞,如果存在则根据知识库进行进一步判断。规则检查通过检查程序编制规则来判断程序是否存在漏洞,如C语言中是否对变量进行了初始化。规则检查将这些规则以特定语法描述,然后再将程序行为进行比对检测。类型推导通过推导程序中变量和函数类型,来判断变量和函数的访问是否符合类型规则。基于类型推导的静态分析方法适用于控制流无关分析,但对于控制流相关的特性则需要引入类型限定词和子类型[6]的概念来扩展源语言的类型系统,使得新类型系统在源语言的数据类型上加以扩展并表示出类型之间的关系。针对现有漏洞静态检测方法中存在的误报率和漏报率较高问题,文献[7]提出了一种基于数据安全状态跟踪和检查的安全漏洞静态检测方法。该方法扩展了漏洞状态模型的状态空间,设定多个安全属性,通过安全属性描述安全状态。同时,对漏洞状态机中进行合法性校验,识别误报的可能性。通过建立非可信数据识别系统中的漏报情况。

2.2动态检测技术

由于在实际检测过程中,除开源软件以外,很难获得被测系统的源代码信息,因此限制了静态检测技术的应用。动态检测技术是通过构造非标准输入数据,调试运行软件系统,根据系统功能或数据流向,检查运行结果的异常,以判断被测软件系统是否存在漏洞。动态检测技术通常以输入接口或者运行环境为入手点,检测系统中存在的漏洞。虽然动态检测技术具有准确率高的优点,但是其效率却十分低下,因为各种软件系统本身的功能和流程有所不同,所以不能像静态检测技术那样进行统一的扫描,而应该针对软件系统的功能进行动态检测,这样就势必造成了效率的降低[4]。并且动态检测只能确定漏洞可能存在的范围,需进行进一步的跟踪和分析,通过经验才能确定安全漏洞的类型和利用,因此难以应用到大型软件当中。文献[8]提出了一种动态与静态技术相结合的二进制漏洞挖掘方法。该方法通过对二进制文件反编译,得到伪源代码,然后设计了虚拟执行环境VM。然后,通过VM,考察指令执行状态,跟踪寄存器的变化,解决了指针别名的问题。通过记录VM中虚拟内存每条指令访存地址,最后统计计算出每条访存指令实际访问的变量地址,解决了变量精确识别的问题。文献[9]提出利用全系统模拟器作为动态执行环境,通过追踪输入数据处理路径检测溢出漏洞。该方面面向可执行代码,通过构建全系统模拟器来进行漏洞检测,将可执行代码动态转换成形式统一、便于分析追踪的元指令表示形式。为解决动态检测代码覆盖率的问题,该方法制定了溢出漏洞的判定规则,归纳溢出形成条件,并结合系统状态回退完成多路径漏洞搜索,提高了检测的覆盖率。

2.3混合检测技术

由于静态检测技术需要目标程序源代码,并具有检测规模大、误报率高的缺陷,而动态检测技术又存在覆盖率低、效率低的缺陷。因此,近几年,混合检测技术发展迅速,它有效的结合了静态检测和动态检测的优点,避免了静态检测和动态检测的缺点,有效地提高了检测效率和准确率。混合检测技术表现为与动态检测技术相似的形式,然而测试者根据程序的先验知识,在测试过程中有针对性的设计测试用例。这种测试可以直接针对数据流中感兴趣的边界情况进行测试,从而比动态检测更高效。目前,混合检测技术主要通过自动化的漏洞挖掘器即Fuzzing检测技术实现。漏洞挖掘器首先分析目标软件的运行环境、功能和接口等,构造畸形数据,生成测试用例。然后,通过接口传递测试用例,运行程序。最后,使用监控程序监视程序运行,如果程序运行出现异常则记录程序运行环境和输入数据进一步对异常信息进行分析。不同漏洞挖掘器由于挖掘对象的不同,其结构、挖掘方法都有很大的不同。目前主要有文件类型漏洞挖掘器、FTP漏洞挖掘器、Web漏洞挖掘器、操作系统漏洞挖掘器等。根据挖掘器构造测试用例方式的不同,Fuzzing技术可以分为两类[4],DumbFuzzing和IntelligentFuzzing。DumbFuzzing检测技术类似于黑盒测试完全根据随机的输入去发现问题。这种方法实现简单,容易快速的触发漏洞的错误位置。由于没有针对性,因此其效率低下。IntelligentFuzzing检测技术通过研究目标软件的协议、输入、文件格式等方面内容,有针对性的构造测试用例,能够提高自动化检测的效率,因此这种方法能够更加有效的进行软件安全漏洞挖掘。

3结束语

因为不同漏洞研究技术针对的研究目标不同,所以具有不同的优缺点。静态检测技术具有分析速度快,覆盖全面的特点,但其误报率却很高;而动态检测技术准确率高,但其不能覆盖程序的各个流程,具有较大的随机性;混合检测技术避免了上述两种方法的缺点,但由于目前检测技术的局限性,仍有很多工作需要完成:1)后门及访问控制缺陷检测困难。由于后门及访问控制缺陷不会引起程序异常,并在逻辑上很难区分,所以常规漏洞检测方法难以发现后门及逻辑上的缺陷;2)检测过程难以全部自动化。目前,Fuzzing技术需要根据经验创建测试用例,并且自动化的检测结果需要根据经验进行进一步分析,以确定漏洞是否存在以及如何利用。

阅读次数:人次

计算机软件漏洞引发的问题论文,【计算机安全论文】计算机漏洞检测分析(共3404字)...相关推荐

  1. 运用计算机思想分析和综合经济问题,【经济学论文】数量经济学学科素养分析(共6246字)...

    摘要:学科素养不仅包含对基本的专业知识.技能和学科特有的思维方式的掌握,还包括对未来职场思维.态度和技能的训练,学科素养成为衡量一个学科优劣的重要指标之一,近几年学科素养的研究越来越得到重视.而数量经 ...

  2. 计算机高校应用现状的参考文献,【计算机应用论文】高校计算机实验室管理思考探索(共4094字)...

    摘要:计算机实验室在高校教学与科研工作中起着重要的作用,从制度建立.软硬件管理和管理人员队伍建设等方面阐述了高校计算机实验室管理现状,并针对目前存在的问题提出了建议与对策,以期对提高计算机实验室管理质 ...

  3. 中专计算机设备与学生比例,【计算机教育论文】中职生计算机基础教学分析(共3170字)...

    一课程现状和问题 在教学当中,计算机课程的内容都要给学生全面细致的教授.虽然要一学年的时间完成该课程的学习,但是还是会出现课时少.内容多的现象,尤其是上机实训课时,尽管现在在教学方式上不断改革优化,但 ...

  4. 计算机安全的加密技术,计算机安全加密技术研究(4篇)(共14695字).doc

    计算机安全加密技术研究(4篇)(共14695字) 计算机安全加密技术研究(4篇)(共14695字) 第一篇:计算机安全防护中数学签名技术应用 摘要:近几年来,随着全球互联网领域的飞速发展,计算机网络已 ...

  5. 关于建筑计算机综合应用论文,计算机安全论文计算机技术在建筑火灾安全上的综合应用.pdf...

    计算机安全论文计算机技术在建筑火灾安全上的综合应用.pdf 25 Vol25N oS0 2010 10 JOURNAL OF CATASTROPHOLOGY Oct2010 * 许 镇, 唐方勤, 任 ...

  6. 计算机网络专业知识与技能大赛,【计算机网络论文】技能大赛与中职计算机教学的融合(共2907字)...

    摘要:中职计算机教学的重要宗旨在于培育技能型以及综合应用型人才,这就要求学生具备极强的实践素质,能够灵活运用和计算机有关的知识与方法完成各项实践任务,熟练应用多样化的计算机软件,同时发展创新实践精神. ...

  7. 行列式的计算机应用论文结论,【计算机应用论文】建筑耗能计算机模拟分析(共3654字)...

    本文作者:王芙蓉.文亮.王涛 单位:西安建筑科技大学建筑学院.中国建筑设计研究院 1(略) 利用计算机模拟,能够弥补传统设计方法对建筑能耗分析的不足,帮助建筑师直观地判断方案设计对于建筑能耗的影响,从 ...

  8. 计算机行业的发展及未来前景论文,【计算机应用论文】计算机应用发展现状及发展趋势(共2737字)...

    [摘要]随着本国经济技术的不断提升,信息时代的到来,计算机的应用越来越广泛,达到了一种全民化的境界.本文就计算机应用的发展现状以及发展趋势进行讨论以及分析,以其为广大学者提供一些理论上的支撑与依据. ...

  9. 计算机基础在线课程分析建议,【计算机基础论文】计算机基础课程教学问题分析(共4748字)...

    摘要:文章对当前高职院校计算机基础课程教学存在的问题进行了深入的分析,并提出具体的对策,即校企联合确定培养计划,校企联合开发课程及教材,完善现有课程考试评价机制,重视云平台计算机教学模式的构建. 关键 ...

最新文章

  1. 计算机无法安装win10,win10系统电脑提示“windows安装无法继续”的还原步骤
  2. 安装环境 php5.2 mysql_ubuntu安装配置apache2+php5.2+mysql5环境教程
  3. 51CTO交流摘录(1):SOC的定义、适用性和组成
  4. 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇
  5. Servlet添加商品
  6. mysql格式化日期成分_MySQL格式化日期
  7. SQL2008数据库的备份与还原
  8. android笔画输入法的字库,献给爱好笔画输入的机友们 速度才是王道之大众码新笔画输入法...
  9. 台式计算机英特尔时间同步,我电脑时间没法与Inter同步,?
  10. AMD处理器的发展历程
  11. python乘法口诀表打印
  12. MySQL查询结果中Duration Time和Fetch Time的含义
  13. QT 多显示屏获取屏幕分辨率
  14. python远程调用摄像头_教你如何利用python调用摄像头
  15. jQWidgets 14.0 Crack
  16. JAVA -- 正则表达式高级学习技巧
  17. java 和gps 建立连接_GPS 连接与定位
  18. CVPR 2021公布最佳论文候选!华人占据半壁江山,何恺明、陶大程、沈春华等人上榜...
  19. 2.2.1 Nginx高性能负载均衡器
  20. 16位转10位c语言,10进制数转换为16位二进制数

热门文章

  1. oracle erp转行,【Oracle ERP实施顾问怎么样】TCT2021年Oracle ERP实施顾问前景怎么样-看准网...
  2. Java后端架构师的成长之路(二)——Java设计模式(1)
  3. 优秀开源平台,前后端分离快速开发平台,一站式多端开发(PC+APP)
  4. PHP7连接数据库的方法
  5. vue3的setup语法糖和props和emit
  6. 打印时页眉高度不同 — 已解决哦
  7. 线性回归预测--家庭用电功率与时间的关系功率与电流的关系
  8. ubuntu打开rar文件方法
  9. 温度转换python代码解释_如何用python代码温度转换?
  10. 模拟退火(Simulated Annealing, SA)算法简介与MATLAB实现