注入类漏洞检测方法研究.docx
《注入类漏洞检测方法研究.docx》由会员分享,可在线阅读,更多相关《注入类漏洞检测方法研究.docx(10页珍藏版)》请在第一文库网上搜索。
1、注入类漏洞是软件漏洞中最为常见的一类,也是信息安全领域的一个研究热点。本文首先以SQ1注入漏洞和命令注入漏洞为例,阐述注入类程序漏洞的原理、分类和危害,介绍注入类漏洞的起始点、爆发点、传递链等概念;其次从代码安全扫描的角度分析传统源代码扫描方法的弊端和局限性,提出复合扫描引擎的概念,并详细阐述其原理和优势,针对不同引擎漏洞库之间差异大的问题,从注入类漏洞的特点出发设计解决算法;最后对未来研究可能面临的挑战进行展望。一、注入类漏洞的原理所谓注入类漏洞,是指软件不加识别地运行了恶意用户(也称“黑客”)精心设计的输入内容,导致系统运行错误,或泄露客户信息的一种漏洞。这类漏洞主要是由系统对用户输入的盲
2、目信任引发的。注入类漏洞主要包括:SQ1注入、命令注入、XSS注入、XM1注入、XPATH等类型。下面以最典型的SQ1注入和命令注入为例,列举两个注入类漏洞案例,并分析说明其原理。1SQ1注入漏洞SQ1注入漏洞,简单地说就是利用程序代码漏洞,绕过程序的权限,将SQ1命令插入用户请求的查询字符串或者输入域进行攻击,其结果轻则获得敏感信息和数据,重则能够控制服务器。SQ1注入漏洞的利用方式有直接注入和二次注入两种,前者是直接将代码插入用户输入变量中,该变量与SQ1命令串联在一起,故称之为直接注入;后者是将恶意代码注入字符串中,该字符串存储于数据库表中,待程序读取该库表字符串的值时,被连接成动态SQ
3、1命令并执行恶意SQ1o下面是一个直接注入SQ1漏洞的例子。以下代码动态地构造并执行了一个SQ1查询,该查询可以搜索与指定客户名称相匹配的交易记录。假设有如下C语言代码段:ReCeiVj1nput(&szCUSTOM_NAME);/接收用户输入的查询条件注入点sprintf(szSQ1,Sizeof(szSQ1),“se1ect*fromTAB1E_TRANSACTIONwhereCUSTOM_NAME=%s,;SZCUST0M_NAME);/拼接SQ1语句Execute(SZSQ1);/执行SQ1语句爆发点上述代码的逻辑是:接收用户在界面输入的姓名,将其作为查询条件拼接到SQ1语句中,再在数
4、据库中完成查询操作。正常情况下,当用户输入客户名称“David”时,拼接成的SQ1语句为:se1ectfromTAB1E_TRANSACTIONwhereCUSToM_NAME=DaVid;此时程序将产生正确的输出。但是当这段代码被黑客攻击时,如果黑客输入的内容为:;se1ectfromTAB1E_TRANSACTIONwhere1=1那么拼接成的SQ1语句将变为:se1ect*fromTAB1E_TRANSACTIONwhereCUSTOM_NAME=f;se1ect*fromTAB1E_TRANSACTIONwhere1,=f;这样一来,将会有两条SQ1语句被执行,虽然前一条SQ1语句是安
5、全的,但后一条却可以查询出库表中的所有记录,从而导致严重的信息泄露。在这个例子中,程序从用户输入信息中获取了sz6MT建明肥字段,在未经过滤的情况下,将其值直接以字符串拼接的方式拼接到一个SQ1语句中,造成了SQ1注入漏洞。在这段程序中,直接从用户输入内容获取信息的代码行ReceiveJnput(&szCUSTOM_NAME)刷、为运个SQ1注入漏洞的注入点。执行危险SQ1语句的代码行EXi(SZSQ1)粽为这个SQ1注入漏洞的爆发点。从注入点到爆发点之间,所有涉及危险字符串sz6TM朋防信息赋值的语句,称为这个SQ1注入漏洞的传递链。2 .命令注入漏洞命令注入漏洞是指通过提交恶意构造的参数破
6、坏命令语句的结构,达到非法执行命令的目的。命令注入漏洞常发生在有执行系统命令的Web应用中。下面举一个命令注入漏洞的例子。以下代码在服务器上动态地为用户建立专用目录,路径名是用户输入的客户名称。假设有如下PHP语言代码段:$customName=$POST/7customName;接收用户输入注入$command=mkdir/home/app1ication/custom_Directory”.$customName;/接命令system(Scommand);执行危险命令爆发点其功能是接收用户输入的客户名称,然后在后台建立该客户专属的文件路径。正常情况下,当用户输入客户名称“David”时,执
7、行命令:mkdir/home/app1ication/custom_Directory/David但是当被黑客攻击时,如果黑客输入的内容不是客户名称,而是如下字符串:那么拼接而成的命令变为:mkdir/home/app1ication/custom_Directory;rm-rf/运行后将删除后台所有文件。如此看来上述代码存在很大风险。在本例中,同样涉及注入点、爆发点、数据流的概念。从用户输入信息获取CustomName的代码行$CUStomName=$POSTzzCustomNamezz称为这个命令注入漏洞的注入点。执行这个危险命令的代码行System(Scommand)称为这个命令注入漏洞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 注入 漏洞 检测 方法 研究