软件学报杂志

发表咨询:400-808-1731

订阅咨询:400-808-1751

软件学报杂志 北大期刊 CSCD期刊 统计源期刊

Journal of Software

  • 11-2560/TP 国内刊号
  • 1000-9825 国际刊号
  • 2.86 影响因子
  • 1-3个月下单 审稿周期
软件学报是中国科学院软件研究所;中国计算机学会主办的一本学术期刊,主要刊载该领域内的原创性研究论文、综述和评论等。杂志于1990年创刊,目前已被上海图书馆馆藏、CSCD 中国科学引文数据库来源期刊(含扩展版)等知名数据库收录,是中国科学院主管的国家重点学术期刊之一。软件学报在学术界享有很高的声誉和影响力,该期刊发表的文章具有较高的学术水平和实践价值,为读者提供更多的实践案例和行业信息,得到了广大读者的广泛关注和引用。
栏目设置:理论计算机科学、系统软件与软件工程、模式识别与人工智能、数据库技术、计算机网络与信息安全、计算机体系结构

软件学报 2018年第05期杂志 文档列表

软件学报杂志软件安全漏洞检测专题
软件安全漏洞检测专题前言1177-1178

摘要:软件安全漏洞是软件中存在的可能被利用而造成损害的薄弱环节.随着互联网和移动互联网的快速发展,软件因为自身存在漏洞而遭受外界利用攻击,导致隐私泄漏、非法提权、勒索等严重不安全后果.尽早检测软件中存在的安全漏洞并及时实现修复、加固,是网络空间安全领域国内外学术界和产业界的共识与主要关注点.

缓冲区溢出漏洞分析技术研究进展1179-1198

摘要:首先介绍了缓冲区溢出漏洞危害的严重性和广泛性,然后,从如何利用缓冲区溢出漏洞的角度,依次介绍了缓冲区溢出漏洞的定义、操作系统内存组织方式以及缓冲区溢出攻击方式.将缓冲区溢出分析技术分为3类:自动检测、自动修复以及运行时防护,并对每一类技术进行了介绍、分析和讨论.最后,对相关工作进行了总结,并讨论了缓冲区溢出分析领域未来可能的3个研究方向:(1)对二进制代码进行分析;(2)结合机器学习算法进行分析;(3)综合利用多种技术进行分析.

一种利用补丁的未知漏洞发现方法1199-1212

摘要:近年来,利用含有已知漏洞的函数作为准则,通过查找相似代码实现来检测未知漏洞的方法已被证明是有效的.但是,一个含有漏洞的函数通常也包含一些与已知漏洞无关的语句,严重影响相似度计算的结果,从而引发误报和漏报.提出了一种利用补丁来提高这种相似性检测准确性的漏洞发现方法.结合漏洞的补丁信息,引入程序切片技术去除原来含有漏洞的函数中与漏洞无关的语句,利用获得的切片生成去噪的漏洞特征来进行潜在未知漏洞检测.该方法已经在一些真实的代码集中实施,并且实验结果证明该方法确实能够有效减弱漏洞无关语句的干扰,达到提高检测准确性的目的.该方法还成功检测到了3个未知漏洞且已经得到确认.

面向漏洞生命周期的安全风险度量方法1213-1229

摘要:为了反映信息系统安全漏洞的风险随时间动态变化的规律,构建了基于吸收Markov链的漏洞生命周期模型,计算先验历史漏洞信息作为模型输入,构造漏洞生命周期的状态转移概率矩阵,在时间维度上,利用矩阵对状态演化过程进行推导.借鉴通用漏洞评分标准分析漏洞威胁影响,给出了安全漏洞的时间维度风险量化方法,并对漏洞生命周期各状态发生概率的演化规律进行了总结和分析.最后,以典型APT攻击场景中“Wanna Cry”勒索病毒的漏洞利用过程为例,验证了模型及方法的合理性和有效性.

数值稳定性相关漏洞隐患的自动化检测方法1230-1243

摘要:安全漏洞检测,是保障软件安全性的重要手段.随着互联网的发展,黑客的攻击手段日趋多样化,且攻击技术不断翻新,使软件安全受到了新的威胁.描述了当前软件中实际存在的一种新类型的安全漏洞隐患,称为数值稳定性相关的安全漏洞隐患.由于黑客可以利用该类漏洞绕过现有的防护措施,且已有的数值稳定性分析方法很难检测到该类漏洞的存在,因而这一新类型的漏洞隐患十分危险.面对这一挑战,首先从数值稳定性引起软件行为改变的角度定义了数值稳定性相关的安全漏洞隐患,并给出了对应的自动化检测方法.该方法基于动静态相结合的程序分析与符号执行技术,通过数值变量符号式提取、静态攻击流程分析以及高精度动态攻击验证这3个步骤来检测和分析软件中可能存在的数值稳定性相关安全漏洞.在业界多个著名开源软件上进行了实例研究,实验结果表明:该方法能够有效检测到实际软件中真实存在的数值稳定性相关漏洞隐患.

大规模源代码增量式资源泄漏检测方法1244-1257

摘要:资源泄漏是影响软件质量和可靠性的一种重要软件缺陷,存在资源泄漏的程序长时间运行会由于资源耗尽而发生异常甚至崩溃.静态代码分析是进行资源泄漏检测的一种有效的技术手段,能够基于源代码或者二进制代码有效地发现程序中潜在的资源泄漏问题.然而,精确的资源泄漏检测算法的复杂性会随着程序规模的增加呈指数级增长,无法满足生产中即时对缺陷进行分析检测的实际应用需求.面向大规模源代码提出了一种增量式的静态资源泄漏检测方法,该方法支持过程间流敏感的资源泄漏检测,在用户编辑代码的过程中,从变更的函数入手,通过资源闭包、指向分析过滤等多种技术手段缩小资源泄漏检测范围,进而实现了大规模代码的即时缺陷分析与报告.实验结果表明:该方法在保证准确率的前提下,90%的增量检测实验可以在10s内完成,能够满足在用户编辑程序过程中对缺陷进行即时检测和报告的实际应用需求.

可编程模糊测试技术1258-1274

摘要:模糊测试是一种有效的漏洞挖掘技术.为了改善模糊测试因盲目变异而导致的效率低下的问题,需要围绕输入特征、变异策略、种子样本筛选、异常样本发现与分析等方面不断定制模糊测试器,从而花费了大量的定制成本.针对通用型模糊测试器(即支持多类输入格式及目标软件的模糊测试器)的低成本定制和高可扩展性需求,提出了一种可编程模糊测试框架,基于该框架,漏洞挖掘人员仅需编写模糊测试制导程序即可完成定制化模糊测试,在不降低模糊测试效果的基础上,可大幅提高模糊测试器开发效率.该框架包含一组涉及变异、监控、反馈等环节的模糊测试原语,作为制导程序的基本语句;还包含一套编程规范(FDS)及FDS解析器,支持制导程序的编写、解析和模糊测试器的生成.基于实现的可编程模糊测试框架原型Puzzer,在26个模糊测试原语的支持下,漏洞挖掘人员平均编写54行代码即可实现当前主流的5款万级代码模糊测试器的核心功能,并可覆盖总计87.8%的基本操作.基于Puzzer实现的AFL等价模糊测试器,仅用51行代码即可达到与AFL相当的模糊测试效果,具有良好的有效性.

基于模式生成的浏览器模糊测试技术1275-1287

摘要:模糊测试被广泛应用于浏览器的漏洞挖掘,其效果好坏的决定因素之一是测试者编写的测试模式.针对特定测试模式实现成本高、生存时间短等问题,提出了一种基于模式生成的浏览器模糊测试器自动构造方法,通过解析已知漏洞触发样本,自动提取测试模式,对模式中每个模块应用传统的变异策略,完成畸形样本的自动生成.实验结果表明:针对5款浏览器的1 089个已知漏洞触发样本,平均仅用时11.168s即可完成1 089个不同模糊测试器的自动构建,远低于人为编写的时间消耗;随机选取其中10个模糊测试器分别对IE 10、IE 11、Firefox 54.0的全补丁版本进行测试,共产生57个不同的崩溃样本,发现1个高危未知漏洞,证明该方法具有较好的未知漏洞发现能力.

一种面向模糊测试的GUI程序空转状态实时检测方法1288-1302

摘要:针对当前Windows下GUI软件模糊测试过程中,由于进入空转状态时刻判断不准确导致的测试效率降低的问题,利用自然语言处理的方法在函数执行迹的基础上来解决空转状态识别问题.首先分析了传统程序分析方法在空转状态判断上遇到的困难,提出了基于Bi-Gram模型以及统计分析的空转状态识别方法.通过Bi-Gram算法,将程序函数执行迹转换为概率特征序列;利用空转状态在特征序列中的方差特征,将空转状态特征序列从程序特征序列中分离,在此基础上,进一步提取空转状态特征并实现空转状态实时检测算法.通过对典型源码与二进制软件程序的实验测试表明,该方法在效率和准确性上优于传统方法,能够支撑对GUI程序模糊测试的需求.

基于自适应模糊测试的IaaS层漏洞挖掘方法1303-1317

摘要:云计算在为人们日常生活提供极大便利的同时,也带来了较大的安全威胁.近年来,云平台Iaa S层虚拟化机制的漏洞层出不穷,如何有效地挖掘虚拟化实现过程中的拒绝服务及逃逸漏洞,是当前的研究难点.分析已知虚拟化平台的相关漏洞,抽取并推演目标数据集合,设计并实现了一种随机化的模糊测试方法,进一步基于灰度马尔可夫模型设计了一种自动化预测方法,以实时地监督并调整模糊测试的方向,实现面向虚拟化平台的自适应模糊测试目的.最终设计并实现了原型系统Virtual Fuzz,实验数据表明:这些方法可以有效地检测虚拟化平台中的拒绝服务及逃逸漏洞,共得到24个漏洞测试用例,其中,验证了18个已知漏洞,挖掘得到了6个未知漏洞,且已有3个漏洞获得CVE授权.同时,通过与其他模糊测试工具的对比,突出了原型系统的性能优化效果.

基于分布式信息流控制的无障碍辅助性服务安全加固1318-1332

摘要:随着安卓系统的广泛使用,系统提供的功能也越来越多,其中一个重要特性是1.6版本中引入并在4.0及以上版本中优化的无障碍辅助性服务.通过无障碍辅助功能,应用不仅可以获得输入框输入文本等窗口元素信息,还可以与应用窗口自动地进行双向交互(如获得按钮信息点击按钮).然而,这些特性一旦被滥用,将会给用户带来巨大的安全威胁.对安卓系统中的无障碍辅助性服务进行了深入研究,分析了其可能被滥用的途径,并找出安全缺陷及其产生原因.然后提出了基于分布式信息流的控制机制标记,并跟踪无障碍辅助性服务和无障碍事件以进行安全加固.实现了一个名为Tassel的安全系统。以防止无障碍辅助性服务滥用.经过测试,该系统可以在不影响系统其他功能正常使用的前提下,保证服务的使用安全,且系统整体的性能影响很小.

基于IPT硬件的内核模块ROP透明保护机制1333-1347

摘要:Return-Oriented Programming(ROP)是一种流行的利用缓冲区溢出漏洞进行软件攻击的方法.它通过覆写程序栈上的返回地址,使程序在之后执行返回指令时跳转到攻击者指定位置的代码,因而违反了程序原本期望的控制流.控制流完整性(control-flow integrity,简称CFI)检查是目前最流行的ROP防御机制,它将每条控制流跳转指令的合法目标限制在一个合法目标地址集合内,从而阻止攻击者恶意改变程序的控制流.现有的CFI机制大多用于保护用户态程序,而当前已有诸多针对内核态的攻击被曝出,其中,Return-Oriented rootkits(ROR)[1]就是在有漏洞的内核模块中进行ROP攻击,达到执行内核任意代码的目的.相对于传统的基于用户空间的ROP攻击,ROR攻击更加危险.根据Linux CVE的数据统计,在2014年~2016年间,操作系统内核内部的漏洞有76%出现在内核模块中,其中,基本上所有被公布出来的攻击都发生在内核模块.由此可见,内核模块作为针对内核攻击的高发区,非常危险.另一方面,当前鲜有针对操作系统内核的CFI保护方案,而已有的相关系统都依赖于对内核的重新编译,这在很大程度上影响了它们的应用场景.针对这些问题,首次提出利用Intel Processor Trace(IPT)硬件机制并结合虚拟化技术,对内核模块进行透明且有效的保护,从而防御针对它的ROP攻击.实验结果表明,该系统具有极强的保护精确性、兼容性和高效性.

区块链的安全检测模型1348-1359

摘要:区块链是去中心化交易平台比特币的底层技术.该系统由分布式数据存储、点对点传输、共识机制、加密算法等计算机技术组成,其安全性受到广泛关注.目前的研究大多使用数学证明的方法分析每个攻击的作用,因此提出了一种根据区块链的结构来评估和检测安全性的方法.在真实环境下,当一个区块连接超过6个区块后,该区块的内容基本无法改变,被认为是稳定状态,分支产生的概率逐渐降低,因此,整个系统的状态是无限循环的.该方法通过分析每个结构到达稳定状态的概率来评估系统的安全性,并通过实验分析了攻击力度、攻击状态和实验循环次数之间的关系,验证了该方法的可行性和有效性.

基于运行时验证的无人飞行系统安全威胁检测方法1360-1378

摘要:无人飞行系统(unmanned aerial system,简称UAS)的软、硬件存在缺陷以及遇到外部恶意攻击,会给UAS的安全性带来极大的威胁.由于UAS的运行环境复杂多变,很多因素在开发过程中难以准确预测,因此,研究有效的运行时安全保证机制具有重要意义.提出了一种基于运行时验证的UAS安全威胁检测方法.首先,对UAS可能遇到的多种安全威胁进行分析,并采用离散时间时序逻辑进行描述,提出相应的UAS—DL语言描述安全监控规约;然后,基于交错自动机提出了自动生成安全威胁监控器的算法,并利用参数化方法实现对多UAS的安全监控.为了提高检测的准确性,进一步研究了将运行时验证和贝叶斯网络推断相结合的方法.采用实际的UAS开发仿真平台Ardupilot进行了实验,并设计了将监控器独立部署在FPGA硬件上的方法,以避免对UAS计算资源的过多占用.实验结果表明.上述方法能够有效地检测UAS的安全威胁.

面向Android生态系统中的第三方SDK安全性分析1379-1391

摘要:目前,许多Android系统开发人员为了缩短开发时间,选择在其应用程序中内置第三方SDK的方式.第三方SDK是一种由广告平台、数据提供商、社交网络和地图服务提供商等第三方服务公司开发的工具包,它已经成为Android生态系统的重要组成部分.但是,一个SDK有安全漏洞,会导致所有包含该SDK的应用程序易受攻击,这严重影响了Android生态系统的安全性.因此,在市场上选取了129个流行的第三方SDK,并对其安全性进行了全面分析.为了提高分析的准确性,将第三方SDK的demo应用作为分析对象,并使用了在分析Android应用中有效的分析方法(例如静态污点追踪、动态污点追踪、动态二进制插桩等)和分析工具(例如flowdroid、droidbox等).结果显示:在选取的这些SDK中,超过60%含有各种漏洞(例如HTTP的误用、SSL/TLS的不正确配置、敏感权限滥用、身份识别、本地服务、通过日志造成信息泄露、开发人员的失误),这对相关应用程序的使用者构成了威胁.

基于宿主权限的移动广告漏洞攻击技术1392-1409

摘要:移动广告作为市场营销的一种重要手段,越来越受到应用开发者的青睐,其市场规模也日趋增大.但是,为了追求广告的精准投放和其他非法利益,移动广告给用户的隐私与财产安全也带来了很大的威胁.目前,众多学者关注广告平台、广告主和移动应用的安全风险,还未出现在广告网络中直接发起攻击的案例.提出了一种基于宿主权限的移动广告漏洞攻击方法,能够在移动应用获取广告内容时,在流量中植入攻击代码.通过对广告流量的拦截。提取出宿主应用的标识和客户端相关信息问接得到宿主应用的权限列表和当前设备的WebView漏洞.另外,提出了一种攻击者的能力描述语言,能够自动生成定制化的攻击载荷.实验结果表明,所提出的攻击方法能够影响到大量含有移动广告的应用.几个攻击实例的分析也证明了自动生成攻击载荷的可行性.最后,提出了几种防护方法和安全增强措施,包括应用标识混淆、完整性校验和中间人攻击防护技术等.

基于动态行为分析的网页木马检测方法1410-1421

摘要:网页木马是一种在网页中插入攻击脚本,利用浏览器及其插件中的漏洞,使受害者的系统静默地下载并安装恶意程序的攻击形式.结合动态程序分析和机器学习方法,提出了基于动态行为分析的网页木马检测方法.首先,针对网页木马攻击中的着陆页上的攻击脚本获取行为,监控动态执行函数执行,包括动态生成函数执行、脚本插入、页面插入和URL跳转,并根据一套规则提取这些行为,此外,提取与其相关的字符串操作记录作为特征;其次,针对利用堆恶意操作注入shellcode的行为,提出堆危险指标作为特征;最后,从Alexa和Virus Share收集了500个网页样本作为数据集,用机器学习方法训练分类模型.实验结果表明,与现有方法相比,该方法具有准确率高(96.94%)、可有效地对抗代码混淆的干扰(较低的误报率6.1%和漏报率1.3%)等优点.

对软件工程中经验研究的调查1422-1450

摘要:为了描述、理解、评估、预测、控制、管理或者改善与软件相关的内容,研究者常常使用经验研究的方法.经验研究在软件工程领域已经得到广泛的应用并备受关注.为了了解近年来软件工程中经验研究的特点,并希望经验研究方法为更多研究者所了解,通过系统映射的方法,对软件工程中经验研究的典型期刊《Empirical Software Engineering》(ESE)近5年的论文做了调研,搜集了2013年1月~2017年6月发表在该期刊的250篇论文.通过定性和定量的分析,给出了软件工程领域采用经验研究的主要目的、常用的经验研究方法以及这些方法在软件工程各个领域中的使用情况和呈现的一些新特征.之后,分析了经验研究的主要数据来源、采集手段、常用的数理统计方法以及开源项目在经验研究中的使用情况等,给出了研究者对有效性和可重现性问题的关心程度.最后进行了有效性分析,并进一步探讨了经验研究的发展方向和大数据时代下经验研究面临的机遇和一些开放性问题.