演讲嘉宾 | 凌 祥

回顾整理 | 廖 涛

排版校对 | 宋夕明

嘉宾介绍

OS安全分论坛

凌祥,中国科学院软件研究所助理研究员,主要研究领域为基础软件与系统安全,主持及骨干参与多项省部级科研项目,在IEEE S&P、USENIX Security、INFOCOM、ASE、Black Hat Asia、TIFS、软件学报等国内外重要会议和期刊上发表论文20余篇,担任开放原子基金会开源漏洞共享平台漏洞初筛工作组组长,以及《Cybersecurity》和《信息安全学报》学术期刊的青年编委。

正文内容

API是实现开源操作系统等大型软件系统功能模块解耦以及开发效率最大化的基础,而不规范的API使用会在一定条件下引发运行错误,产生异常的结果或行为,严重危害软件安全。如何实现API误用缺陷自动化检测?中国科学院软件研究所特别研究助理凌祥博士在第二届OpenHarmony技术大会上进行了精彩分享。

API,即应用程序接口,具体指操作系统或者标准软件库对外开放的编程接口函数。在现代软件开发过程中,软件开发人员在不需要了解API内部具体实现细节的情况下,广泛地通过调用各类API来复用现有软件框架或者标准函数,从而达到节省软件开发时间、提高软件开发效率的目的。然而,当前API误用已经成为对开源操作系统安全性造成严重威胁的关键因素。

由于API数量庞大、更新频繁、自身的复杂性、文档资料缺失等原因,软件开发人员经常会误用API,例如多余的API调用、遗漏的API调用、错误的API调用参数、缺少前置条件判断、忽略异常处理等。API的误用不仅会导致软件系统出现功能性错误或者性能问题,也极易引发安全漏洞等代码缺陷。以Linux内核代码为例,研究团队实际审计了2021年公开的92个CVE安全漏洞,发现其中有27个CVE安全漏洞都是由API误用导致的,约占30%。因此,如何检测出大型软件系统中存在的API误用缺陷,特别是实现开源操作系统中API误用缺陷的大规模自动化检测,对开源操作系统的安全至关重要。

基于在同一软件中,相同的API通常会遵循相似的使用模式;且API的使用模式通常由与该API相关的数据操作所构成的启发,作者本人及其所在团队提出了一种基于API路径模式挖掘的API误用缺陷自动化检测方法“APP-Miner”。该方法能够从源代码中自动挖掘API使用模式,无需安全专家手工定义API模版,且理论上可以适用于任何具备源代码的大型软件系统。

APP-Miner的整个系统架构主要包含API路径生成、API路径模式挖掘以及API误用缺陷检测三个模块,其中:

API路径是一种基于控制流图的特殊图结构数据,其中节点代表与该API具有数据关联的操作,边代表节点之间的执行顺序流关系。API路径生成主要利用Clang和LLVM编译工具,将源代码中每个函数都编译成相应的控制流图,然后利用数据流分析技术生成相应的API路径。

API路径模式挖掘利用频繁子图挖掘算法,从大规模的API路径中挖掘出频率高于预定义阈值的最大频繁子图,作为相应的API路径模式。针对现有方案中频繁子图挖掘算法可能生成非连通图问题,利用拓扑化和完全化技术,将API路径从一般有向图转化为完全拓扑图,从而保证频繁子图挖掘算法生成的是连通图;针对频繁子图挖掘方法复杂度过高而难以适用于大型软件系统问题,可建立面向API路径的索引矩阵,并采用面向索引矩阵的Apriori关联规则挖掘算法以有效地降低挖掘出最终API路径模式的复杂度。

API误用检测利用构建的索引矩阵G,将一组API路径图与最大频繁子图之间的子图匹配任务 转换成索引矩阵G和API路径模式P之间的二进制判别操作”&”,从而极大地提高大规模软件系统中API误用缺陷检测的效率。

针对提出的基于API路径模式挖掘的API误用缺陷自动化检测方法APP-Miner,作者本人及其所在团队基于Linux kernel 5.15-rc7、OpenSSL 3.0.0、FFmpeg 5.0以及Apache httpd 2.4.52等大型开源软件系统进行了实验验证。在实验中,APP-Miner均成功检测出了数量不等的潜在API误用安全风险,验证了方法的有效性。

目前,APP-Miner已经集成在中国科学院软件研究所建设的开源软件供应链重大基础设施“源图”中,希望能够为OpenHarmony社区安全治理贡献力量,共同推动开源软件社区安全发展。

声明:本文来自OpenHarmony TSC,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。