基于指令集随机化的抗代码注入攻击方法
发布时间:2021-06-25 11:19
代码注入攻击是应用程序面临的一种主要安全威胁,尤其是Web应用程序,该种攻击源于攻击者能够利用应用程序存在的漏洞/后门,向服务器端注入恶意程序并执行,或者利用应用程序对用户输入的参数缺乏验证和过滤,造成输入作为恶意程序执行,从而达到攻击目的。源程序分析和输入规则匹配等现有防御方法在面对代码注入攻击时都存在着固有缺陷,为了提高Web应用程序对于代码注入攻击的防御性,提出一种基于指令集随机化的抗代码注入方法,该防御方法不依赖于攻击者采用何种攻击方式,能够抵御未知的代码注入攻击。基于该技术及动态、冗余构造方法,设计一套原型系统,采用广义随机Petri网(Generalized Stochastic PetriNet,GSPN)建模计算,攻击者即使在获得随机化方法先验知识的情况下也极难突破系统的防御机制。尽管该方法需要对应用程序源代码进行随机化变换,但处理过程是完全自动化和具有普适性的,通过实验和现网测试表明该方法能够有效抵御大部分代码注入攻击,实现了对攻击的主动防御。
【文章来源】:信息安全学报. 2020,5(04)CSCD
【文章页数】:14 页
【部分图文】:
Zend虚拟机中代码执行过程Figure4CodeexecutionprocessinZendvirtualmachine
鬯??;PHP程序若执行include()、require()等具有PHP程序调用功能的函数,重复步骤③;PHP程序若执行mysqli_query()、oci_execute()等具有数据库操作功能的函数,则进行步骤④,数据库完成操作后将结果返回至PHP解释器,如步骤⑤所示;PHP程序若执行exec()、system()等具有系统命令执行功能的函数,则进行步骤⑥,操作系统完成调用后将结果返回至PHP解释器,如步骤⑦所示;最终服务器端通过HTTP协议将结果返回至客户端,如步骤⑧所示。图1Alexa排名前100万网站类型统计Figure1TypeStatisticsbyAlexaTop1MillionWebsite图1给出了W3Techs根据Alexa排名前100万网站的类型统计,PHP网站数量占比达到78.8%,排名首位,PHP语言已然成为目前全球范围内应用最广泛的服务器端编程语言。因此,接下来将以PHP应用程序为代表介绍代码注入攻击的过程和特点。攻击者向服务器端注入恶意程序并执行,或者输入恶意的数据作为程序执行,从而实现注入攻击目的。针对Web应用程序的注入型攻击,代码注入攻击通常发生在步骤②;命令注入攻击通常发生在步骤④;而SQL注入攻击通常发生在步骤⑥,其中相较于命令注入攻击和SQL注入攻击而言,代码注入攻击不需要获得相关操作系统、数据库的先验知识,攻击方式较为多样,攻击范围更为广泛。表1给出了PHP应用程序中代码注入攻击普遍利用的函数和关键字,这些函数和关键字具备代码执行或者接收函数回调的功能。2.2主要防御方法目前,代码注入攻击的安全防护方法主要源于程序分析和输入规则匹配两种技术思路
32JournalofCyberSecurity信息安全学报,2020年7月,第5卷,第4期图2典型Web应用架构Figure2TypicalWebapplicationarchitecture表1PHP代码注入攻击常利用的函数和关键字Table1FunctionsandkeywordscommonlyusedinPHPcode-injectionattacks具有代码执行功能的函数或关键字函数或关键字注入位置函数或关键字注入位置eval0assert0preg_replace(‘/.*/e’,...)1create_function1include0include_once0require0require_once0具有函数回调功能的函数或关键字函数或关键字回调位置函数或关键字回调位置ob_start0array_diff_uassoc–1array_diff_ukey–1array_filter1array_intersect_uassoc–1array_intersect_ukey–1array_map0array_reduce1array_udiff_assoc–1set_exception_handler0array_udiff–1array_uintersect_assoc–1sqlite_create_function2array_uintersect–1array_walk_recursive1array_walk1assert_options1uasort1uksort1usort1preg_replace_callback1spl_autoload_register0iterator_apply1call_user_func0call_user_func_array0register_shutdown_function0register_tick_function0set_error_handler0确定不同变量对于应用程序的作用,避免不规范的变量设置造成的注入攻击,更复杂地能够构造参数集合进行变量赋值,并跟踪执行路径来检查应用程序在逻辑层面的注入漏洞,例如动态符号执行、动态污点分析等技术方法。程序分析方法对于代码注入攻击能够起到一定的防御作用,但是随着应用程序越来越复杂,该方法将面临着以下问题:(1)静态源程序分析结果无法阻止攻击发生,若禁用危险的函数和关键字,将会影响程序
【参考文献】:
期刊论文
[1]进程控制流劫持攻击与防御技术综述[J]. 王丰峰,张涛,徐伟光,孙蒙. 网络与信息安全学报. 2019(06)
[2]运行时代码随机化防御代码复用攻击[J]. 张贵民,李清宝,曾光裕,赵宇韬. 软件学报. 2019(09)
[3]基于GSPN的拟态DNS构造策略研究[J]. 任权,邬江兴,贺磊. 信息安全学报. 2019(02)
[4]基于拟态防御架构的多余度裁决建模与风险分析[J]. 李卫超,张铮,王立群,邬江兴. 信息安全学报. 2018(05)
[5]代码复用对抗技术研究进展[J]. 乔向东,郭戎潇,赵勇. 网络与信息安全学报. 2018(03)
[6]应用于动态异构web服务器的相似度求解方法[J]. 马博林,张铮,刘健雄. 计算机工程与设计. 2018(01)
[7]基于硬件的动态指令集随机化框架的设计与实现[J]. 杜三,舒辉,康绯. 网络与信息安全学报. 2017(11)
[8]内存数据污染攻击和防御综述[J]. 马梦雨,陈李维,孟丹. 信息安全学报. 2017(04)
[9]基于软硬件多样性的主动防御技术[J]. 仝青,张铮,邬江兴. 信息安全学报. 2017(01)
[10]web服务器拟态防御原理验证系统测试与分析[J]. 张铮,马博林,邬江兴. 信息安全学报. 2017(01)
本文编号:3249118
【文章来源】:信息安全学报. 2020,5(04)CSCD
【文章页数】:14 页
【部分图文】:
Zend虚拟机中代码执行过程Figure4CodeexecutionprocessinZendvirtualmachine
鬯??;PHP程序若执行include()、require()等具有PHP程序调用功能的函数,重复步骤③;PHP程序若执行mysqli_query()、oci_execute()等具有数据库操作功能的函数,则进行步骤④,数据库完成操作后将结果返回至PHP解释器,如步骤⑤所示;PHP程序若执行exec()、system()等具有系统命令执行功能的函数,则进行步骤⑥,操作系统完成调用后将结果返回至PHP解释器,如步骤⑦所示;最终服务器端通过HTTP协议将结果返回至客户端,如步骤⑧所示。图1Alexa排名前100万网站类型统计Figure1TypeStatisticsbyAlexaTop1MillionWebsite图1给出了W3Techs根据Alexa排名前100万网站的类型统计,PHP网站数量占比达到78.8%,排名首位,PHP语言已然成为目前全球范围内应用最广泛的服务器端编程语言。因此,接下来将以PHP应用程序为代表介绍代码注入攻击的过程和特点。攻击者向服务器端注入恶意程序并执行,或者输入恶意的数据作为程序执行,从而实现注入攻击目的。针对Web应用程序的注入型攻击,代码注入攻击通常发生在步骤②;命令注入攻击通常发生在步骤④;而SQL注入攻击通常发生在步骤⑥,其中相较于命令注入攻击和SQL注入攻击而言,代码注入攻击不需要获得相关操作系统、数据库的先验知识,攻击方式较为多样,攻击范围更为广泛。表1给出了PHP应用程序中代码注入攻击普遍利用的函数和关键字,这些函数和关键字具备代码执行或者接收函数回调的功能。2.2主要防御方法目前,代码注入攻击的安全防护方法主要源于程序分析和输入规则匹配两种技术思路
32JournalofCyberSecurity信息安全学报,2020年7月,第5卷,第4期图2典型Web应用架构Figure2TypicalWebapplicationarchitecture表1PHP代码注入攻击常利用的函数和关键字Table1FunctionsandkeywordscommonlyusedinPHPcode-injectionattacks具有代码执行功能的函数或关键字函数或关键字注入位置函数或关键字注入位置eval0assert0preg_replace(‘/.*/e’,...)1create_function1include0include_once0require0require_once0具有函数回调功能的函数或关键字函数或关键字回调位置函数或关键字回调位置ob_start0array_diff_uassoc–1array_diff_ukey–1array_filter1array_intersect_uassoc–1array_intersect_ukey–1array_map0array_reduce1array_udiff_assoc–1set_exception_handler0array_udiff–1array_uintersect_assoc–1sqlite_create_function2array_uintersect–1array_walk_recursive1array_walk1assert_options1uasort1uksort1usort1preg_replace_callback1spl_autoload_register0iterator_apply1call_user_func0call_user_func_array0register_shutdown_function0register_tick_function0set_error_handler0确定不同变量对于应用程序的作用,避免不规范的变量设置造成的注入攻击,更复杂地能够构造参数集合进行变量赋值,并跟踪执行路径来检查应用程序在逻辑层面的注入漏洞,例如动态符号执行、动态污点分析等技术方法。程序分析方法对于代码注入攻击能够起到一定的防御作用,但是随着应用程序越来越复杂,该方法将面临着以下问题:(1)静态源程序分析结果无法阻止攻击发生,若禁用危险的函数和关键字,将会影响程序
【参考文献】:
期刊论文
[1]进程控制流劫持攻击与防御技术综述[J]. 王丰峰,张涛,徐伟光,孙蒙. 网络与信息安全学报. 2019(06)
[2]运行时代码随机化防御代码复用攻击[J]. 张贵民,李清宝,曾光裕,赵宇韬. 软件学报. 2019(09)
[3]基于GSPN的拟态DNS构造策略研究[J]. 任权,邬江兴,贺磊. 信息安全学报. 2019(02)
[4]基于拟态防御架构的多余度裁决建模与风险分析[J]. 李卫超,张铮,王立群,邬江兴. 信息安全学报. 2018(05)
[5]代码复用对抗技术研究进展[J]. 乔向东,郭戎潇,赵勇. 网络与信息安全学报. 2018(03)
[6]应用于动态异构web服务器的相似度求解方法[J]. 马博林,张铮,刘健雄. 计算机工程与设计. 2018(01)
[7]基于硬件的动态指令集随机化框架的设计与实现[J]. 杜三,舒辉,康绯. 网络与信息安全学报. 2017(11)
[8]内存数据污染攻击和防御综述[J]. 马梦雨,陈李维,孟丹. 信息安全学报. 2017(04)
[9]基于软硬件多样性的主动防御技术[J]. 仝青,张铮,邬江兴. 信息安全学报. 2017(01)
[10]web服务器拟态防御原理验证系统测试与分析[J]. 张铮,马博林,邬江兴. 信息安全学报. 2017(01)
本文编号:3249118
本文链接:https://www.wllwen.com/guanlilunwen/ydhl/3249118.html