软件已经全面融入经济社会发展的各个领域,作为数字社会的基础,软件上升为国家战略,产业走上中国软件高质量发展的新征程。习近平总书记在全国网络安全和信息化工作会议上指出,“核心技术是国之重器。要下定决心、保持恒心、找准重心,加速推动信息领域核心技术突破”。西安交通大学软件学院一直致力于培养信息化产业发展需求的特色化软件人才,潜心研究关键软件技术,最近取得了新成果。
西安交通大学电信学部软件学院的师生于2020年在软件工程的国际顶级会议(CCF A类) ISSTA (ACM SIGSOFT International Symposium on Software Testing and Analysis)和ASE (IEEE/ACM International Conference on Automated Software Engineering)上发表学术论文。这两项论文工作受到软件学院、智能网络与网络安全教育部重点实验、陕西省天地网技术重点实验室教师的共同指导,第一作者分别是来自软件学院的硕士生徐一飞和青年教师晋武侠。
已发布补丁的软件漏洞称为one-day漏洞,它是最严重、常见的安全威胁之一,可被利用来攻击未能采用最新安全补丁程序的用户。二进制代码匹配是检测已发布软件中one-day漏洞的有效方法,它在给定的二进制代码中比较已知漏洞的函数与目标函数之间的相似性,若目标函数与已知易受攻击函数类似,则将其确定为易受攻击。但是,高误报率是当前二进制函数匹配方案面临的挑战。发表在ISSTA会议的这项论文工作针提出一种基于补丁的漏洞匹配方法(BinXray),能准确且高效地识别软件目标代码中的one-day漏洞。实验中 BinXray达到93.31%的准确度,大幅降低误报率,且每个函数的分析时间成本仅为296.17ms,超过当前最新的技术。这项研究工作与新加坡南洋理工大学合作完成。
图1 BinXray方法概览
论文链接:Yifei Xu, Zhengzi Xu, Bihuan Chen, Fu Song, Yang Liu, and Ting Liu. "Patch based vulnerability matching for binary programs." In Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis(ISSTA), pp. 376-387. 2020.
软件代码依赖是软件架构恢复、质量评估、设计反模式检测、代码变更影响分析、缺陷预测等软件分析技术的基础。多态性、反射等编程语言特性会导致一些代码依赖在程序源码中不可见的问题。由于Python、JavaScript、Ruby等动态编程语言采用动态类型推断,从而导致上述问题更加突出。称这种与动态类型推断相关的源码中难以识别的代码依赖为possible dependency。发表在ASE会议的这项论文工作发现,当前的代码依赖抽取和软件架构分析等基础工具缺失考虑possible dependency;实证研究得出,与常见的explicit dependency(源码中可见的代码依赖)相比,possible dependency在动态语言软件系统中的架构级影响力不容忽视,且对软件的结构和可维护性造成的影响更加突出,建议软件分析等工具和研究亟须考虑并重视与动态类型推断相关的代码依赖。这项研究工作与美国德雷塞尔大学、夏威夷大学合作完成。
图2 Possible dependency解析概览
论文链接:Wuxia Jin, Yuanfang cai, Rick Kazman, Gang Zhang, Qinghua Zheng , Ting Liu. “Exploring the architectural impact of possible dependencies in Python software”. In Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering(ASE), 2020.