[发明专利]Java源代码不安全输入漏洞的检测方法无效
申请号: | 200910008999.3 | 申请日: | 2009-02-18 |
公开(公告)号: | CN101807232A | 公开(公告)日: | 2010-08-18 |
发明(设计)人: | 牛婷芝 | 申请(专利权)人: | 牛婷芝 |
主分类号: | G06F21/00 | 分类号: | G06F21/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100876 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | java 源代码 不安全 输入 漏洞 检测 方法 | ||
技术领域
本发明用于源代码静态检测安全漏洞领域,尤其用于检测用Java语言开发的源代码中存在的由于不安全输入引起的漏洞。
背景技术
近两年来随着中国软件市场的快速发展和持续增长,伴随出现的软件安全问题也受到越来越多人的关注。产生软件安全问题的原因有很多,由于开发时间紧迫,任务量重,程序员在开发过程中可能会忽略代码质量以及软件安全相关的问题;同时,随着软件市场的不断膨胀,从业人员的素质也在不断地下降,由于程序员本身对于信息安全以及网络安全没有足够的认识,因而在开发过程中也会导致一些严重漏洞的出现,基于以上考虑,当软件开发过程结束后,我们无法保证代码的安全性,然而随着软件规模的不断增大,人工手动去检查代码的安全漏洞已经不可能实现,在这种情况下,自动检测源代码的分析工具就应运而生了。
随着电子商务以及电子政务的不断普及发展,web系统得到了更多的应用,然而在web系统开发以及应用过程中安全问题更是层出不穷,本发明就是针对web系统可能出现的由于不安全输入引起的漏洞,提出一种适用于java源代码的安全分析系统的模型。
静态代码检测方法有现在比较流行的数据流分析方法,也有有限状态集的方法,在众多java静态检测工具中,PMD和findbugs都主要针对代码质量方面的检测,安全漏洞涉及的种类很少,而checkstyle则完全不能检测安全漏洞;jslint主要是根据文章中提出的几条有关代码质量方面的规则进行检测,常见的安全漏洞如SQL注入、跨站脚本等则均不能支持;现在市场上也有比较成熟的静态代码扫描工具例如fortify、klockwork等,但这些软件虽然可以检测漏洞的类型比较广泛,准确率也相对较高,但是在漏洞漏报率方面则表现平平。
发明内容
现在已知的Java安全漏洞类型种类繁多,本发明可以覆盖众多的漏洞类型并且达到较高的准确率和较低的漏报率。首先让我们从一个简单的SQL注入漏洞来引入分析。
下面的代码执行一个SQL查询,查找与给定名称匹配的student。查询限定只有当当前用户名与student的所有者名称匹配时,才向当前用户显示student。
...
String userName=ctx.getAuthenticatedUserName();
String studentName=request.getParameter(″studentName″);
String query=″SELECT*FROM student WHERE owner=″′+userName+″′AND studentname
=″′+studentName+″″′;
ResultSet rs=stmt.execute(query);
...
仔细查看上面这段代码时,我们会发现程序执行了一个SQL查询,这个查询语句的输入参数是query,而query是由变量userName和studentName以及一些固定字符串拼接组成的,因为查询语句是由常量字符串和用户输入的字符串动态构造,所以只有当studentName不包括单引号字符时,查询才能正确进行。
如果当一个userName为elaine,studentName为’name’OR’1=1’,那么查询语句就会变成SELECT*FROM student WHERE owner=‘elaine‘+AND studentname=‘name’OR‘1=1’,后面添加的OR‘1=1’导致了查询语句总是成立,这样查询语句最终演变成了SELECT*FROMstudent,使得无论是哪个用户都可以返回数据库中所有student的信息。
从上面这个例子我们可以清楚的看到漏洞的规律,即:当系统执行一个SQL查询语句时,必须要对查询的参数进行校验,以判断此参数是否来自于用户输入,如果来自用户输入,需要加入某些判断条件的限制(比如,是否存在单引号),如果没有这些条件限制的判断,那么则认为这段代码存在SQL注入漏洞。由此我们得到检测漏洞的步骤:
●找到SQL查询语句execute。
●查找execute参数。
●判断参数是否来自用户输入。
如果来自用户输入,判断是否有条件限制(是否存在单引号),没有则记录为漏洞。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于牛婷芝,未经牛婷芝许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910008999.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种分布式商场优惠券打印系统
- 下一篇:内壁融嵌式单模保偏光纤在线起偏器