[发明专利]处理路径敏感符号定义的源代码静态缺陷分析器及其方法无效

专利信息
申请号: 201110256022.0 申请日: 2011-08-31
公开(公告)号: CN102279800A 公开(公告)日: 2011-12-14
发明(设计)人: 吴世忠;张普含;董国伟;曹明;郝永乐;陈宇;蔡晶晶;朱钱杭 申请(专利权)人: 中国信息安全测评中心;北京启明星辰信息安全技术有限公司
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京安信方达知识产权代理有限公司 11262 代理人: 栗若木;王漪
地址: 100085 北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 处理 路径 敏感 符号 定义 源代码 静态 缺陷 分析器 及其 方法
【说明书】:

技术领域

发明涉及计算机领域,尤其涉及一种处理路径敏感符号定义的源代码静态缺陷分析器及其方法。

背景技术

随着软件工程的规模越来越大,源代码文件越来越多,源代码文件间的调用关系也是日趋复杂。单纯依靠编译器不足以发现代码中存在的所有问题,越来越多的开发者使用源代码静态缺陷分析器工具作为编译器的有效补充来发现和解决程序中可能存在的问题,如语义错误、安全缺陷等。图1显示了源代码静态缺陷分析器的常规框图。由源代码开发人员或测试人员将源代码输入源代码静态缺陷分析器中,首先由源代码解析模块进行处理,它将源代码转换为精简的中间代码交给缺陷分析模块,缺陷分析模块对中间代码进行分析并将分析数据,如语义分析、数据流分析等提交给结果输出模块,结果输出模块使用分析数据并结合缺陷规则库中定义的缺陷生成结果文件。

目前,针对程序源代码进行静态缺陷分析的技术和工具很多,但绝大多数都集中于传统开发语言,如C、C++、Java等。这种语言的特点是静态性、编译性较好,而当前比较流行的脚本语言,如Ruby、Python、PHP,通常具有动态性和解释性特点。

下文为一个PYTHON代码中变量符号定义的例子:

def system(cmd):

   #some stuff

def hello(cmd):

   #some stuff

system(command)            ←一个名字为system的函数

if b == 1:

   from os import *

   os.system(command)       ←一个全名为os.system的函数

 else b == 2:

    system = hello           ←一个名字为hello的函数的别名

 else b == 3:

    system = 1              ←一个值为1的整型常量

 else:

   i = 1

   system = i                ←一个从变量i取值的整型变量

print system                 ←到底是什么?

undef system

print system                 ←什么都不是

在代码中使用到某一变量时根据执行路径的不同,其定义情况、类型都可能不同。如上例中代码中的变量system,根据执行的路径不同,可以是函数、函数别名、整型变量和未定义的符号。

下面是Ruby语言的包含符号定义的代码片段:

while true

  var = true

  break

end

p var

for i in 1..3

  var = true

end

p var

下面是Python语言的包含符号定义的代码片段:

#!/usr/bin/env python

# -*- conding : utf-8 -*-

def test(x):

   if x:

      a = 1234

      print hex ( id (a) ) ,  locals ( )

   print hex( id (a) ) ,  locals ( ) ,  a

    text (True)

在Ruby和Python语言中,对符号赋值即被视为完成一个定义(特殊情况除外,如Ruby中的迭代语句),此定义在后续执行路径中一直有效(除非遇到对此符号的重新定义或删除),也就是说其定义原则不同于C/JAVA等符号定义路径不敏感的语言(这些语言都有严格的名字空间约束符号的定义)。这种符号定义的方式极大的增强了语言的灵活性,但对于源代码静态缺陷分析来说,如果不进行精确的符号定义分析,就很难确定在代码中某一位置符号的类型和其他属性信息,也就无从进行相应的分析工作。

已知的源代码静态缺陷分析器忽略符号定义在不同执行路径中的不同定义情况,遇到这种情况,处理办法通常是使用所有取值的集合来进行笼统的分析或放弃复杂情况的分析,这些处理办法都会导致大量的误报和漏报。

发明内容

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国信息安全测评中心;北京启明星辰信息安全技术有限公司,未经中国信息安全测评中心;北京启明星辰信息安全技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110256022.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top