基于LLVM的C/C++隐式类型转换安全性检测 |
| |
引用本文: | 万明,刘嘉华,鄂龙慧,朱江.基于LLVM的C/C++隐式类型转换安全性检测[J].计算机应用与软件,2022(4):21-26+45. |
| |
作者姓名: | 万明 刘嘉华 鄂龙慧 朱江 |
| |
作者单位: | 南京南瑞信息通信科技有限公司 |
| |
基金项目: | 国家电网公司科技项目“开源软件安全监测关键技术研究与应用”(科计[2018]20号项目240号); |
| |
摘 要: | 带有系统底层特性的高级语言(C、C++等)通常采用的是弱类型系统,允许不同类型变量之间的混合运算。因此,在涉及到赋值等操作时,如果源变量和目的变量类型不一致,则需要进行类型转换,而转换过程稍有疏忽就会引入安全性问题。现有的检测技术大多在程序运行时进行类型转换问题的检测,产生较大额外开销的同时,也会影响程序的执行速度。基于LLVM编译器提出一种针对C/C++隐式类型转换的安全性检测方法。该方法作用于LLVM中间代码,筛选出含有变量声明和引用的语句;对于声明变量的语句,提取其类型信息并按相应的数据结构存储;对于引用变量的语句,匹配定义的类型转换的不安全操作集和转换模式,以检测其中的类型转换操作是否安全。实验结果表明,该方法能够在编译阶段有效地检测出存在安全隐患的类型转换操作。
|
关 键 词: | 类型转换 静态检测 安全性 LLVM |
|
|