代码安全检测(精选十篇)
代码安全检测 篇1
身处于现代信息时代,网络的安全问题已成为全社会关注的热点问题。计算机系统中的任何漏洞都可能造成包括经济、政治、军事、社会、科技等多方面的严重安全隐患。只有从本质上解决计算机软件的安全漏洞问题,才能从根本上确保网络信息的安全。然而软件安全漏洞有极大的隐藏特性,如不形成对它的触发,很难注意到它的存在。
因此,目前世界各国都投入了大量精力,用于源代码安全漏洞检测方法的开发研究。
2 源代码漏洞的形成原因和具体表现
源代码漏洞是指在程序设计之初,由于考虑不周等问题,导致写代码的时候,一些代码写的不完善,由此留下了可以被侵入的后门,从而产生的可能会对程序本身、系统或数据带来潜在危害的代码问题。源代码问题一旦被不法分子发现、利用,所造成的危害不可估量。代码漏洞可以表现在很多方面,算法本身或者代码本身的问题都可能会造成代码漏洞。
代码漏洞的具体表现主要包括几个方面。
对输入的数据没有进行有效的检查。或者是进行过检查但是检查不周,也可能是处理不当,此类问题最常造成缓冲区漏洞的出现。比如在对某账号进行密码的设置输入时,如果程序未对密码的长度进行限制,用户则可能出于安全考虑输入超长的密码,由此可能会导致存储密码时对其它的数据进行覆盖,引发一系列的问题。
代码逻辑设计缺陷或错误。这类问题一般是由程序员的疏忽大意造成的。比如判断时因考虑不周而少漏条件,当遇到特殊数据和情况时,导致程序出现不可预估的错误。
算法本身的漏洞。实现源代码的安全无漏洞,首先应确保在写代码时进行严密的算法,算法本身出现了漏洞,则必然导致诸多问题的存在。比如采用比较简单的加密算法,会为信息泄漏留下操作的可能性。
3 常见的源代码安全检测方法
3.1 抽象解释
抽象解释是把程序代码的执行过程看成各种抽象状态的迁移过程,并通过对抽象状态进行分析来确定程序的性质。初始抽象状态必须是初始实际状态的安全近似,而且每次状态迁移需要保持正确的关系,这样才能保证分析结果的正确。理论上,正确的抽象能够找出程序中所有可能的缓冲区溢出漏洞。但也相应的带来较多的误报。在实际使用中,为降低误报率,用户应当根据被测程序的特性,选择合适的解释函数和抽象域等。
3.2 词法分析
词法分析是最早被用来进行缓冲区溢出漏洞检测的方法之一。这种方法是对软件源程序进行扫描分析,同时与特征库进行匹配,当发现某个片与“危险片段库中的数据”匹配时,则可找出软件程序中可能存在的溢出漏洞。这种方法的局限性在于容易产生漏报或误报,并且它也不能理解软件程序的语义。因此需要进一步的进行上下文分析。
3.3 规则检查
安全性一直是程序编程过程中必需考虑的部分,因此在编程时就会从安全性的角度设定一些必须遵循的规则。而通过对这种规则的检查,就能找到源代码中的某些漏洞。规则检查在进行大规模的程序安全检测时,可以通过选取相关的规则对某一类型的安全问题进行快速分析,但正是受这种检查法自身特点的束缚,使得它只能对特定类型的问题进行检查,无法实现全面的源代码漏洞检测。
3.4 类型推导
如果将安全属性看成一种类型,那么通过类型推导检查,就能找出源代码中的不安全漏洞类型。这种方法忽略了代码执行条件和顺序,只是利用定型规则确定代码中部件的的类型,所以在进行源代码漏洞检测时处理速度很快。
一般情况下,类型推导可分为三个阶段:首先是定型断言,确定变量的初始类型;其次是推导规则,即进行推论系统规则集的建构;最后是检查规则,即判断推论结果是否具有“危害性”。
类型推导法对于软件安全漏洞的快速检测量方面具有很大的优势,能进行大规模程序的安全性分析,但由于约束变量取值为无穷,所以这种方法也只能用来检测特定类型的源代码漏洞。
3.5 数据流分析
数据流分析在源代码的安全检测中,用途比较广泛。这种方法从对源代码的语义信息进行构造变量切入,采用代数方法对变量进行定义和使用的确定。
数据流分析方法基于这样一个事实,数据流沿程序控制图传播。当所有程序点的分析状态达到不动点时,传播停止,同时得到程序性质的解。但是数据流分析方法不能精确跟踪指令的控制条件,所以这种检测方法得到的结果不够精确。
3.6 约束分析
通过产生、求解程序的约束条件,约束分析即可确定程序的性质。约束分析方法建立的局部化约束产生的规则能清楚的描述指令副作用乃至控制条件。
约束分析检测分为约束产生和约束求解两个阶段。约束产生阶段是进行包括变量类型和分析状态在内的约束系统的构建,对这个系统进行求解的过程即为了约束求解阶段。
这种检测法常用于可能造成缓冲区溢出的字符串操作的检测。但是,这种方法不容易处理精确循环:程序中存在循环,且循环控制条件之间存在依赖关系时,则建立的约束条件可能无解。
3.7 符号执行
符号执行是通过采用抽象符号代替变量,对路径敏感的程序控制流进行模拟,在约束求解中对可能发生的错误解进行检测的方法。在检测中,如果出现象一组抽象符号的解满足,则可判定程序中存在错误。符号执行法的检测能力完全取决于求解工具的约束条件和求解能力。虽然这种方法的检测时间较长,但它的优点是可以进行比较精准的检测,程序中很多细微的逻辑错误都能被找到,对于某些特定问题的检测很有必要。
3.8 模型检测
作为形式化的验证技术的一种,模型检测采用的是通过状态迁移描述程序的行为。这种方法用时序逻辑和计算树逻辑等来表示程序系统的性质,将系统属性(安全与否)的检验问题变换为搜索不符合逻辑公式的状态问题。首先,进行抽象模型的构建,这里必需注意,只有有限状态的程序才能进行模型构建;然后模型验证要遍历程序的所有状态空间进行验证。这种检测有两种常见的方法:符号化模型检测和模型转换自动机,两者均为并发系统方法。符号化模型检测是通过将抽象模型中的状态转变为语法树描述的逻辑公式,对公式进行可满足性验证,而模型转换自动机则是通过在安全时序的基础上,构建一个新的自动机进行验证。
在协议验证和硬件检测领域,模型检测的应用较为常见。模型检验能够发现程序中存在复杂语义上的错误,从而准确发现程序中潜在的安全性漏洞,但现存的模型检验工具普遍分析源程序的形式化的表示(数学描述),而不是以源程序作为输入,如需要源程序的数学模型。通常可以通过程序分析(数据流分析,控制流分析,程序切片工具)来自动完成源程序的模型的生成。程序切片提取程序的精简了的模型,其中程序分析是基础,除了语法分析之外,更需要涉及语义的分析,包括控制流分析和数据流分析。
由于程序的复杂性导致了模型过于庞大的问题,因此模型检测除了只能分析那些有限状态的系统,还有只能针对程序中的某一个属性构造抽象模型的弱点,有较大的局限性。
4 各种检测方法的比较分析
以上介绍的几种源代码安全漏洞检测法,既有区别又存在内在的联系。比如抽象解释就是其他方法的理论基础。这些方法都有各自的优缺点,不可能处理所有的源代码安全漏洞检测问题,因此需要对这些方法的特征有一个综合的了解,在实际应用时,合理的采取几种方法的综合检测,能更好地完成源代码安全漏洞检测工作。关于这些方法的优缺点,如表1所示。
参考文献
[1]周诚,张涛,马媛媛,李伟伟.一种高效检测源代码安全漏洞的代码审查方法[J].现代电子技术,2015,05:83-86.
[2]时志伟,赵亮.一种关于PHP源代码安全漏洞的静态检测方法[J].信息安全与通信保密,2011,11:80-82.
[3]朱圣才,徐御,王火剑.常见源代码安全漏洞分析与研究[J].信息网络安全,2014,02:48-52.
代码安全检测 篇2
据悉,Adobe在本月初发出警告,表示已经有黑客利用ColdFusion产品漏洞,渗透其计算机网络,窃取了Acrobat、ColdFusion、ColdFusion Builder等多款被广泛使用的软件源代码和290万个客户信息。这些信息包括了客户名字、加密信用卡/借记卡号、信用卡过期日期、加密密码,及其它与客户订单相关的信息。虽然目前还没有遭到攻击的确切案例,但是处于信息安全防护的敏感性,用户需要密切关注相关动态。
趋势科技(中国区)产品经理蒋世琪指出:“源代码泄露事故不是第一次发生,也绝非最后一次。源代码的泄露往往不会立刻造成一些显而易见的安全损失,却可让黑客挖掘漏洞的模式从‘黑盒测试’变成‘代码查找’,发动攻击的难度也大大降低,可以预计未来会有大量Adobe漏洞被发现和利用。因此,未雨绸缪、及时采取防范措施就显得很必要了。”
用户信息的大规模泄露则将对信息安全造成更直接的威胁。由于这些信息包括用户名、银行卡账号、密码等敏感信息。因此除了会增加真实或虚拟财产被窃取的几率之外,还有可能被用来进行网络钓鱼攻击,对用户的信息安全造成进一步威胁。
建议大家警惕并防范此次Adobe源代码以及用户信息泄露所造成的威胁,可以采取以下几种措施:
1.如果用户是Adobe的会员,请及时更改密码。如果在其它的网站上使用相同的账号密码,需要一并进行修改。
2.如果用户曾经在Adobe使用并登录过信用卡或借记卡,请注意这些卡片是否有不明消费内容。
3.由于Adobe多种产品的源代码也被窃取,因此接下来可能会有针对这些源代码漏洞的恶意程序出现,建议使用TDA类安全工具来检测网络上传输的未知恶意文件,以便从“侦测 – 分析 – 加固 – 响应”四个阶段进行攻击生命周期研究及解决信息帮助,强化现有的信息安全防护措施,并与其整合形成一套完整且针对客户环境量身定制的个性化防御方案,进而提升所有端点的防护能力。
代码安全检测 篇3
为了让安全工具获得更高运行优先级, 近年来基于虚拟化的恶意代码检测技术越来越受重视。安全工具被移植到系统之外的虚拟机管理器 (Virtual Machine Monitor, VMM) 中实现, 虚拟机提供的安全隔离机制使得客户虚拟机中的恶意代码无法攻击VMM和其他虚拟机, 而且VMM运行在客户系统的下层, 具有更高的运行权限, 保证了安全工具相比于恶意代码有更高优先级, 如下图1所示:
虚拟机监视器 (Virtual Monitor Machine, VMM) 是虚拟机软件的核心部件, 用了管理上层的虚拟机。上图中运行了两个虚拟机:Gue s t Virtual Machine和Hos t Virtual Machine, 其中Gue s t Virtual Machine是用户使用的系统, 而Hos t Virtual Machine用来监视Gue s t Virtual Machine (Gue s t OS) 的行为。基于虚拟机的恶意代码监测基于一个普遍的假设前提:目标虚拟机中的恶意代码无法危及Monitor Virtual Machine的安全, 这是因为虚拟机提供的隔离机制保证了一个虚拟机无法访问另一个虚拟机的内容, 再者VMM相比于操作系统小得多, 漏洞更少。基于前面的假设前提, 保证了位于Host Virtual Machine中的恶意代码监测工具是安全的, 这就解决了传统基于主机的恶意代码监测软件一个重要缺陷, 下一步就是要解决如何在Hos t Virtual Machine中监测Gue s t Virtual Machine的活动, 以此来检测Guest Virtual Machine中的恶意代码, 这就是所有的基于虚拟机的安全工具所面临的问题———语义鸿沟。
1 Xen Access介绍
Xe n Acce s s监视函数库是基于Xe n实现的, Xe n是一个流行的开源虚拟机监视器 (VMM) 。它采用了半虚拟化的方法实现虚拟化。这项技术通过修改客户操作系统, 取代那些不能虚拟化的敏感指令。这种方法提供良好的性能优势, 因为没有发生下陷。
Xe n Acce s s设计了恰当的体系结构并提供了虚拟内存、虚拟磁盘的重构和监测能力。为了满足性能以及安全方面的要求, 按照以下准则设计:
1) 尽可能少的修改VMM。VMM应尽可能的小而简单, 因为它是支持安全功能的一部分, 简单原则可以使之不会存在漏洞。
2) 不修改VM或目标操作系统。修改目标操作系统 (被监控的操作系统) , 会带来不确定性, 因为目标操作系统可以篡改已经修改的代码。
3) 较小性能的影响。过多的性能影响会使得监测体系毫无价值。
4) 能够快速添加新功能。提供开发新的监视功能API的基础。
5) 能够监视目标OS上的任何数据。监视器应能得到目标操作系统的完整视图。监测体系结构不应只限于提供目标操作系统的一小部分信息。
6) 目标操作系统不能篡改监视器。
2 基于交叉视图的恶意代码检测
前面已经介绍了Xen Access函数库提供还原客户系统内存的函数, 可以利用该函数库来监视其他虚拟机中的活动, 下面就以实例实验来说明监视的过程。
恶意代码检测:
通过前面的讲述, 知道了如何在一个虚拟机的外部来查看该虚拟机的运行情况, 如进程信息、内核模块信息等。我们可以利用这项技术来检测恶意代码的运行, 通过交叉视图, 对比虚拟机外部获取的信息和虚拟机内部获取的信息, 就可以找出隐藏的进程和模块。
基于现阶段的隐藏进程技术, 编写一个内核模块来隐藏进程Hide nproce s s (基于APIHOOK) , 在客户虚拟机中利用ps命令已经无法看到隐藏的进程Hidenprocess, 但是宿主机中, 利用Xen Access函数库还原客户操作系统的进程信息, 能够显示出进程ID为3306的隐藏进程hidenprocess。
Hide n Module模块加载后通过劫持系统调用s ys_que ry_m odule来隐藏自身, 在客户虚拟机中利用lsmod命令无法查看到隐藏的模块, 但是在Dom0系统 (宿主系统) 中, 利用Xen Access函数库还原内核模块信息, 能够看到被隐藏的模块Hiden Module。
3 小结
本文介绍了如何利用Xen Access开源函数库监视客户系统运行状态, 并通过交叉视图来检测隐藏执行的恶意代码, 这个过程是通过读取客户系统的原始内存还原系统信息来实现的, 但是这就出现一个问题, 如果恶意代码通过更改系统内存来实现隐藏, 比如DKOM (直接内核对象修改) 技术隐藏的系统信息, 则我们的方法无法检测出这种恶意代码。这是这种方法的一个缺陷, 还需要在今后改进, 以完善检测恶意代码的功能。
摘要:针对越来越多的网络安全威胁, 安全防护技术也逐渐发展起来, 防病毒软件、防火墙、IDS、IPS、Anti-rootkit工具等等。本文基于XenAccess开源函数库, 还原客户操作系统的进程和模块信息, 并在此基础之上基于交叉视图的方法检测客户系统中存在的恶意代码。通过使用表明, 该方法能够很好的检测基于APIHOOK的恶意代码, 并且能够抵制恶意代码的攻击。
关键词:恶意代码,隐藏进程,虚拟机
参考文献
[1]中国互联网络信息中心.第26次中国互联网络发展状况统计报告.2010.CNCERT/CC, The26th China Internet Development Statisticsreport, 2010.
[2]Barham P, Dragovic B, FraserK, etal.Xen and the Art of Virtualization[C].Proceedings of the 19th ACM Symposium on Operating System s Principles (SO SP'03) , New York, USA.2003.
[3]温研.隔离运行环境关键技术研究[D].长沙:国防科学技术大学, 2008.
代码安全检测 篇4
花了好些时间才解决此问题,由于有些程序需要开启才能正常使用!
一、系统没有开启FSO组件;
运行cmd命令
启用FSO命令:RegSvr32 %windir%SYSTEM32scrrun.dll
重新注册FSO文件管理 regsvr32 “C:Program FilesCommon FilesSystemadomsado15.dll”
代码安全检测 篇5
【关键词】组织机构代码;数据库;完整性;安全机制
组织机构代码数据的功能十分强大,我国几乎所有的机关企业事业单位以及相应的团体中的信息都在此保存,其是我国信息标准化发展的重要举措,其中使用最为广泛的是银行、法院以及人事管理等。组织机构代码数据库是信息化时代,我国的各个部门提高管理水平,使其能够更加规范的主要方法,这种方法既利于各个部门之间实现信息共享,同时也利于各个部门之间的业务联动,也正是如此,组织机构代码数据库更显重要。
1.组织机构代码数据库的完整性
组织机构中,代码数据库完整性以及安全性都是比较重要的问题,只有处理好这个问题,才能组织机构可以顺利的执行功能。而代码数据完整性只要包括两方面内容,一是指数据的正确性,二是指数据的相容性。组织机构数据库质量优劣,有很多评判标准,而代码完整性无疑是其中最重要的标准。数据库完整性需要进行时常的维护,这就需要相关人员能够对数据语义约束条件进行必要的规定,有很多内容都需要制定约束条件,比如数据关系模型、储存过程触发器等。一般而言,数据完整性约束应该具备以下条件:
首先,数据值不能有任何的失误,换言之,数据类型要准确无误,即将其划归到制定的范围之间;其次,数据存储既要满足相同数据之间的自洽关系,同时还应该满足不同表格数据所具有的关系;最后,组织机构代码数据库约束,主要包括两种类型,一是静态约束,主要是指当数据库保持在稳定状态时,所有的数据对象都应该达到约束要求,其主要涵盖了静态元组约束等,而所谓的静态元组,主要是指给机构类型、法人姓名等各个数据的列值关系;二是动态约束,其主要是指当数据库转变状态时,所要达到的要求,其主要涵盖了动态列级约束以及动态元组等。
2.组织机构代码数据的安全性
组织机构代码数据的安全性与数据库的完整性同等重要,因此重视数据库的完整性的同时,还应该注重数据的安全性。所谓代码数据库的安全性主要是指数据库在使用期间,合法有效,不会被窃取、不会被破坏,也不会被更改等,以便数据库中的数据全部都处于安全的状态。这就需要组织机构中既要做到工作环境以及人员安全,同时还应该保证操作系统以及网络系统安全性。在网络层面上,组织机构代码开始运用CA认证技术,这对保证数据库安全意义重大,但是这种技术方法,也只是针对管理系统,还需要进一步采取措施。
代码数据库的安全措施主要是分为两种,一种是授权登录,就是利用控制服务器来登录相应的账号以及密码等,此时无论是账号,还是密码都应该保留在CA证书中,待用户登录时,网络管理系统需要对其进行判断,以便核实用户是否具有访问权限。而另一种主要是指授权访问,数据库将对象访问权限划分为很多级别,针对用户的类型,数据库会应该不同的权限来进行限制,包括如下:首先,只读权限,也就是只允许用户对数据进行读取,而不能进行其他方面的操作,其次,修改权限,即允许用户修改数据;再次,插人权限,即允许用户插入数据;最后,删除权限。即允许用户删除数据。
3.代码数据库的安全机制
3.1客户机操作系统的安全性
用户使用客户机通过网络对SQL数据库服务器进行访问的时候,用户首先要获得客户机的操作系统使用权,即首先要能够录到客户机上。其安全访问。
3.2 SQLServer登录的安全性
首先确定采刚何种登录验证方式,确定登录验证方式后把WindowsNT/2000川户添加到SQLSevrer系统中。其次,决定哪些用户将执行管理SQLServer服务器系统的任务,并为这些用户分配适当的服务器角色。冉次,决定哪些用户存取代码数据库,并为这些刚户添加适当的数据库角色。最后,给适当的用户或角色授予适当的权限.以便用户能够操作相应的数据库对象。
Windows验证方式:采用Windows服务器的验证,只要可以登录到Windows的川户,就可以登录到代码SQL数据库系统;Windows与SQLServer混合验证方式:不能登录到Windows的用户,只要是SQLServer的用户就可以瞀录到代码数据库系统。
3.3数据库使用的安全性
在代码数据库中。使用权限是访问数据库的最后一道关卡。在SQL中,每一个数据库对象都为该数据库的一个用户所拥有。拥有者以数据库赋予的用户名作为标识.只有数据库拥有者才可以规范数据库对象。其他用户要访问数据库对象首先要获得拥有者的授权。拥有者可以授予数据库用户权限,主要是访问权限和管理权限:访问权限又分为语句权限和对象权限。
语句权限,即决定用户能否操作数据库的创建数据库对象,如创建表、视图、存储过程等等,或执行Createtable、Createview、Backupdatabase等语句的权限;对象权限,即对象权限决定用户对数据库对象执行的操作。它控制用户在表和视网上执行Selecte、Insert、Update、Delete等语句以及执行存储过程的功能管理权限有两种方式:一种是使SQL语句管理权限,如用Grant、Deny、Revoke语句赋予和撤销权限:另一种是使用企业管理器赋予和撤销权限。
3.4数据库对象使用的安全性
要保证数据库对象使用的安全。就要授予用戶对代码数据库巾具体对象的操作权限和对SQL语句的使用权限。对于代码数据库对象(如数据表、视图、存储过程等),普通用户都具有埘代码数据表或视网数据的读取(Select)权限,但对于插入(Insert)、更新(Update)和删除(Delete)权限则需经数据库拥有者授权。
4.结语
综上所述,可知对组织机构代码数据库数据完整性和安全机制进行概述十分重要,这不仅利于人们对组织机构代码数据库更加的了解,同时也利于各个机关企业正确的应用此种数据库。各个机关单位通过应用代码数据库,不仅达到了社会化管理的方式,同时也实现了统一监管,这对我国企事业单位发展起到了非常重要的作用,尤其为数据的应用提供了条件。 [科]
【参考文献】
[1]张劲男,王霁阳,贺佳.省级组织机构代码监控体系平台分析与设计[J].信息技术与标准化,2014(Z1).
[2]黄文平,高茂庭.Microsoft SQL Server数据完整性实现策略[J].计算机时代,2002(12).
[3]陈灿,李娜.浅析SQL SERVER 2005数据完整性技术控制与实现[J].信息与电脑(理论版),2010(03).
[4]童争雄,刘特.数据完整性检验策略的构建[J].江西科学,2004(03).
网络安全问题之恶意代码探讨 篇6
1.什么是恶意代码
恶意代码 (Malicious Code) 是通过网络或存储器进行传播的, 以恶意改变系统设置, 危害信息安全等不良意图为目的的, 可以未经授权直接访问计算机系统程序或代码。
2.恶意代码的危害
2.1攻击系统
2.2危害数据文件的安全存储和使用
2.3泄露文件、密码、帐号或其它隐私信息
2.4资源被占用, 造成计算机或网络的运行速度慢, 工作效率低
2.5攻击应用程序
3.常见的恶意代码形式
3.1计算机病毒
计算机病毒是指编制或在计算机程序中插入的破坏计算机功能或数据, 影响计算机使用, 并且能够自我复制的一组计算机指令或代码。计算机病毒有个特点就是需要用户干预来触发执行。目前在计算机病毒中, 网页脚本病毒为最主要的表现形式。它将恶意代码嵌入到网页脚本文件中, 它的执行不是CPU直接运行, 而是由浏览器解释执行的。由于它制作容易, 编码简单, 欺骗性强等特点, 被广泛使用。网页脚本病毒传播的速度快、范围广, 成为网络用户最常受侵害的一种恶意代码。
3.2蠕虫
蠕虫病毒是一种可以通过网络进行自我复制的, 不需要用户干预就可以执行的病毒程序或代码。
传统病毒通常是嵌入在被感染文件中, 并且病毒需要有触发条件才能执行, 而蠕虫病毒是独立的程序, 自身不改变其它程序, 但它可携带一个具有改变其它程序的病毒。在传播方面不需要触发条件完全可以自动搜索联网计算机的漏洞并且传染。传统的病毒感染文件和文件系统, 而蠕虫病毒感染系统, 会造成系统性能降低, 网速变慢等等。它具有很快的传播速度, 一旦在系统中激活, 它会表现得象计算机病毒, 可以向系统中注入木马程序, 或者进行破坏数据或系统的毁灭行动。蠕虫在传播中的特点是首先搜索系统或网络, 确定感染目标, 然后建立连接, 最后将自身复制到连接, 并尽可能激活。
3.3特洛伊木马
木马是一个看似正常的、有用的、或是表面有用的程序, 但其中包含了一段隐藏的、激活时执行某种破坏操作的代码。它通常由控制端和被控制端两端组成。木马可以用来完成一些非授权用户不能直接完成的功能。目前表现最常见的是在电子商务中窃取用户的银行卡号和密码及支付宝帐号和密码的盗号木马, 进行非法转帐。
随着技术的发展, 一个恶意代码可以具有多重特性, 可以既是蠕虫又是木马, 或既是病毒又是木马等等。这类代码为了实现更多的功能, 它会吸收各种恶意代码的长处, 具有更大的隐蔽性, 传播的速度更快, 防范的难度更大。
4.恶意代码的传播方式
4.1带毒文件的流动, 移动存储器的使用
恶意代码喜欢藏身在.EXE, .DOC, .VBS, .DLL…文件中, 而且往往会传染到U盘, 移动硬盘上通过这些设备的移动使用实现传播。
4.2网页脚本文件和插件
将恶意代码放在网页脚本文件或ACTIVEX中, 由用户执行这些文件而激活病毒。
4.3电子邮件或电子邮件附件
一是具有恶意目的的代码被通过邮件方式发送给接收者, 并采取欺骗手段使用户打开执行, 病毒被植入并传播。二是邮件接收者和对方都不知情的情况下, 正常发送携带病毒的邮件, 造成传播。
4.4通过文件传送的网络传播
在文件传送时, 发送了伪装的恶意代码, 并诱使接收者执行的。
4.5通过软件下载安装
将恶意代码捆绑在安装文件上传播, 攻击者把软件下载作为攻击目标, 用来发布特洛伊木马。
4.6网络攻击
可以通过各种漏洞进行网络攻击传播。
5.恶意代码的防范措施
5.1恶意代码的定时、在线检测, 在线监控
首先要安装杀毒软件和防火墙, 它们可以有效阻止已知恶意代码和病毒。防毒软件对传统已知的恶意代码防御效果较好但是木马、蠕虫、脚本病毒和未知恶意代码的防御效果差, 但防火墙技术对蠕虫和木马防御效果较好。所以我们要安装优秀的杀毒软件和防火墙, 并且及时在线升级, 更新病毒库, 在线实时监控, 及时防范。
5.2定期备份和恢复主要数据
要养成良好习惯, 对系统和重要数据定期进行备份, 定期恢复数据, 或以防不测时使用。
5.3不健康网站不浏览, 不知名站点不下载
不健康网站往往含有恶意代码, 改变主页设置等等。下载文件时到有名的站点下载, 这样的网站相对较安全, 下载完毕后用杀毒软件检测, 提示安全才可以打开。
5.5上网安全设置
禁止访问已知的恶意网页或站点, 启用INTER-NET/选项, 进行内容的分级审查, 设置许可站点, 对于一些恶意站点不去访问。
5.6来历不明网站不访问, 来历不明文件不运行
恶意代码制造者往往利用不熟悉来达到隐藏的目的, 所以来历不明网站不去运行, 来历不明文件不去运行, 这里也包括盗版光盘。
5.7软件及时升级, 安装系统补丁
软件在开发中总有欠缺之处, 要及时升级软件、安装补丁, 尤其是操作系统、防火墙及杀毒软件。及时安装补丁能有效防止漏洞攻击, 及时更新病毒库能发现新型病毒与代码。
5.8禁止修改注册表
这项操作, 一般防火墙都有, 可以有效防止恶意改动。
5.9关注系统启动项和系统目录中的可执行文件
有些病毒靠系统重启后触发, 它会强行修改注册表和各种启动文件, 非法控制用户系统, 盗取用户文件, 恶意删除文件, 所以要关注这些项目, 发现异常, 及时清除异常系统启动项和系统文件夹中的异常文件, 并且要关注异常的进程和网络流量。
5.10定期核查系统文件
要利用工具软件定期核查系统文件的完整性, 一旦发现被感染或修改, 必须完全重新安装所有的系统文件部件和程序, 以确保安全。
6.结束语
随着计算机网络技术、软件技术不断发展, 手机恶意代码和PDA恶意代码的出现, 网络安全技术面临着新的种类、新的攻击方式的挑战, 恶意代码对于系统造成的破坏性, 对于用户造成的损失越来越大, 而恶意代码也越作越完善, 越来越隐蔽性强, 越来越攻击性强, 这就要求我们对恶意代码有一个全面的了解, 建立一个较全面的、可靠的安全防御系统, 将损失减小到最少, 防患于未燃。
参考文献
[1].恶意代码防范刘功申[M]高等教育出版社2010.7
代码安全检测 篇7
1 Android应用程序以及重打包应用概述
Android应用程序一般都是由开发者将相关的源码以及资源进行打包,压缩成APK文件,这样用户就能够进行下载使用。
将APK文件进行解压后,可以得到很多内容,主要包括UI资源以及布局、配置文件、签名信息、应用的具体DK(Dalvik,下同)字节码等。利用Java编程语言来实现应用程度,将其编写成DK字节码。Android应用程序中一般不包含本地代码,但实际上本地代码是可以包含在应用程序中的,对于恶意的重打包操作中,开发者也很少对包含在应用中的本地代码进行变动。应用签名是每一个开发者独有的,每一个签名配有一个独有的密钥,在应用程序进行打包前以及发布过程中都需要进行签名。
根其他的应用程序相比,Android平台上的应用程序有一些独特的性质,这也是其能得到广泛推广应用的主要原因之一。其特性主要表现在以下几个方面:1)Android应用的入口点很多,这主要是由于组成Android应用程序的构件很多,并且每一个构件都需要至少一个入口点,Android应用中的构件间通过intent就可以实现相互通信的功能;2)在Android应用程序中的代码库中,有一部分为第三方库,第三方库所占代码库的比重一般较大。常见的第三方库有Admob、Facebook、Google Analytics等;3)大部分的Android应用程序在发布到市场之前,都进行了代码混淆,这样做得目的是增加逆向操作的难度,维护开发者的版权等权益。进行应用代码的混淆操作,一般都是用Proguard工具,通过这一工具,可以将原先应用程序代码中的方法名、类名等进行更改,将原先那些无用的代码去除,这样达到代码混淆的目的。
应用重打包就是恶意的开发者将原先应用程序进行破译,对非核心的代码资料进行恶意的改动,并对应用进行重新的打包,发布到市场中,我们将应用重新打包后产生的应用称为重打包应用。如果将重打包应用进行分类,可以根据其重打包的目的以及其它因素将其分为替换广告库版、汉化版、功能扩充版。
2 基于代码克隆检测技术的Android应用重打包检测
Android应用重打包检测技术对应用程序的检测,主要包括预处理、提取特征、分析相似度三个阶段。
在应用程序的预处理阶段,主要工作就是通过相应的技术手段,将应用程序进行反编译,并且进行过滤操作,从而可以得到被检测应用的核心代码。由于Android应用程序一般都具有第三方代码库,并且都进行了代码的混淆,所以给预处理阶段带来了很大的困难。比如第三方库中的有些代码与核心代码相似度较高,进行过滤操作中不容易进行区别等。利用Android应用重打包检测技术,可以事先列举第三方库白名单,这样就能避免很多的麻烦。
特征提取阶段是整个Android应用重打包检测中最关键的步骤,特征提取的准确性,关系着对特征的描述,关系着后续的对比分析结果的准确性。基于克隆代码检测方法的Android应用重打包检测中的特征提取,主要是对不同的计数环境下变量出现次数当做特征,然后通过相关的计算,得到每一个变量的特征向量,通过矩阵的构建,将应用程序的特征表示出来,然后就能进行抽象的描述。
在分析相似度阶段,主要是通过对正版的应用程序以及检测的应用程序之间的相似代码所占比重进行计算,通过两个应用程序代码块特征技术矩阵的比对,判断两者代码块的相似途径。其中,计算特征向量间的相似度,可以实现对特征矩阵的比对。对于每一个变量的特征计数向量相似度的计算,一般都是对向量余弦值的计算比对得到的,向量余弦值就是两个向量之间的夹角余弦。对于代码块相似度的分析就是对于两个代码块,通过计数矩阵以及最大匹配度等的计算、对比得到。通过对特征向量以及代码块的相似度分析,就能够对应用程序的相似度进行分析,判断重打包应用程序的存在,并分析其进行恶意改动的内容。
通过Android应用重打包检测技术,可以实现对重打包应用程序的检测,很大程度上净化了移动市场,确保了移动用户使用应用程序时的信息、隐私等的安全。相信随着我国科学技术的不断发展,这项检测技术会不断的被完善,发挥其更大的作用,为我国应用程序的发展提供更优越的环境。
3 总结
随着我国社会经济的快速发展,特别是科学技术水平的提高,移动设备已经逐渐成为人类生活、工作等方面必不可少的一部分,为人类活动提供了很大的便利。移动设备中各项功能的实现使用是通过应用程序,目前Android应用程序在移动市场中所占的比重很大。由于Android应用程序的特征以及优越性,很多恶意的开发者,对应用进行了重新打包,并将重打包应用发布到市场中,影响了原来开发者的版权利益的同时,也给应用使用者的信息等隐私带来了安全隐患。该文提出的基于克隆代码检测方法的Android应用重打包检测技术,可以准确的检测出移动市场中的重打包应用,对维护市场稳定具有重大的意义。
摘要:随着我国科学技术的不断发展,移动设备得到了全面的普及。人们利用移动设备中的应用,实现了大量的功能,为人们的生活、工作等提供了许多的便利。但是恶意的软件开发者,将正版的应用破译,并进行相应的增减改操作,将应用程序进行重新打包后发布到市场中。重打包应用在法律意义上损害了原来开发者的利益,侵犯了其版权权益,而且对重打包应用程序的使用者带来了隐私信息的安全问题。该文对重打包应用进行分析,并提出了一种基于代码克隆检测技术的Android应用重打包检测技术。
启动型恶意代码分析与检测综述 篇8
长期以来,内核态Rootkit针对操作系统内核进行攻击,对系统安全构成了严重威胁。由于其运行在系统内核层,并拥有最高的系统控制权限,可以通过对内核进行一些特定的修改,并在其中添加恶意模块,实现在系统底层为恶意代码的运行提供后门和保护机制,从而成为了一种隐蔽性和破坏性极强的恶意程序。
为了应对这种新的威胁,自从这种恶意程序出现以来,学界针对其进行检测和预防的相关研究在不断深入,对内核代码和数据结构的完整性保护方法也在持续更新。为了提高隐蔽效果,近几年来,内核态恶意代码进一步发展,出现了通过对系统的启动过程进行劫持来加载自身的恶意代码。这种恶意代码把自身存放在操作系统之外,例如BIOS以及其他主板插件的ROM、硬盘主引导区 ( MBR) 等,能够在操作系统启动之前获得运行权,规避操作系统的防护措施,顺利进入并破坏系统,从而提高了其隐蔽性。其部分遵循了传统内核态Rootkit的原理并沿用了实现技术,通过实现操作系统启动劫持,在隐蔽性和破坏力上有了进一步的提高。本文将这种恶意代码称为启动型恶意代码。近几年来出现的一些流行的恶意代码如Stoned Bootkit、 TDL系列、鬼影系列、BMW等都具有启动型恶意代码的特点。
目前针对这种新型恶意代码的研究已经开展,文献[1]介绍了通过修改硬盘MBR对Windows操作系统进行启动的Bootkit,文献[2]介绍了一种通过修改NTLDR系统文件对Windows操作系统进行启动劫持的方法,文献[3]研究了计算机硬件后门的可行性并通过对主板网卡ROM进行修改实现了一个启动劫持的后门原型。这些研究主要针对一些使用特定启动劫持手段的恶意代码如Bootkit进行单独研究,没有对启动型恶意代码作为整体进行分析,在研究思路上也只对专注于其启动劫持方式,没有对这种恶意代码的存储模式、生命周期等进行分析。本文在以上研究的基础上,深入分析了几种典型的启动型恶意程序,重点研究其生命周期的运行原理和技术特点,进一步揭示了启动型恶意程序运行的一般规律和整体视图,并在此基础上对目前检测方法的研究现状和不足进行了分析,提出了改进建议。
1 启动型恶意程序的发展历史
本节将对启动型恶意程序出现背景和发展历史进行简要介绍,通过了解其发展脉络,有助于对其进行整体上的把握。
1. 1 早期雏形( 1990 年以前)
启动型恶意代码出现的历史要远远久于恶意程序,1988年出现的PAKISTANI BRAIN病毒和1989年的Stoned病毒是最早的启动型恶 意代码。这两种病 毒通过感 染硬盘的 引导区 ( MBR) 来感染整个操作系统,但并没有对系统进行后续的破坏。从现在的角度来看,这两种病毒很容易被检测和清除,但它们劫持操作系统启动的特性为后来出像的恶意代码提供了技术思路。
1. 2 发展阶段( 1990———2000 年)
在这一阶段出现了破坏力很强的恶意程序,如1992年的MICHEANGELO和1998年的CIH。这类恶意程序除了利用操作系统MBR进行启动劫持之外,在劫持成功之后还运行了致命性的承载程序对系统进行了破坏,如清除掉系统硬盘数据等。 从技术上来说,由于在此阶段还没有出现恶意程序相关技术,这种恶意程序相比前一阶段虽然在功能上有所增强,具有较大的破坏力,但在隐藏性上并没有较大的改进,仍然不难被检测和清除。
1. 3 Bootkit 阶段( 2000———2010 年)
2000年以后,内核Rootkit和使用Rootkit技术的恶意程序大量出现,Rootkit的隐藏特性使得它成为了操作系统完整性的破坏者。在此期间,出现了结合内核Rootkit和操作系统启动劫持的恶意程序,即Bootkit。这种恶意程序结合了Rootkit出色的隐藏能力、对操作系统内核拥有的高权限和先于操作系统运行自身的能力,凭借这些优势,Bootkit对操作系统安全构成了严重威胁。这一阶段出现的Bootkit有很多,如2009年黑帽大会上由Peter Kleissner展示的stoned Bootkit,2008—2011年欧美国家爆发的TDL系列魔影病毒以及2010年在中国大陆流行的鬼影病毒等。这类程序的共同特点是针对操作系统引导区( MBR) 进行感染; 通过感染MBR进一步感染操作系统启动文件,实现对操作系统的劫持; 通过对操作系统的劫持隐蔽加载恶意程序驱动,从而在操作系统安全机制起作用之前完成恶意程序的加载和运行。这类恶意程序能够有效绕过操作系统的安全机制, 而且,由于其能够对操作系统内核进行修改,甚至破坏恶意软件检测系统赖以生存的系统环境,导致整个操作系统处于一种不可信的状态,使得在线检测方法无法对其进行有效应对。目前针对Bootkit较为有效的检测手段大都采用离线式检测方法。
1. 4 固件 ROM 阶段( 2010———)[4]
由于Bootkit的启动劫持通过感染MBR来实现,使得检测系统可以着重对MBR进行完整性保护来防止感染。在2010年前后,又陆续出现了新的启动型恶意程序,感染目标更加底层化,指向了BIOS ROM、网卡ROM等主板固件ROM。在2009年的黑帽大会上,Rafal Wojtczuk和Alexander Tereshkin展示了如何通过堆溢出漏洞利用程序绕过Inter BIOS的数字签名验证, 对BIOS进行刷新。2011年出现的BMW病毒通过连续感染BIOS ROM、MBR和Windows系统启动文件来获得操作系统控制权,被感染主机在不对BIOS进行处理的情况下无法将其彻底清除。除了BIOS之外,主板上的扩展ROM也是潜在的被利用对象,在系统启动的POST自检阶段,BIOS对各个扩展ROM进行检查,将其中存放的内容复制到内存中,并执行这些ROM中的初始化代码,对扩展ROM进行感染可以获得与感染BIOS同样的攻击效果,并且更加爱隐蔽和难以清除。文献[3]研究了对主板网卡ROM进行感染进而在主机启动阶段对其进行初始化之际感染MBR和操作系统。
目前,在对固件ROM的利用方面,存在的一个前提条件是如何对固件ROM进行刷新。从棱镜门事件中我们可以看出完成这些步骤虽然比较困难,但仍然是可行的,因此利用固件ROM的恶意程序将对操作系统安全构成很大的挑战。
2 启动型恶意程序实现原理
根据启动型恶意程序的运行于活动方式,将其生命周期划分为四个阶段: 操作系统启动劫持、启动中劫持、加载恶意程序驱动以及启动后活动,分别分析每个阶段的实现原理,并在此基础上分析总结其使用的关键技术。
2. 1 启动前劫持
启动前劫持是指恶意代码在计算机加电启动到MBR开始引导操作系统这段时间内获取执行权,对计算机的控制行为。 包括第一阶段对BIOS ROM或其他固件ROM的劫持和第二阶段对MBR以及其它引导程序的劫持,在这两阶段中,计算机运行在实模式下,依靠BIOS中断来执行关键功能。首先,我们对计算机从开始启动到引导操作系统这一过程进行分析。图1展示了计算机启动过程中从BIOS到MBR的引导过程。
在这一引导过程中,包含了两个重要的实模式中断INT 13h和INT 19h。BIOS通过19h中断从软盘、光盘或硬盘MBR中选择一个启动分区,然后使用13h中断将启动分区中的引导程序Bootloader加载到内存中,最后由Bootloader继续引导系统启动。 启动型恶意程序利用系统这一启动方式的特点,采用逐级中断挂钩的方式对计算机在这一阶段的启动进行劫持,其大致的步骤如下:
1) 首先通过某种方式( 如ISA模块) 将恶意模块刷写到BIOS ROM或者其他主板固件ROM当中,替换掉计算机启动时BIOS或主板固件ROM中需要在POST自检阶段运行的正常代码。
2) 系统重启时将运行固件ROM中的恶意代码,恶意代码挂钩BIOS 19h中断,用定制的中断向量替换BIOS原有19h中断向量。
3) 恶意代码将系统控制权交还给BIOS,并由其继续引导计算机正常启动。
4) BIOS在选择启动分区时引发19h中断,被恶意代码定制的中断向量截获。
5) 在新的19h中断处理程序中,恶意代码挂钩BIOS 13h中断,使用定制的13h中断处理程序替换原有13h中断向量,并在新的中断处理程序中加入若干个特征码搜索匹配功能模块。
6) 恶意代码把系统控制权交还给BIOS,并由其继续加载MBR等启动分区中的Bootloader继续引导系统启动。
图2展示了前面所述的劫持步骤,使用这种劫持方式的典型恶意程序是Ice Lord Bootkit,它通过在BIOS ROM中植入恶意模块依次劫持19h和13h中断,进而在操作系统启动之前获得执行权,并通过对13h中断进行挂钩,在挂钩程序中加入了代码特征搜索匹配模块,在下一阶段BIOS通过13h中断加载操作系统文件时,可以再次获取系统控制权并对操作系统内核进行修改。
对主板上其他固件如网卡ROM的利用原理与利用BIOS ROM类似,恶意程序开发者通过将ISA模块刷写到固件ROM, 并替换固件原有的初始化代码,BIOS在POST自检阶段会调用主板上各固件ROM中的初始化程序,这时恶意程序就可以像Ice Lord Bootkit一样获取系统控制权并执行一系列后续操作。
2. 2 启动中劫持
启动中劫持是指从引导程序Bootloader加载操作系统启动文件到系统内核启动完成这一过程中进行劫持。操作系统的启动贯穿了实模式和保护模式,这一阶段之后计算机的运行和操作系统密切相关,并受到操作系统保护。目前出现的启动型恶意程序绝大多数基于Windows系列操作系统,因此在后续的讨论中主要以目前主流的Windows vista/7 /server 2008等Windows Vista family操作系统为例进行启动中劫持分析。
如图3所示,左边的实线流程表示操作系统正常启动的流程,右边的虚线流程表示被恶意程序劫持后系统的启动流程。
在正常的启动流程中,操作系统的启动始于Bootloader加载操作系统启动文件,此时处理器仍然处于实模式,对硬盘的读写依赖BIOS的13h中断处理程序。首先,Bootloader通过13h中断读取操作系统第一个启动文件Bootmgr到内存。Bootmgr由一个16-bit的stub和一个32-bit的PE可执行文件Osloader两部分构成,其中stub运行在实模式下,用于把处理器切换到32-bit的保护模式,并且提供了访问16-bit实模式的接口。当Bootmgr被加载到内存后,首先运行stub,stub读取操作系统的启动配置数据( BCD) ,再跳转到Osloader执行,同时处理器模式切换到保护模式。接着,Osloader加载操作系统的第二阶段启动文件Winload. exe和Ntoskrnl到内存,并跳转到Winload. exe执行。Winload. exe进行系统初始化,然后跳转到Ntoskrnl继续执行初始化。Ntoskrnl是PE格式的操作系统内核映像,系统正是通过Nkoskrnl完成了操作系统启动的大部分工作,加载并运行系统运行所需要的各驱动程序,直到系统启动完成。
启动型恶意程序对于操作系统启动中的劫持,就是在操作系统正常启动的流程中插入实现特定功能的目标代码,通过系统的正常启动,将恶意代码如木马、病毒等以驱动程序的形式, 在不被管理员发现的情况下随着系统正常驱动程序一起加载并运行。而图3右半部分的虚线流程是一种典型的劫持方法, stoned Bootkit就使用了这种方法,大致分为以下几个步骤:
1) Bootloader调用13h中断读取Bootmgr,而13h中断在前述的启动前劫持中已被挂钩,调用13h中断将会使恶意代码获得控制权。
2) 在挂钩的13h中断处理程序中,首先调用正常的13h中断流程把Bootmgr读取到内存中,通过内存特征码查找技术把一段预先选定的特征码替换成call Entry指令,Entry处存放有恶意程序下一阶段运行所需要的一系列代码。
3) 将系统控制权交还给Bootmgr,系统开始正常运行,由stub跳转到Osloader执行,并把处理器切换到保护模式。在保护模式下,系统加载Winload. exe到内存。
4) Osloader在跳转到Winload. exe之前执行到前面的特征码位置,此时特征码已被替换为call Entry指令,因此Osloader跳转到恶意程序的入口地址Entry继续执行。
5) Entry处的恶意代码从Osloader开始的内存地址处通过查找特征码的方式搜索Winload. exe的地址,对Winload. exe进行挂钩,挂钩代码首先执行正常的Winload. exe,将Ntoskrnl加载到内存,然后在内存中查找Ntoskrnl的地址,对Ntoskrnl进行代码修补。
6) 被代码修补后的Ntoskrnl继续引导系统启动,对Ntoskrnl中用于加载驱动的关键函数和内核数据结构进行修改, 利用Ntoskrnl的执行把恶意的驱动程序和系统正常的驱动程序一起加载并运行。
整体上看,操作系统在这一阶段的启动分为实模式和保护模式两个阶段,启动型恶意程序在实模式阶段通过2. 1节中挂钩的13h中断处理程序对这一阶段加载的启动文件进行代码修补,为保护模式阶段再次劫持系统提供入口。在保护模式阶段, 恶意程序对这一阶段加载的启动文件根据需要依次进行代码修补,从而在系统正常启动中再次获取操作系统控制权。恶意程序在对操作系统启动中的整个劫持过程,每一阶段都遵循先读取启动文件,再对其在内存中的映像进行劫持,这一过程的劫持方式可以是挂钩,也可以是代码修补。最后通过Ntoskrnl的运行,将恶意驱动与系统正常的驱动程序一起加载运行。
2. 3 加载恶意程序驱动
在操作系统PE格式的内核映像文件Ntoskrnl开始执行时, 系统执行的实际上是内存中被代码修补过的Ntoskrnl映像。在这个被代码修补过的Ntoskrnl映像中,恶意程序驱动和其他正常的系统驱动一起被加载到了内存,并添加到驱动列表Ps Loaded Module List中,从而通过Ntoskrnl的运行,恶意程序驱动也得以执行。这个过程的关键部分是Hook_Winload对Ntoskrnl进行代码修补,其大致流程如图4所示。
Hook_Winload通过调用内核映像Ntoskrnl中的一系列导出函数,将恶意程序驱动加载到内存,并将其与正常的系统启动驱动链接到一起,从而在Ntoskrnl运行时和系统启动驱动一起被执行。
2. 4 启动后活动
当操作系统启动完成时,恶意程序驱动也随之启动并运行, 该驱动可以具有一个完整运行态恶意程序的全部功能,也可以作为一个临时加载器。通过它来加载其他的恶意程序运行,大体上讲,它可以完成以下几种功能:
1) 作为恶意程序对恶意程序以及自身的活动( 进程、文件、 端口等) 进行隐藏;
2) 进行键盘击键记录等隐蔽行为;
3) 对恶意程序检测系统所依赖的操作系统执行环境进行破坏;
4) 作为加载器引导其它恶意程序加载运行。
2. 5 启动型恶意程序关键实现技术
在前四小节中,对启动型恶意程序按照其在操作系统启动中不同阶段的活动,简要介绍了其主要的执行流程,在每一阶段中,恶意程序都使用了一些特定的技术,其中有些技术是从早期恶意程序就开始大量使用的成熟技术,如挂钩和代码修补,另外一些技术是启动型恶意程序出现以后才开始运用的。
1) 挂钩技术
挂钩技术是从恶意程序出现早期就有的成熟技术,它对内核中的重要函数指针、系统调用入口地址进行替换,从而当这些函数被调用执行时,跳转到其他的地址去执行,而这些地址是恶意程序恶意代码所在的地址。通过挂钩技术,实现了对系统控制流的劫持。启动型恶意程序多处利用了该技术,如实模式下对13h中断的劫持、保护模式下对Winload. exe的劫持等。
2) 代码修补技术
与挂钩不同,代码修补技术不对函数地址直接进行替换,而是在函数体内部对其代码进行修改,使其跳转到恶意程序定制的代码序列执行。需要注意的是,在不了解函数内部工作机理的情况下,代码修补技术和挂钩技术通常在劫持了系统控制流并执行了定制的代码序列之后,还要执行原有的函数,完成系统正常的功能。这是因为恶意程序对操作系统控制流的劫持是有选择性、有目的的劫持,为了实现恶意代码的隐藏,恶意程序只对和自身相关的控制流进行劫持和重定向,而不破坏系统正常运行的功能。启动型恶意程序大量使用了代码修补技术,如实模式下对Bootmgr的修改以及保护模式下对Ntoskrnl的修改等。
3) 内存特征码扫描与定位
启动型恶意程序在操作系统启动阶段为了持续获得执行权,对操作系统启动中加载各启动文件采用挂钩或代码修补方式进行了多级劫持。能够进行这种劫持的一个重要前提就是能够在内存中对劫持点进行定位,如挂钩需要定位内核中函数的地址,代码修补需要在内存的代码块中选择和定位修改点。启动型恶意程序采用了内核特征码的扫描与定位的方法来解决这一问题。
4) 内核导出函数地址提取
为了使恶意的恶意程序驱动能够和正常的系统驱动程序一起随着操作系统启动被加载执行,需要对Ntoskrnl进行代码修补,利用其一系列导出函数将恶意程序驱动加载到内核内存,将驱动文件中的符号重定位并将恶意程序驱动链接到Ps LoadedModule List链表上。完成这些工作首先需要找到Ntoskrnl中各相关导出函数的地址,由于Ntoskrnl是PE格式的文件,因此可以定位其导出表的内存地址,并按照导出函数的哈希值在导出表处进行查找并定位。
5) 代码存储与访存
表1展示了近几年的几个典型的启动型恶意程序在操作系统启动阶段的存储和访存方式,表的第2和第3列分别启动型恶意程序在实模式和保护模式下存储空间的选择,第4和第5列分别表示其在实模式和保护模式下访存方式的选择,第6列表示其访存层次。
启动型恶意程序在存储和访存方式上,主要考虑了三方面的问题: 一是可用空间的大小和方便性的问题,理论上计算机的所有存储空间包括硬盘空间和固件ROM等都是可以利用的, 但实际上固件ROM的存储空间有限且刷写困难,因此启动型恶意程序大都会利用硬盘空间。另外,实模式下计算机的访存依赖13h中断,在保护模式下的访存依赖特定的文件系统。这也限制了恶意程序的访存方式。二是存储和访存的隐蔽性问题。理论上,在保护模式下,由于文件系统的存在,启动型恶意程序可以利用操作系统文件系统存储并使用系统调用来访存, 但为了提高其隐蔽性,启动型恶意程序往往没有采取这种简单直接的方式,而操作系统对硬盘空间的利用往往不够充分,为恶意代码提供了一些可利用的保留空间。例如在Windows操作系统中,硬盘前53个扇区、硬盘最后一个分区结束位置到硬盘最后一个扇区之间都有保留的空间。因此,启动型恶意程序通常选择硬盘的保留空间来存储其文件,并通过实现一个自定义的文件系统来访问。三是单级访存与多级访存的选择问题。为了适应固件ROM和硬盘保留空间大小的限制,启动型恶意程序通常把后续的功能模块的访存安排在恶意驱动启动完成之后, 也就是恶意程序启动完成后的运行阶段,只把启动直接相关的功能模块放在固件ROM和硬盘保留空间当中,采取两级或多级的访存和加载方式,在启动完成之后,再由恶意程序驱动来加载其他的恶意功能。表1展示的几种典型启动型恶意程序存储和访存方式的选择印证了这一点。
3 对启动型恶意程序的检测
目前针对启动型恶意程序检测的研究已经逐渐开展并取得了一些成果。下面对目前已知的检测方法进行简要介绍,主要包括ISA模块完整性检测、MBR完整性检测、中断向量表检测、 基于可信计算的检测等。
3. 1 ISA 模块和 MBR 完整性检测[5]
ISA( Industral Standard Architecture) 是一种旧的系统总线标准,目前已经被PCI( Periphearl Component Internect) 总线标准所替代,但是为了保持与旧主板的兼容性,目前的BIOS仍然保留了对ISA标准的支持,而目前的针对BIOS ROM的启动型恶意程序就是以ISA模块的方式存在于BIOS ROM当中。因此,目前的检测方法根据ISA模块是否存在于BIOS ROM当中来判断BIOS ROM是否被修改。而MBR完整性检测则是针对MBR Bootkit的,主要是采用了传统的完整性检测方法,对系统原始MBR进行备份,然后采用一些完整性检测算法进行判断。
3. 2 中断向量表检测[6]
中断向量表( IVT) 存储了所有中断处理程序入口地址,由于其功能的特殊性,启动型恶意程序多次对其进行了修改,如攻击BIOS ROM的恶意程序修改了INT 13h和INT 19h中断,其中INT 13h被恶意程序用于在实模式下对数据的存取操作,INT 19h中断被用于在BIOS将启动权交给Bootloader时进行劫持。 对中断向量表的检测方法有很多种,例如完整性检测、地址范围的检测等。
3. 3 基于可信计算的检测[7,8]
可信计算的思想是在主板上增加一个名为TPM( Trusted Platform Module) 的芯片,通过TPM芯片,计算机能够在启动过程中从BIOS开始,对启动中的所有引导文件或代码进行完整性检测,并通过检测依次向后传递系统的信任链,通过逐级传递的方式确保之后启动的硬件和运行的代码都是安全可信的。而启动型恶意程序不可避免地要对一些计算机长期存储的代码或文件进行永久性修改和破坏,可信计算正是通过这种思想对启动型恶意程序进行检测。
但是,目前针对启动型恶意程序的检测仍然存在一些问题。 例如ISA模块检测只能对采用ISA方式破坏BIOS ROM的攻击进行检测,目前的BIOS已经开始逐渐被UEFI BIOS所替代,而针对UEFI的攻击也已经出现,目前的检测方法对其无效。从根本上说ISA模块检测方法只关注了BIOS ROM的刷写方法, 依赖和恶意程序无关的工程方法,没有从启动型恶意程序挂钩13h和19h中断的原理入手,无法对其进行准确定位。针对MBR的完整性检测只能针对MBR Bootkit,无法应对针对BIOS ROM等固件ROM的攻击,中断向量表检测和基于可信计算的检测也面临同样的问题。总体上讲,在启动型恶意程序技术特点鲜明的情况下,目前的检测技术没有对这些特点进行准确把握和应对,大都采用了完整性检测这种相对粗放式的应对策略, 具有较大的改进空间。
另外,目前检测方法普遍存在的一个突出问题是过于依赖在线检测,而由于恶意程序可以对操作系统进行任意的修改,因此检测系统其检测手段所依赖的系统调用、中断处理程序、内核数据等都有可能是被恶意程序修改过的,检测结果不够准确,粗放式的完整性检测与在线检测的不可信一起造成了目前针对启动型恶意程序检测效果不够理想。
4 结 语
本文主要分析了近年来出现的基于操作系统启动的恶意程序实现原理、技术特点,按照其在操作系统启动不同阶段的活动进行了较详细的论述,并对目前检测技术的现状和不足进行了简要分析。
从恶意代码检测现状来看,内核恶意程序仍然是目前网络和系统安全的重要威胁,长期以来,在成熟的商业产品中,对于恶意程序的检测一直依赖于类似传统病毒的特征码检测方法,这种方法无法应对功能强大的新型0day恶意代码。目前,基于操作系统启动阶段劫持的恶意程序已经成为了安全领域的最新威胁,其先于操作系统和安全软件启动并绕过系统安全机制; 根植于硬件ROM当中难以引起用户注意,发现后也难以清除; 具有传统恶意程序藏身于操作系统内核、破坏内核数据的隐蔽性。 所有这些特性使其成为了一个难以应付的敌手,并且已经被近几年的一些功能强大的其他恶意程序广泛使用,如何有效应对这种威胁是安全领域面临的一个亟待解决的问题。
根据目前的分析,启动型恶意程序检测难点主要集中在两处: 一是其能够劫持操作系统并先于系统启动,从而根据需要随意修改内核代码并绕过操作系统的安全机制; 二是其根植于操作系统内核,具有和系统内核一样的权限,使得普通的在线检测模式无法拥有一个可信的运行环境。针对第一点,目前Windows 8操作系统有效利用UEFI BIOS和操作系统的签名验证机制,相对于之前的系统有了很大的进步。虽然针对UEFI BIOS的攻击仍然存在,但有效提高攻击者的代价和难度仍然是安全领域取得的进步,并且安全厂商对此仍在不断改进。另外,针对启动型恶意程序的技术特点我们可以对传统的检测手段做出改进,例如启动型恶意程序很大程度上依赖固件ROM和硬盘保留空间的存储,并且在实模式下依赖BIOS的中断处理程序,检测系统可以在相对地对固件ROM、硬盘保留空间加强监控和保护,以提高检测效果。针对第二点,目前在线检测无法保证检测效果的可信,因此,检测系统应该尽量采用离线检测的方式并结合蜜罐、沙箱等虚拟执行环境对其进行隔离培养,通过离线的静态分析与虚拟隔离环境下的动态执行,能够比传统的检测手段提供更好的检测效果。
摘要:内核态恶意代码作为破坏操作系统内核,隐藏其他恶意代码的一种恶意程序,已经成为了操作系统安全的重要威胁。近年来出现的一种新的伴随操作系统启动加载的恶意程序通过对计算机启动过程进行劫持,在操作系统启动完成之前实现自身的加载和运行。其结合了普通内核级恶意代码特点和优先于操作系统启动并根植于系统硬件等优势,比普通内核级恶意代码具有更强的隐蔽性和破坏性。分析这种新型恶意代码。首先对其技术发展进行梳理,然后重点针对Windows下典型的启动型恶意代码,分析其在操作系统启动过程的不同阶段中环环相扣的实现技术原理。最后分析了目前检测技术现状,指出现有的检测方法过于依赖在线检测和完整性检测,从两方面提出了改进建议。
大数据下源代码同源性安全分析 篇9
随着大数据时代的到来,数据安全、数据分析等成了人们关注的焦点。而数据增加的速度极快,增长量更是巨大的。因而, 对于数据的分析不仅仅是掌握大量的数据,而是对其进行针对性的处理。
1源代码同源性分析简介
对软件进行同源性鉴别就是分析比较两个软件从源代码到软件功能之间的差别,找出它们之间的相似之处或者相同之处。 在进行比较鉴别的时候,主要是查看软件形成基础的程序源代码。在软件系统的源代码中,存在很多相同或者相似的代码片段, 我们把它们称作克隆代码,克隆代码之间是具有同源性的。目前, 国内外的学者对源代码同源性检测的研究有很多,研究比较多的就是源代码抄袭技术的检测,也就是对克隆代码的检测。经常使用的检测源代码同源性的方法包括文本相似和功能相似这两种。 其中,文本相似的检测主要集中于对源代码中声明、标识符、文字、变量类型等的检测;而功能相似检测注重的是程序段之间结构和语义的不同,而不关注程序段之间格式或者变量名的改变。 在使用功能相似检测的时候,如果两个软件的代码段是由不同的句法或者变量编程实现的,但是它们实现的功能是相同的,就能够通过该检测识别出来。
最早研究检测代码中的克隆代码是在20世纪90年代,是随着软件维护的问题出现的,而逐渐受到人们的关注。在90年代中期之后,对克隆代码检测工具的研究日益增多,并且在软件研究领域变得很兴盛。到目前为止,对于源代码同源性的检测技术主要包括四大类,分别是基于文本的鉴别技术、基于编程风格的鉴别技术、基于抽象语法树的鉴别技术以及基于语义的鉴别技术。
1.1基于文本相似性的鉴别技术
基于文本相似性的鉴别技术有很多种,比较典型的包括基于子串匹配的方法、基于参数化的匹配方法,除此以外,应用比较多的还包括词频统计法,它也经常用于同源性的鉴别。该方法主要是对文本层次的检测,而没有考虑代码本身的语义特征,这样就使得该技术的局限性较大,在检测的时候,很容易出现漏检的现象,这样就让代码抄袭者很轻松的逃过检测。但是,该方法在检测的时候,主要考虑的是文本序列和文本组合,因此,它的误检率较低,在网络安全中的应用还是比较多的。
1.2基于编程风格的同源性鉴别技术
基于编程风格的同源性鉴别技术在检测的时候是根据编程人员的编写风格来判断软件的同源性。采用该方法鉴别同源性的时候,主要分为两个阶段。第一阶段要对了解文件的主要编码风格特征,第二阶段再对检测代码进行检测,检测时主要使用的是三种不同的模块。这样就能够确定被克隆的位置。该方法在实现的时候需要耗费大量的人力和物力,很难实现自动化,可实施性也不强,因此,应用的比较少。
1.3基于抽象语法树的鉴别技术
基于抽象语法树的鉴别技术最早是由Baxter等人提出的。抽象语法树是一种类似于树的存储结构,它是经过代码段的语法分析后形成的,它保留了很多树节点的信息。运用该技术对代码段进行检测的时候,主要是对比分析代码段的语法结构,并对节点的值进行比较,根据节点的值判断代码文件是不是具有同源性。 该方法的实现过程是一个相当复杂的过程,而且在检测的时候也很容易出现误检的现象,因此,应用该方法进行检测的比较少。
目前有很多工具可以对源代码进行语法分析,比如javacc, 它是对java的一种优化。另外,Lex和Yacc是两种基于词法分析和语法分析的软件,它们能够对结构化的程序源代码进行转换,该工具在使用的时候效率较高。
1.4基于语义的鉴别技术
基于语义的鉴别技术突破的传统的思维,不再只关注代码抄袭的形式,而是通过语义方面的判断,来识别代码段的同源性。 该方法在进行检测的时候,主要是运用程序依赖图的方式,它将源代码转换成图形的pdg格式,并使用子图的同构性来检测代码段之间的相似性。例如,有如下代码:
我们得到的对应的流程图如下:
通过这个图就能看出数据之间的依赖关系,而这些依赖关系中包含了所有的语义信息,然后就可以利用等价的方式进行同源性的匹配分析。
2大数据下的安全分析
在分析大数据环境下的代码同源性的时候,主要是分析它们之间的相关关系,并不是注重因果关系。对于大数据来说,它主要具有四个特征,即规模很大,多样性,速度极快,且真伪难辨。大数据的起始计量单位是至少1000T,并且它的种类很多,包括网络日志、图片、地理位置信息等。除此之外,它的商业价值很高,并且处理速度极快。这就是大数据传统数据挖掘本质的不同。
目前,随着互联网的不断发展,一些网站和应用系统出现了漏洞,导致一系列的安全事故发生。在一些大数据的行业中,使用第三方数据库和中间件的频率很高,而这些系统存在的漏洞比较多,在进行修复的时候也很不及时。因此,我们需要对大数据进行分析,从中挖掘出新网站攻击的特征以及一些网络漏洞,从而分析同源的木马病毒。通过大数据的分析,可以发现一些潜在的安全事件,通过各个事件之间的关联性,就能够找出完整的威胁。此外,通过对大数据的分析,可以将分散的信息整合在一起, 这样就能够主动的采取安全防御措施,从而识别出更多的危险并阻止它。利用大数据进行分析的主要框架包括以下几个部分:
2.1数据的收集
我们需要在网络中收集各类信息,包括来自浏览器拓展的信息、查毒网站的一些信息,还有从事数据收集的安全供应商那里的信息,通过对这些数据以及一些网络攻击实例的研究,可以得到一个可用的数据库,帮助我们进行鉴别和检测。
2.2数据的存储
对存储的数据库进行研究分析,并获得它的提取码。对关键主机存在的同源性漏洞进行分析,建立一个漏洞的知识库,并对知识库中的各种性能指标以及该网络环境下的拓扑结构进行分析研究,获得一个网络环境的知识库。
2.3及时响应
获得同源性漏洞知识库之后,就能够对安全事件的有效性进行确认,可以通过多个渠道收集威胁网络安全的信息以及数据, 包括恶意软件的哈希值,恶意链接等,然后将它们存储起来。当威胁源被数据化之后,就可以通过同源性分析判断该威胁是新出现的,还是一直存在的,并且能够识别出它的基本特征,然后自动的将这些值返回给系统,以及时采取相应的措施。
除此之外,通过对大数据的同源性安全分析,还能了解一些钓鱼网站的信息并且判断这些威胁的发展趋势。这样就可以对一些企图攻击网站的恶意软件提前发出警告,以提高系统的防御性。
3大数据安全的应对对策
针对目前大数据的应用现状,在安全储存时采用的是虚拟化海量存储技术,它能够实现对信息资源的存储、传输、隔离、恢复等。在解决大数据的安全存储问题时,首先可以考虑对数据进行加密处理。无论是在大数据的安全设计服务中,还是在信息的传递过程中,加密技术都可以实现对数据流的有效保护。目前, 经常使用的加密技术包括PGP和True Crypt等程序。另外,可以使用分离密钥和加密数据对大数据进行保管分离,从而实施保护,同时,能够实现对密钥管理生命周期的定义。除此之外,过滤器和数据备份都是有效的进行大数据安全储存的方式。过滤器具有很强的监控作用,当数据离开用户的网络时,它能够实现对数据的阻止,防止它再次传出。数据备份则能够保证在大数据被破坏之后,有备无患,实现对大数据的安全管控。
4总结
通过对大数据同源性的安全分析,可以有效的确认对网站进行威胁的事件,对数据以及网络的安全起到了保护的作用。通过对软件漏洞的快速定位,为网络开发提供了技术性的支持,在大数据时代具有积极的现实意义。
参考文献
[1]陈慧.大数据下源代码同源性安全分析探讨[J].科技视界,2015.
[2]路梅,赵向军.程序源代码同源性度量技术研究[J].徐州建筑职业技术学院学报,2007.
一行代码改变营销 篇10
这个故事中有两个重点,“一行代码”和“焕然一新”。
从HTML5梦工厂开始计划移动版到最后上线,只花了一个星期。而梦工厂的工程师惟一的工作就是在模板里引入了一行云适配提供的JS代码。工程师们惊喜地发现,虽然手机性能比电脑要差很多,但用手机打开加载了云适配代码的网站,却比原先没有加载额外代码的网站速度快了很多;同时,网站导航更清晰,还加强了互动内容。最重要的是,无论在iOS还是Android设备,无论屏幕的尺寸如何,移动网站都完全同步于PC网内容。
今年6月,中国手机网民数量已经飙涨到4.64亿。随着互联网的发展,人们的生活习惯、消费习惯都发生了巨大变化。对于企业来说,当互联网在大众生活中的影响力不断上升,一片全新的营销战场也正在开启。
网站移动化
智能移动设备的普及,越来越多的人使用手机、平板设备浏览网站、查阅资料、在线购物等,当互联网全面进入移动化的时候,网页似乎慢了一步。
在移动开发技术最初经历的WAP阶段,手机操作系统没有统一的平台和技术标准,网页通过WAP技术来简单浏览图片和文字。如今,林林总总的移动设备尺寸不一,网站在做移动版时,需要针对不同设备不停调试;HTML5让网页有更多特效和交互,例如GPS和摄像头等功能,这都成为手机浏览网页的新挑战。
移动网页的体验越来越差,社交媒体、搜索引擎等工具逐渐取代了网页,成为营销的主要工具。有数据显示,当用户用手机打开PC版网站时,打开字太小、速度慢、导航复杂等糟糕的手机浏览体验可能导致79%的用户会流失,这对企业来说是巨大的损失。所以,网站移动化迫切需要CMO们重新考量,如何通过一种新的方式,使PC网页在手机上达到最佳的显示效果,也使用户在不同的设备上体验超越PC的阅读体验。
针对这样的需求,一种新技术应运而生,提供这一技术的是美通云动(北京)科技有限公司,业内人更愿意以其技术来称呼它:云适配。
“云适配可以让企业花最少的成本,做最大化的营销,快速登录移动市场,打一场漂亮仗。”云适配创始人兼CEO陈本峰曾在互联网标准组织(W3C)香港实验室从事互联网标准研究,并发明了一项手机浏览技术的国际专利。云适配就是基于这一技术并结合最前沿的HTML5技术,可以帮助企业快速将桌面版网站适配到iPhone、安卓、Windows Phone、黑莓、塞班等各种移动设备终端的屏幕上。不仅显著地提高了企业网站的用户体验以及销售转化率,而且大幅度地节省了企业开发和维护移动网站的费用。
陈本峰介绍,首先,云适配专利技术一次性打包解决屏幕尺寸碎片化、屏幕分辨率不统一、浏览器分化三大移动终端适配问题;其次,移动网站网址不变,可实现一份费用双渠道推广,不用多花一分推广费就能快速拥有新用户;第三,移动网站将完全同步于PC网内容,自动实时更新。更为惊艳的是:网站还支持多渠道营销推广,无论搜索引擎、微博、微信还是App均能读取。
目前,微软亚太研发集团、联想、浪潮、高露洁等知名企业和美国Bellevue政府、中关村管委会、西安交警等政府机构,都已悄然通过云适配的“一行代码”开启了全新的移动之旅。
一行代码的神奇之处
用手机打开联想中国的网页,你会发现,页面延续了PC版的风格,但比PC版更清新、分类更明确、导航更直接。在点开一个产品的时候,产品图、价格和细节一览无遗,效果可以跟App界面媲美。而在使用云适配前,在手机上打开网页和PC版一模一样,文字和图像非常小,看不清楚。
这也是云适配的核心优势,“一行代码”。
很多人刚听到云适配技术时都觉得不可思议,只用一行代码就可以实现各种屏幕?其实,云适配并非只是一行固定的代码,一行代码只针对一个界面。这行代码背后是很复杂的设计,使用了很多云端技术和浏览器渲染技术。通过云适配服务将网页匹配到相应的设备上。
“作为一个服务业务,一行代码只是产品的表现形式,如果这一行代码脱离开它背后的云服务,代码就一点价值都没有了。”陈本峰表示。
对于曾在微软美国技术总部任职,并参与了IE8和IE9研究和发布的陈本峰来说,网页渲染机制是他的看家本事,因此在云适配研发时应用了很多浏览器渲染机制,并结合强大的云计算的能力,让网页能够有能力自己收缩、适配不同的移动终端。
经过云适配技术创建的移动网站,网址不变、打开迅速,在实时同步PC网站内容更新的同时,可以实现动态页面的功能,如注册、登录、搜索、电商支付等。而这些都源于公司的自主核心技术,是目前市场上其他网站移动化服务无法完成的。
对云适配来说,高端客户对网站设计以及用户体验的要求相对较高,对网站服务的稳定性、可靠性需求也比较强烈。例如联想就很重视在手机网站上如何同步实现高端的品牌形象和良好的用户体验,政府和大学则对安全稳定性要求较高。目前,云适配服务都依托在微软的Windows Azure平台上,对他们来说,微软云平台在安全性和稳定性上十分有保证;而中小企业更多希望能够快速创建同步于PC端的手机网站,如果自行开发需要好几个月时间,这时云适配就是最佳的解决方案,只需要一两周就解决了问题。
当可口可乐推出时,没有人知道“可乐”是什么,是可口可乐开创了“可乐”的概念。而陈本峰的愿望,是希望将“适配”的概念植入人们脑中。“在互联网大爆炸的年代,人人都想拥有一个高效的移动网站。云适配的目标是让云适配成为网站开发者的一个必备工具。也就是希望网站开发者能把自己的精力放在自己的核心业务上,而不用考虑网站适配的问题。”
对比
传统手机建站云适配
不利推广:传统手机网站使用新的网址,输入原网址不能自动适配,需要单独推广新网址,使推广成本加倍。便于推广:云适配使用原网址,通过搜索引擎、微博、微信等平台打开原网址会自动根据访客使用机型进行适配,非常有利于网络推广。
开发成本高:需要开发新的数据库接口,需要开发手机网页,需要开发手机网站的管理后台;开发成本低、周期短:云适配直接在原来PC网站基础上做适配,只需插入一行云适配代码,您就可以快速便捷地拥有手机网站;
兼容难度高:目前市面上已有3000多种智能手机,需要调试对各种不同机型屏幕、分辨率、浏览器的兼容性;兼容性好:云适配已经调试了针对市面上所有主流机型的兼容性,覆盖4亿手机网民、3000多种智能手机;
维护成本高:长期同时需要维护PC网站和手机网站的更新以及后台,需要维护对新手机机型屏幕的适配性;维护成本低:无需另外维护。PC 网页更新时,手机网页自动适配,云适配会定期增加对新手机机型的适配支持;
风险高:开发新的数据库接口和管理后台可能要对数据库做修改,可能导致目前PC网站无法正常工作;风险低:插入云适配代码不会对PC网站造成任何影响,若停止云适配服务,输入原网址会显示原PC网页;
扩展性差:将来支持平板、智能电视等更多设备,需要重新开发多个网站,需要庞大的支出。扩展性好:只需要云适配升级插入的代码,就可以立即支持更多设备屏幕, 简单快捷扩展。
【代码安全检测】相关文章:
漏洞安全防范代码07-08
九行代码让windows崩溃原因分析Windows安全04-21
恶意代码检测08-19
js代码改写成jq代码的方法07-06
计算机网络入侵检测系统在LINUX下开放源代码的实现11-20
部门代码07-19
控制代码06-09
自动代码08-06
网页代码08-13
代码测试08-25