网络消费网 >  5G > > 正文
ActiveX控件中不安全方法漏洞的检测技术
时间:2021-12-05 22:22:04
当今软件开发中,面向组件的编程技术应用越来越广泛。但是,组件的使用使编程人员在软件开发过程中提高效率的同时,一并出现的安全性问题也不可忽视。根据NVD(National Vulnerability Database)发布的信息,在2008年1月1日至2009年8月20日之间,共发布了227条描述为在ActiveX控件中引发的漏洞[1]。伴随着网络的普及与基于网络的应用的快速发展,ActiveX控件在应用的数量上非常巨大,而被收入到NVD数据库的只是现存的众多数量的ActiveX漏洞中的极少数部分,还有大量的ActiveX控件漏洞由于其软件或控件流行范围的局限而不被NVD所关注。 另一方面,伴随着Windows 2003和SP2在操作系统安全机制上的提升,很多漏洞的利用方式被成功遏制。如今要想在Windows系统中找到能够利用的漏洞已经是一件很困难的事情,因此更多的黑客与安全人员把目光转向了第三方软件。近几年,一些知名的软件公司都曾被发现其注册的ActiveX控件中存在严重的漏洞,鉴于控件的特点,可以说这些漏洞跟IE自身的漏洞没有多大的区别。所以在漏洞挖掘中尽早发现这类漏洞并及时地通知相关厂商,以便做出及时的应对措施显得尤为重要。1 ActiveX控件1.1 什么是ActiveXActiveX是微软公司在1996年引进的,它是在组件对象模型(COM)、对象链接和嵌入(OLE)技术的基础上发展而来[2]。COM规范是ActiveX技术的基础,而COM的目的是创建对象和提供接口来实现代码片段的简单复用,而这些接口又能被其他的COM对象或者程序调用,ActiveX就是这项规范与IE的结合。这种结合提供了IE浏览器与第三方软件的接口,使用ActiveX控件可以对IE浏览器进行功能扩展,可建立应用程序与网站之间的联系,而这种联系通过浏览器来实现。比如登录一个在线视频网站的时候,网站正是通过浏览器调用ActiveX控件打开本地的视频资源。 每一个ActiveX控件通常使用CLSID(Class Identifier)来区别于其他的控件。CLSID是标识一个COM类对象的全球唯一的标识符,它是一个128位的随机数。可以从注册表中的HKEY_CLASSES_ROOTCLSID来读出本机已经注册的CLSID。 ActiveX控件并不能直接使用,它首先需要在目标机器中进行注册,有很多种方法可以注册控件,除了所有的属于IE和操作系统的控件以外,新安装控件可以通过应用程序的安装注册一些控件;还可以通过网页中OBJECT>标签中的CODEBASE属性,从指定位置下载并注册控件;另外通过DOS命令regsvr32也能手动注册一个控件。1.2 脚本安全一个ActiveX控件可以被标注为脚本安全SFS(Safe For Scripting),这意味着IE可以通过脚本语言如JavaScript或VBScript调用控件,并设置或获得它的属性。 有两种方法可以描述一个控件是脚本安全的,第一种方法是使用组件目录管理(Component Categories Manager)来在系统注册表中创建合适的项目。可以通过在这册表编辑器中查看“HKEY_CLASSES_ROOTCLSIDcontrol clsid>Implemented Categories”是否拥有子键7DD95801-9882-11CF-9FA9-00AA06C42C4。第二种方法是通过实现IObjectSafety接口,通过调用IObjectSafety::SetInterfaceSafetyOptions方法来确定控件是否为脚本安全[3]。1.3 KillBitKillBit是注册表中的一项,用来标识控件使得在IE浏览器或者脚本环境运行时不加载控件。当发现有漏洞的控件时,可以先通过设置KillBit来使IE在使用默认设置时永不调用ActiveX控件。KillBit是ActiveX控件的兼容性标志DWORD值在注册表中的特定值0x00000400。针对IE与操作系统的不同,KillBit在注册表中的位置略有不同[4],可分别表示为: (1)32位IE/32位Windows:HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternetExplorerActiveX Compatibility (2)64位IE/64位Windows:HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternetExplorerActiveX Compatibility (3)32位IE/64位Windows:HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftInternet ExplorerActiveX Compatibility1.4 控件函数枚举由于ActiveX遵循COM规范,因此它也像其他的COM控件一样使用相同的方式实现了COM接口,COM接口中很好地定义了一个COM组件中所实现的方法和属性。如果控件实现了IDispatch或者IDispatchEx接口,那么可以通过获得IDispatch接口来枚举出控件的方法、参数以及属性等信息。2 不安全方法漏洞及检测2.1不安全方法漏洞通过分析NVD以及US-CERT(US-Computer Emer-gency Readiness Team)中关于ActiveX漏洞的描述信息,ActiveX漏洞与其他的漏洞在类型上大致相同,占据漏洞比例绝大部份的是由于缺乏必要输入验证而带来的缓冲区溢出漏洞。另外还包括由于IE加载恶意网页而引发的在控件实例化过程中造成的崩溃[5]。本文要提到的不安全方法漏洞,也是在ActiveX控件中频频出现的一种漏洞。 如果一个方法被设计是由IE调用,那么它应该就被标记为脚本安全,微软在MSDN中提供了编写一个安全的控件时对于哪些应该被标为安全提供了指导。但是由于编程人员在安全性上的疏忽,或者根本就不熟悉ActiveX的调用机制,一些标记为脚本安全的方法能够轻易地被远程调用者不加任何限制地调用,或者一些本不应该被IE所使用的方法错误地被标注上了脚本安全,这些方法给系统带来很大的安全隐患。这类漏洞往往表现为任意的注册表读写、本地文件系统的读写、网络端口的开放,执行文件、敏感信息的泄漏等。由于这类漏洞的利用一般非常简单,因此这类漏洞利用门槛很低,危害性极大。2.2 ActiveX控件的检测2.2.1 威胁建模威胁建模(Threat modeling)是一个过程,软件开发人员可以使用它来评估,从而减少控件所面临的潜在的威胁[6]。威胁建模来自于软件测试领域,威胁建模的一般步骤是先分解应用程序,建立数据流图,然后识别所面临的威胁,根据威胁识别潜在的漏洞。对于识别潜在的威胁,可以利用Howard和Leblanc提到的STRIDE威胁目录[7]。 但是由于威胁建模一般是建立在拥有软件设计细节的基础上。作为漏洞挖掘工作,常常面临的只是软件的二进制文件形式,很难得到软件设计的源代码,构建完整的数据流图。因此,基于威胁建模的漏洞挖掘工作,很难建立起准确的威胁模型。

关键词: 漏洞 检测技术 方法 安全 控件 ActiveX

版权声明:
    凡注明来网络消费网的作品,版权均属网络消费网所有,未经授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明"来源:网络消费网"。违反上述声明者,本网将追究其相关法律责任。
    除来源署名为网络消费网稿件外,其他所转载内容之原创性、真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考并自行核实。
热文

网站首页 |网站简介 | 关于我们 | 广告业务 | 投稿信箱
 

Copyright © 2000-2020 www.sosol.com.cn All Rights Reserved.
 

中国网络消费网 版权所有 未经书面授权 不得复制或建立镜像
 

联系邮箱:920 891 263@qq.com

备案号:京ICP备2022016840号-15

营业执照公示信息