CN114595482A - 一种基于静态检测的软件源代码隐私检测方法及系统 - Google Patents

一种基于静态检测的软件源代码隐私检测方法及系统 Download PDF

Info

Publication number
CN114595482A
CN114595482A CN202210233434.0A CN202210233434A CN114595482A CN 114595482 A CN114595482 A CN 114595482A CN 202210233434 A CN202210233434 A CN 202210233434A CN 114595482 A CN114595482 A CN 114595482A
Authority
CN
China
Prior art keywords
privacy
source code
information
privacy information
api
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210233434.0A
Other languages
English (en)
Inventor
张淼
张洪盈
舒梓峰
高善勋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202210233434.0A priority Critical patent/CN114595482A/zh
Publication of CN114595482A publication Critical patent/CN114595482A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Virology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于静态检测的软件源代码隐私检测方法及系统,从源代码角度讨论隐私检测及隐私保护的问题,针对隐私信息的存在性进行检测,通过源代码静态分析技术从开源代码中检测出存在隐私处理的位置,可以从软件开发的源头发现隐私安全问题,同时补充了针对隐私信息处理流程的安全性检测,从源代码中的隐私点开始进行分析,首先判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,如未加密的保存、网络传输等,若存在敏感操作,则说明其对隐私的处理存在安全问题,需要提出并进行改正,是一种通用型源代码的隐私信息的检测方法,可以充分覆盖到各个层次、各个角度的隐私信息,提高其适用性,更全面的监控隐私安全。

Description

一种基于静态检测的软件源代码隐私检测方法及系统
技术领域
本发明涉及软件安全技术领域,尤其涉及一种基于静态检测的软件源代码隐私检测方法及系统。
背景技术
近年来涉及个人隐私数据窃取频发,国内多家企业的上亿用户的简历、智能家居的用户信息等大规模隐私数据也遭遇窃取,在对个人造成不同类型、程度损害的同时,也动摇着网络乃至整个社会的信用体系,所以需要前瞻性地研究个人数据隐私保护问题。
针对这个隐私保护问题,目前学术界也有很多学者在进行个人数据和隐私保护相关的研究,常见的是对Android应用软件的研究,主要针对Android中的各类隐私获取权限进行分析,或者基于法律视角,对Android应用软件涉及的隐私协议进行分析,通过静态分析应用smali代码中类之间的调用关系生成Activity树状图,并通过树的层次遍历策略编写自动化测试脚本,实现应用内隐私协议的自动提取,并通过API-关键词映射列表,自动对比分析应用隐私行为与隐私协议的方法,进而判断其安全性。
然而,目前针对隐私保护的研究还不够完善,体现在:
1、缺少源代码角度的隐私信息检测
2019年开源项目平台GitHub上的某软件源代码泄漏事件中,发现了被硬编码在源代码中的用户名、密码等用户信息,导致该事件不仅影响了代码的安全性,也对用户信息安全造成不良的影响。因为部分用户在互联网上习惯使用相同账户密码,所以隐私信息泄露对于其他产品的使用都会造成安全风险。
这次事件在警示企业严管代码安全的同时,也提出了隐私保护研究的新课题,即源代码中的隐私安全问题。目前学术界针对个人隐私保护的研究多是对Android应用软件的研究,因为其存在统一的编程规范,所以主要通过反编译和特征匹配就可以完成。常见的一种是对Android中的各类隐私获取权限进行分析,从manifest文件中提取权限名称、检测精度较高的API特征,然后进行特征匹配即可检测到Android涉及的隐私处理行为。但对通用性的源代码,特征匹配方法不能完善的检测到所有的隐私,需要对其进行进一步的研究。
2、对隐私信息的检测范围不够全面
源代码中隐私信息的存在形式主要包括三种。首先,有些隐私信息会通过硬编码的形式保存在源代码中,即将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践中,典型的包括口令、密钥、证书信息等。其次,有些隐私可以通过特定的接口获取和处理,典型的包括录音权限获取、录像权限获取等,源代码通过调用相应的接口获取用户的隐私信息。最后,常见的隐私信息其实来源于用户的输入,开发者一般通过与用户交互获取信息,例如常见的用户登录、用户注册,用户会将自己的隐私信息填写并上传到服务器进行处理和保存。在证明了隐私信息的存在性后,即可以从源代码中检测出存在隐私处理的位置。
对于硬编码的重要数据,代码若开源会导致其泄露,非开源的源代码中的硬编码的数据很容易就会被攻击者通过反编译等手段得到,所以存在极大的安全隐患。对于通过特殊接口或者用户交互获得的隐私信息后,若后续操作这些隐私信息时没有对其进行安全保护或实施了一些敏感操作,用户的这部分隐私信息也存在泄露的风险。
在进行Android隐私分析时,主要对Android端涉及的隐私信息进行检测,常见的包括访问电话状态权限、发送/接收短信、安装应用权限等等,然而这些都只适用于Android端,在web端中并不适用。
因此,需要一种通用型源代码的隐私信息的检测方法,充分覆盖到各个层次、各个角度的隐私信息,提高其适用性,更全面的监控隐私安全。
发明内容
本发明针对上述技术问题,提供一种基于静态检测的软件源代码隐私检测方法及系统。
为了实现上述目的,本发明提供如下技术方案:
一种基于静态检测的软件源代码隐私检测方法,包括以下步骤:
S1、解析源代码,提取特征:针对隐私在源代码中的不同存在形式,在源代码中提取如下三种相应的特征:固定特征或固定内容的隐私信息的特征、可以获取用户隐私信息的接口API和可以获取用户输入的接口API;
S2、根据步骤S1提取的三种特征,做不同的特征匹配处理:对于提取到的固定特征或固定内容的隐私信息,直接检测到源代码中硬编码的隐私信息;对于提取到的可以获取用户隐私信息的接口API,判断其存在获取隐私信息的行为;对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关;
S3、对用户输入类的隐私信息进行检测,通过提取用户输入的接口API找到输入函数作为入口,分析该部分代码与隐私信息的相关性,在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,若重合度高于某一阈值,判定其存在隐私处理的行为;
S4、对源代码进行分析,得到对应的抽象语法树,遍历AST,以步骤S3找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程;
S5、对步骤S4隐私信息的处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,若存在敏感操作,判断其对隐私的处理存在安全问题,提出并进行改正。
进一步地,步骤S1中,固定特征或固定内容的隐私信息的特征包括:性别、身份证号、手机号、QQ号、电子邮箱、家庭地址、籍贯、职业以及账号密码。
进一步地,步骤S1中,可以获取用户隐私信息的接口API包括:录音API、摄像头监控API、获取地理位置的API、获取内存信息的API、获取已安装应用列表的API、获取WiFi列表的API。
进一步地,步骤S1中,可以获取用户输入的接口API包括:C/C++的getchar()、getch()、gets()和Java的scanner的nextLine()、nextInt()。
进一步地,步骤S4中,软件的开发语言为C语言时使用Antlr作为抽象语法树。
进一步地,步骤S4中,软件的开发语言为Java时使用Java parser作为抽象语法树。
进一步地,步骤S4中,抽象语法树包括函数声明、函数调用、变量声明、变量赋值。
进一步地,步骤S5中,敏感操作包括未加密的保存和网络传输。
另一方面,本发明还提供了一种基于静态检测的软件源代码隐私检测系统,包括以下模块:
特征提取模块,用于解析源代码,提取特征:针对隐私在源代码中的不同存在形式,在源代码中提取如下三种相应的特征:固定特征或固定内容的隐私信息的特征、可以获取用户隐私信息的接口API和可以获取用户输入的接口API;
特征匹配模块,根据特征提取模块提取的三种特征,做不同的特征匹配处理:对于提取到的固定特征或固定内容的隐私信息,直接检测到源代码中硬编码的隐私信息;对于提取到的可以获取用户隐私信息的接口API,判断其存在获取隐私信息的行为;对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关;
相关度计算模块,用于对用户输入类的隐私信息进行检测,通过提取用户输入的接口API找到输入函数作为入口,分析该部分代码与隐私信息的相关性,在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,若重合度高于某一阈值,判定其存在隐私处理的行为;
流提取模块,用于对源代码进行分析,得到对应的抽象语法树,遍历AST,以相关度计算模块找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程;
安全检测模块,用于对流提取模块隐私信息的处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,若存在敏感操作,判断其对隐私的处理存在安全问题,提出并进行改正。
进一步地,上述的基于静态检测的软件源代码隐私检测系统,还包括存储模块,用于保存包括输入的源代码文件、文件夹所在路径、系统遍历路径获取所有文件的列表和每个被检测到的隐私信息、及其所在文件路径、其处理安全性评定信息。
与现有技术相比,本发明的有益效果为:
(1)补足源代码角度的隐私信息研究
目前学术界针对个人隐私保护的研究多是对Android应用软件的研究,因为其存在统一的编程规范,所以主要通过反编译、特征提取和特征匹配就可以完成。但对通用性的源代码,特征匹配方法不能完善的检测到所有的隐私,需要对其进行进一步的研究。本发明提供的基于静态检测的软件源代码隐私检测方法,从源代码角度讨论隐私检测及隐私保护的问题,针对隐私信息的存在性进行检测,通过源代码静态分析技术从开源代码中检测出存在隐私处理的位置,即从源代码中准确定位存在隐私获取、隐私处理、隐私保存的位置,可以从软件开发的源头发现隐私安全问题,既可以帮助有关监管部门及时的发现隐私安全隐患,也可以有效的帮助个人用户或公司企业维护隐私安全。
(2)补充了完备的隐私信息类型
在进行Android隐私分析时,主要对Android端涉及的隐私信息进行检测,常见的包括访问电话状态权限、发送/接收短信、安装应用权限等等这些都只适用于Android端,在web端中并不适用。本发明提供的基于静态检测的软件源代码隐私检测方法,补充了针对隐私信息处理流程的安全性检测,从源代码中的隐私点开始进行分析,首先判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,如未加密的保存、网络传输等,若存在敏感的操作,则说明其对隐私的处理存在安全问题,需要提出并进行改正,补充了完备的隐私信息类型,是一种通用型源代码的隐私信息的检测方法,可以充分覆盖到各个层次、各个角度的隐私信息,提高其适用性,更全面的监控隐私安全。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于静态检测的软件源代码隐私检测方法的流程图。
具体实施方式
为了使本领域的技术人员更好地理解本发明的技术方案,下面将结合附图和实施例对本发明作进一步的详细介绍。
本发明的基于静态检测的软件源代码隐私检测方法,对隐私信息的检测主要包括两个方面。第一,通过静态代码分析技术从源代码中检测出存在隐私处理的位置,即从源代码中准确定位存在隐私获取、隐私处理、隐私保存的的位置。第二,判断该部分源代码对隐私进行处理的安全性和可靠性。总体检测方法如图1所示,该方法主要包括步骤如下:
S1、解析源代码,提取特征:针对隐私在源代码中的不同存在形式,在源代码中提取如下三种相应的特征:固定特征或固定内容的隐私信息的特征、可以获取用户隐私信息的接口API和可以获取用户输入的接口API;
S2、根据步骤S1提取的三种特征,做不同的特征匹配处理:对于提取到的固定特征或固定内容的隐私信息,直接检测到源代码中硬编码的隐私信息;对于提取到的可以获取用户隐私信息的接口API,判断其存在获取隐私信息的行为;对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关;
S3、对用户输入类的隐私信息进行检测,通过提取用户输入的接口API找到输入函数作为入口,分析该部分代码与隐私信息的相关性,在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,若重合度高于某一阈值,判定其存在隐私处理的行为;
S4、对源代码进行分析,得到对应的抽象语法树,遍历AST,以步骤S3找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程;
S5、对步骤S4隐私信息的处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,若存在敏感操作,判断其对隐私的处理存在安全问题,提出并进行改正。
本发明还提供一种基于静态检测的软件源代码隐私检测系统,包括特征提取、特征匹配、相关度计算、流提取、安全检测等模块,下面具体说明。
1、相关概念
1.1正则匹配
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制。
1.2自然语言处理技术
自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,是一门融语言学、计算机科学、数学于一体的科学。主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。
2、模块介绍
2.1.特征提取
第一步,解析源代码,提取特征。针对隐私在源代码中的不同存在形式,主要在源代码中提取如下三种相应的特征。
①有固定特征或固定内容的隐私信息的特征,包括性别、身份证号、手机号、QQ号、电子邮箱、家庭地址、籍贯、职业以及各种账号密码等。
②可以获取用户隐私信息的接口API,包括录音API、摄像头监控API、获取地理位置的API、获取内存信息的API、获取已安装应用列表、获取WiFi列表的API等;
③可以获取用户输入的接口API,搜集并整理了C/C++和Java的常用的获取用户输入的接口API,如C/C++的getchar()、getch()、gets()和Java的scanner的nextLine()、nextInt()等;
2.2特征匹配
根据上一步提取的三种特征,做不同的特征匹配处理。
首先是有固定特征或固定内容的隐私信息。这部分特征可以直接检测到源代码中硬编码的身份证号、手机号、家庭地址等隐私信息,其存在极大的安全隐患。但这种情况较少,用户或开发者一般不会将隐私信息直接写在源代码中,在一定程度上保护了其安全性。
然后通过特征提取可以检测到通过特殊接口API来获取隐私信息的行为,如代码中连续调的waveInOpen()、waveInPrepareHeader()、waveInAddBuffer()、waveInStart()即为一个完整的录音行为。当在源代码中提取到这一部分特殊API时,即可证明其存在获取隐私信息的行为。
对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关。
2.3相关度计算
对用户输入类的隐私信息进行检测。通过提取的第三种特征,可以找到输入函数作为入口,分析该部分代码与隐私信息的相关性。在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,重合度高于某一阈值,则说明其存在隐私处理的行为。
例如,某代码通过nextLine()函数检测到了代码获取用户输入的位置,并且通过相关度计算发现“username”和“password”和隐私相关都极高,或者代码文件的注释中提取到了“用户名”“密码”的关键词汇,都可以判断此处存在获取用户隐私信息的行为。
2.4流提取
证明了源代码中存在隐私处理行为之后,接下来是判断其处理的安全性。首先对源代码进行分析,得到对应的抽象语法树。该步骤根据软件的不同开发语言选择合适的抽象语法树构建工具,如C语言使用Antlr,Java则使用Java parser。该抽象语法树的每个节点都表示源代码中的一种结构,包括函数声明、函数调用、变量声明、变量赋值等,可以比较清晰的读取源代码中的各个API的调用流程、变量的各种操作等,为下一步的分析打好基础。
首先遍历AST,以上一步找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程。
2.5安全检测
首先对上一步提取到的隐私信息处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,如未加密的保存、网络传输等,若存在敏感的操作,则说明其对隐私的处理存在安全问题,需要提出并进行改正。除此之外,还要对存在隐私处理的源代码进行常见的漏洞检测,若该源代码存在一些安全漏洞,则其处理的隐私信息也存在泄露的风险,需要及时的处理和修复。
2.6输入和输出
输入即为源代码文件。提供保存源代码的文件或文件夹所在路径,遍历路径获取所有文件的列表,循环针对每个文件单独处理。
经过检测,按照检测系统的输出结果,将每个被检测到的隐私信息保存到文件中,输出包括该隐私信息、其所在文件路径、其处理安全性评定等信息。
3、系统处理流程
首先通过特征提取和特征匹配获取有固定特征或固定内容的隐私信息,即静态保存类的隐私信息。然后是对动态获取类的隐私信息的检测。通过特征提取和特征匹配可以检测到通过特殊接口API来获取隐私信息的行为。最后是对用户输入类的隐私信息进行检测。将输入函数作为入口,分析该部分代码与隐私信息的相关性,目前的方法是提取源代码中的字符串,对字符串进行分词并计算其与隐私词汇的相关性,若相关度高于某一阈值,则说明其存在隐私处理的行为。
相应于上述本发明实施例提供的方法,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述本发明实施例提供的任一基于静态检测的软件源代码隐私检测方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一多智能反射面辅助的联邦学习系统资源分配方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一基于静态检测的软件源代码隐私检测方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,但这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于静态检测的软件源代码隐私检测方法,其特征在于,包括以下步骤:
S1、解析源代码,提取特征:针对隐私在源代码中的不同存在形式,在源代码中提取如下三种相应的特征:固定特征或固定内容的隐私信息的特征、可以获取用户隐私信息的接口API和可以获取用户输入的接口API;
S2、根据步骤S1提取的三种特征,做不同的特征匹配处理:对于提取到的固定特征或固定内容的隐私信息,直接检测到源代码中硬编码的隐私信息;对于提取到的可以获取用户隐私信息的接口API,判断其存在获取隐私信息的行为;对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关;
S3、对用户输入类的隐私信息进行检测,通过提取用户输入的接口API找到输入函数作为入口,分析该部分代码与隐私信息的相关性,在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,若重合度高于某一阈值,判定其存在隐私处理的行为;
S4、对源代码进行分析,得到对应的抽象语法树,遍历AST,以步骤S3找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程;
S5、对步骤S4隐私信息的处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,若存在敏感操作,判断其对隐私的处理存在安全问题,提出并进行改正。
2.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S1中,固定特征或固定内容的隐私信息的特征包括:性别、身份证号、手机号、QQ号、电子邮箱、家庭地址、籍贯、职业以及账号密码。
3.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S1中,可以获取用户隐私信息的接口API包括:录音API、摄像头监控API、获取地理位置的API、获取内存信息的API、获取已安装应用列表的API、获取WiFi列表的API。
4.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S1中,可以获取用户输入的接口API包括:C/C++的getchar()、getch()、gets()和Java的scanner的nextLine()、nextInt()。
5.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S4中,软件的开发语言为C语言时使用Antlr作为抽象语法树。
6.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S4中,软件的开发语言为Java时使用Java parser作为抽象语法树。
7.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S4中,抽象语法树包括函数声明、函数调用、变量声明、变量赋值。
8.根据权利要求1所述的基于静态检测的软件源代码隐私检测方法,其特征在于,步骤S5中,敏感操作包括未加密的保存和网络传输。
9.一种基于静态检测的软件源代码隐私检测系统,其特征在于,包括以下模块:
特征提取模块,用于解析源代码,提取特征:针对隐私在源代码中的不同存在形式,在源代码中提取如下三种相应的特征:固定特征或固定内容的隐私信息的特征、可以获取用户隐私信息的接口API和可以获取用户输入的接口API;
特征匹配模块,根据特征提取模块提取的三种特征,做不同的特征匹配处理:对于提取到的固定特征或固定内容的隐私信息,直接检测到源代码中硬编码的隐私信息;对于提取到的可以获取用户隐私信息的接口API,判断其存在获取隐私信息的行为;对于提取到的获取用户输入的接口API,还需要作进一步的处理,判断其获取的内容是否与隐私信息相关;
相关度计算模块,用于对用户输入类的隐私信息进行检测,通过提取用户输入的接口API找到输入函数作为入口,分析该部分代码与隐私信息的相关性,在存在获取用户输入的文件中提取关键词,并计算其与隐私信息的重合度,若重合度高于某一阈值,判定其存在隐私处理的行为;
流提取模块,用于对源代码进行分析,得到对应的抽象语法树,遍历AST,以相关度计算模块找到的隐私信息点为起点,根据其调用模块的信息,解析其依赖的节点,跟踪每个隐私信息相关的API,并记录其处理流程;
安全检测模块,用于对流提取模块隐私信息的处理流进行检测,判断源代码对隐私处理的过程中是否存在敏感操作或不安全操作,若存在敏感操作,判断其对隐私的处理存在安全问题,提出并进行改正。
10.根据权利要求9所述的基于静态检测的软件源代码隐私检测系统,其特征在于,还包括存储模块,用于保存包括输入的源代码文件、文件夹所在路径、系统遍历路径获取所有文件的列表和每个被检测到的隐私信息、及其所在文件路径、其处理安全性评定信息。
CN202210233434.0A 2022-03-10 2022-03-10 一种基于静态检测的软件源代码隐私检测方法及系统 Pending CN114595482A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210233434.0A CN114595482A (zh) 2022-03-10 2022-03-10 一种基于静态检测的软件源代码隐私检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210233434.0A CN114595482A (zh) 2022-03-10 2022-03-10 一种基于静态检测的软件源代码隐私检测方法及系统

Publications (1)

Publication Number Publication Date
CN114595482A true CN114595482A (zh) 2022-06-07

Family

ID=81818181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210233434.0A Pending CN114595482A (zh) 2022-03-10 2022-03-10 一种基于静态检测的软件源代码隐私检测方法及系统

Country Status (1)

Country Link
CN (1) CN114595482A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070268A (zh) * 2023-01-04 2023-05-05 北京夏石科技有限责任公司 隐私数据识别监控方法、装置和设备

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
US20120311536A1 (en) * 2011-05-31 2012-12-06 Microsoft Corporation Statically derived symbolic references for dynamic languages
CN103577324A (zh) * 2013-10-30 2014-02-12 北京邮电大学 移动应用中隐私信息泄露的静态检测方法
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
US20170109541A1 (en) * 2015-10-20 2017-04-20 International Business Machines Corporation Identifying and tracking sensitive data
CN106598866A (zh) * 2016-12-22 2017-04-26 合肥国信车联网研究院有限公司 一种基于smali中间语言的静态检测系统及方法
US9729583B1 (en) * 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
CN107122660A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种Android应用软件用户隐私信息泄露检测方法
CN109918294A (zh) * 2019-01-29 2019-06-21 刘建鹏 一种混源软件自主可控性检测方法及系统
GB201917161D0 (en) * 2019-08-23 2020-01-08 Praetorian System and method for automatically detecting a security vulnerability in a source code using a machine learning model
CN113672919A (zh) * 2021-08-05 2021-11-19 支付宝(杭州)信息技术有限公司 基于小程序动静态分析的风险检测方法、装置以及设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
US20120311536A1 (en) * 2011-05-31 2012-12-06 Microsoft Corporation Statically derived symbolic references for dynamic languages
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统
CN103577324A (zh) * 2013-10-30 2014-02-12 北京邮电大学 移动应用中隐私信息泄露的静态检测方法
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
US20170109541A1 (en) * 2015-10-20 2017-04-20 International Business Machines Corporation Identifying and tracking sensitive data
US9729583B1 (en) * 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
CN106598866A (zh) * 2016-12-22 2017-04-26 合肥国信车联网研究院有限公司 一种基于smali中间语言的静态检测系统及方法
CN107122660A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种Android应用软件用户隐私信息泄露检测方法
CN109918294A (zh) * 2019-01-29 2019-06-21 刘建鹏 一种混源软件自主可控性检测方法及系统
GB201917161D0 (en) * 2019-08-23 2020-01-08 Praetorian System and method for automatically detecting a security vulnerability in a source code using a machine learning model
CN113672919A (zh) * 2021-08-05 2021-11-19 支付宝(杭州)信息技术有限公司 基于小程序动静态分析的风险检测方法、装置以及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王靖瑜;徐明昆;王浩宇;徐国爱: "Android应用隐私条例与敏感行为一致性检测", 计算机科学与探索, no. 001, 31 December 2019 (2019-12-31) *
邢月秀: "智能手机隐私泄露检测技术的研究与实现", 31 December 2016 (2016-12-31) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116070268A (zh) * 2023-01-04 2023-05-05 北京夏石科技有限责任公司 隐私数据识别监控方法、装置和设备
CN116070268B (zh) * 2023-01-04 2024-01-26 北京夏石科技有限责任公司 隐私数据识别监控方法、装置和设备

Similar Documents

Publication Publication Date Title
Yu et al. Can we trust the privacy policies of android apps?
CN113098870B (zh) 一种网络诈骗检测方法、装置、电子设备及存储介质
CN107659570A (zh) 基于机器学习与动静态分析的Webshell检测方法及系统
CN112131882A (zh) 一种多源异构网络安全知识图谱构建方法及装置
Pan et al. {FlowCog}: Context-aware semantics extraction and analysis of information flow leaks in android apps
US11580222B2 (en) Automated malware analysis that automatically clusters sandbox reports of similar malware samples
US9210189B2 (en) Method, system and client terminal for detection of phishing websites
Yu et al. Revisiting the description-to-behavior fidelity in android applications
Edu et al. SkillVet: automated traceability analysis of Amazon Alexa skills
CN105431859A (zh) 指示恶意软件的信号标记
CN111143654B (zh) 辅助识别爬虫的、爬虫识别方法、装置及电子设备
Kasim An ensemble classification-based approach to detect attack level of SQL injections
CN104956372A (zh) 使用运行时和静态代码分析来确定动态安全扫描的覆盖率
Xie et al. Scrutinizing privacy policy compliance of virtual personal assistant apps
US20200320202A1 (en) Privacy vulnerability scanning of software applications
Wang et al. Understanding malicious cross-library data harvesting on android
US11184313B1 (en) Message content cleansing
Van Nortwick et al. Setting the Bar Low: Are Websites Complying With the Minimum Requirements of the CCPA?
Hu et al. Champ: Characterizing undesired app behaviors from user comments based on market policies
Demissie et al. Anflo: Detecting anomalous sensitive information flows in android apps
CN114595482A (zh) 一种基于静态检测的软件源代码隐私检测方法及系统
CN113918949A (zh) 基于多模态融合的诈骗app的识别方法
Zhao et al. Demystifying privacy policy of third-party libraries in mobile apps
US9904662B2 (en) Real-time agreement analysis
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination